找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14128|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介
3 z3 C9 J% E7 _3 ^7 R+ N2 ]* N2 S
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。) W  ~1 X; g% ]; N

  i3 F$ y* P+ e- `# V9 J7 p二、GO编译环境的安装
% K. q- v. B. M6 ]# ^) g1 r3 G+ |; A
FRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
& F0 T# n5 ~8 d! o/ {- y. o7 m# R% c- H
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。4 T% \% \0 _7 ?8 q6 r

+ r8 a3 m# f# \! R# F7 ]" n4 z/ O2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。5 N- m* R8 j/ _: e3 P( v: }  ]- l- Y

# @, N0 n& t: ?% \- ~2 ^; T' i2 G3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
8 A5 y4 N: _, O: G0 m8 T- @+ V$ Z
8 v, p7 e% ~4 H# e& Nsudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
3 u+ p9 S1 f+ \* p4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。' M" G+ H+ R# V" s, g
# [4 \6 C4 P4 T3 W: }
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):. f5 q; Y! h" Y+ O* L

* F8 [0 v3 [# K$ R; yexport PATH=$PATH:/home/dave/GOFiles/go/bin
- `0 q$ Q; }$ S7 p' b
7 n6 Z3 p) i9 x3 S1 m1 r2 k, ]' fexport GOROOT=/home/dave/GOFiles/go/, d- x$ t9 x# U4 t

# e6 T9 n7 a& u' Q  N  \4 e2 l' Kexport GOPATH=/home/dave/wksp/go
( c# p% t# x: ]0 O6、重启系统,进入终端,运行如下命令:
5 Z9 h" L/ w0 z% \
- h7 p2 T1 M% n0 r8 g- Qgo version
" p% R7 P$ q8 \( k% a5 r5 x/ B如果显示如下,说明GO1.8安装完成。
5 }: l4 c+ u7 t
- {. T: O4 d; J% @3 X; J1 F* Lgo version go1.8 linux/386' |" M4 S% m" o# @8 F$ M( f
三、编译FRP
+ n9 L  I) n/ r" K" q& _* t$ z/ U2 [6 y' a0 h, F
1、最好先升级一下源和软件,运行一下如下命令:, i/ h( ~( ]+ n6 |

" k: L# q! G' O% g# m- c9 @sudo apt update
* a$ U( F, O( S9 A  u& Y
2 e! w; e5 L3 Ksudo apt upgrade! {$ n% v. T: f, W
2、安装git和make。
+ x' l2 l0 U+ `' A5 j2 p7 X% D, c/ p# E* O2 E( F# A
sudo apt install git make
; X" B; b% g; W8 x+ \3、进入/home/dave/wksp/go/src目录8 {, Z& X7 }" a; T+ n7 L% N' K

8 G$ f2 O2 h) l( M. L4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
5 b% g9 q  S% C4 U0 F  }
4 Q+ I2 M2 R' h7 ^5 |6 l1 I% qgit clone https://github.com/fatedier/frp.git
) l- w5 F4 ~7 Q0 h1 N; j5 r6 o5、进入frp目录) P+ S! E, w% n; V/ n7 i
0 _0 _5 A/ {  g) L* r9 N: i
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
- e7 H( x  m- h, V( M& H+ m) }7 L/ z
export GOARCH=mipsle8 q) p$ ~# X0 _6 M5 G7 c7 w4 c
  L+ F( I, z/ q  h7 b
export GOOS=linux: B6 a1 k# s5 V( G$ ?! C& d1 t9 B
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
1 z# `7 J0 r6 [. G# p  ]: H9 J
7 J. Y' u' U2 b* B! Z3 {go get -v  github.com/docopt/docopt-go% P2 M( I: @7 f: U6 [% Q1 X
& b# B1 r/ I' p' p
go get -v  github.com/fatedier/frp/src/models/client
( T, |( v+ _3 {9 S4 n; i' U
$ ]7 @$ ?3 s3 P* ~go get -v  github.com/fatedier/frp/src/utils/log# D  T4 @* F( j/ {, q) \$ v

/ L% ?2 V% S# |go get -v  github.com/fatedier/frp/src/utils/version2 Z4 O" q( ?' K5 a, v/ K

& e& \. N0 G: k& Q- R* R0 {% Rgo get -v  github.com/mitchellh/gox
5 `7 {- h6 I7 ^( A
+ h- K' K+ p+ F1 |go get -v  github.com/rakyll/statik9 N9 g5 M* O- C
+ m  [3 k0 O4 y, o
make
. _/ s& i  b! N2 u- k9 d! Z编译好的FPR就在frp/bin目录内。; y% s2 Z2 W' j  B/ E1 b7 W' `* B
开源地址:https://github.com/fatedier/frp
7 y. ?1 r! r2 |) {; p, B7 w! ?7 j$ `, L& |& ~7 c# u

# T6 i4 W, M& c  g6 x5 P& t
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站论坛 ( 蜀ICP备06004864号-6 )

GMT+8, 2026-4-14 15:44 , Processed in 0.073773 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表