找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14706|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介8 J% {* K  Q( z' `. b

: L  N* p( P8 m; U众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。" S9 l; `( t) x

3 F/ @) s2 \0 V7 n1 {% G二、GO编译环境的安装( N, l" W6 {# T2 H% l% f

. J: z' f' |: R, W3 bFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。! g1 t7 g4 O9 i
9 f$ C' E( O1 E" z' n2 Z
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。
; y* P; V1 G# l" v4 _. h: x& _9 C+ O0 F, q! ?5 y1 b
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
( ]1 n+ u: O7 H/ N) r' ?; j5 h5 T: ]7 D2 a
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例- u; H! K  p% U% q% @$ Y0 b: J

- P/ ~/ N7 B* H4 i7 \! Psudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
7 w, C% c8 z- @4 F4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。, Y8 N& Q% Z- z) E; E. Z- j

1 o( O) S9 {( P5 g) p# `. `/ ]5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
& T$ t, \* P4 T5 a( x6 |" w5 n6 J
, s! d# U% r/ n/ n0 F& Bexport PATH=$PATH:/home/dave/GOFiles/go/bin, X% T1 j4 v( R5 i, A7 ?7 s

( U  o8 f) V6 t% |  Bexport GOROOT=/home/dave/GOFiles/go/
' d+ q( @+ c6 ^4 ~: v9 v
" m2 z" w1 _1 @# s! o6 B) s$ H$ N: sexport GOPATH=/home/dave/wksp/go7 M5 t" b- y8 O- W& p8 j
6、重启系统,进入终端,运行如下命令:
: _+ V3 i0 L* d1 K. I3 t- g! z( D8 z# N
go version/ i/ G, V1 M4 v4 E$ Z, `* S3 D) \: l
如果显示如下,说明GO1.8安装完成。6 a1 \2 k7 P  [% y
0 p" o( q9 ?9 y/ {, `% [
go version go1.8 linux/386
8 ]9 L: X4 w0 E/ d: r三、编译FRP. e$ Q0 B2 A. K, @) E

1 e6 ]! @' O' C0 o# O& s7 D# Z1、最好先升级一下源和软件,运行一下如下命令:
9 l& p2 e5 |7 E, i2 U/ R) B6 f3 `8 D# ]6 X
sudo apt update
7 r( S9 a5 v, E/ T) k7 x
* z- w2 w" q7 ~# p5 Gsudo apt upgrade# ?6 H. L! Q# m5 T7 w; `
2、安装git和make。
( s: a  ~- i0 I3 U" f9 G' D
$ l0 j$ v5 `5 {# a' p0 V# R: x# v8 Gsudo apt install git make
/ r) \) h$ `# Q1 `! G& g3 _3、进入/home/dave/wksp/go/src目录* ]0 z' f. [, \$ z$ i0 j

: |& }1 D* X# T2 X7 N4、运行如下代码下载FRP源码(建议科学上网,不然很慢)* h0 S; W3 \' q6 n; l% y6 S5 c+ r
0 _7 f8 g% a9 `0 p4 ~
git clone https://github.com/fatedier/frp.git
( P2 M- S: s  V+ ^6 d. k7 _1 }7 z5、进入frp目录
" v" S3 I6 Y4 w4 x; A* z4 E5 L: Y6 \0 @$ ]/ f& {8 ^
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
; X$ h% y  O8 [6 Z& a" w- h$ m7 W  ]6 n
export GOARCH=mipsle
* k' z1 u7 K8 G* [. H; f: p3 F, a# ]: L9 n
export GOOS=linux
- b  U6 Y, y, k% D8 ^7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
1 L# G4 J' U- q0 J7 @! m. ?3 x. T2 P* R
go get -v  github.com/docopt/docopt-go4 @( z' g9 _1 t, ~( P
" B9 z# P3 K" i, O5 S8 A
go get -v  github.com/fatedier/frp/src/models/client! P& f/ Z3 R, Q7 d2 N( x1 x$ o4 a

: U6 u5 b/ l7 x4 Kgo get -v  github.com/fatedier/frp/src/utils/log; m+ `  g6 u. A' n; I8 f4 P

' G  Z7 D- }% N: ~8 \go get -v  github.com/fatedier/frp/src/utils/version
1 T/ v2 F  X# F3 C5 ?7 I. w4 L
7 V& V+ O1 d  U$ _go get -v  github.com/mitchellh/gox5 A8 I* }5 T& J' P0 i5 k4 a1 a* J
0 l' ~0 n$ X9 d
go get -v  github.com/rakyll/statik8 @* }2 y( E- K! E. D$ a
. a' x/ B- [4 G' w4 ]* ?
make- y& h9 P  ], c: @9 {3 ^% s) K
编译好的FPR就在frp/bin目录内。
5 F% P3 x5 ]5 g% g- \8 r开源地址:https://github.com/fatedier/frp$ O$ e4 A' H- q9 R7 c9 _

1 J; B. L2 Q, E9 s# p
! c( i+ E* N0 {3 h& i+ m! c
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-6-25 09:49 , Processed in 0.045599 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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