找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15660|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介
, X+ w% p- k! s; z6 }% L* \
9 a  G8 x. v) F: X+ Q" V+ o众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。# N$ [2 r4 T. [5 J; ?" P  ^
3 |+ N. d. O5 k& n
二、GO编译环境的安装
% _  d( {1 w: t( J% `& `( h
7 ~% h% E) g5 w. J- a; HFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。0 P+ W  O& }3 ]/ t# K

7 u- N8 J2 O9 s; R1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。/ G- K! `( i5 |' I3 t) R1 _
. t8 K9 J, [& c
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
/ Z9 T8 x# P% [+ s$ q1 D+ @" s' n% h0 O  H6 j  N
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例4 Y3 P3 {/ _0 e9 Y& F/ k" C2 a; Q

1 j% F4 |* i# \( p6 msudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
; d  ^3 L# y0 E3 s% m/ q4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
# v! v+ C; ], }* I. A# r! q# g4 |7 x, G+ E
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):( s3 P& o) n2 O9 i1 Z2 w3 @9 e

) ^! z, j/ E4 q, Y, S0 p; Pexport PATH=$PATH:/home/dave/GOFiles/go/bin
* P( h1 e3 Q, f" x$ T1 _
- h- P7 d1 P( ]! @3 Lexport GOROOT=/home/dave/GOFiles/go/
8 c# T# u$ W% e: V# l/ o& n2 I' V# ^1 l; \" p, s
export GOPATH=/home/dave/wksp/go
* ^  B& q' v2 `2 j6、重启系统,进入终端,运行如下命令:. U9 V( c1 @9 |; f/ n8 O

3 e! S) h+ [& d1 qgo version+ G+ [& F7 M1 P1 y
如果显示如下,说明GO1.8安装完成。, J: `1 t3 ~9 s( ~/ e' K8 v4 Y
" X6 R6 ~8 ^" T% D5 b( {* D
go version go1.8 linux/3862 k! o, t3 @# _+ _
三、编译FRP0 k  Y' `6 [# M3 x- J7 ?% j% k

, E& |, |, @* M; `% Z3 E1、最好先升级一下源和软件,运行一下如下命令:
+ v  _6 d4 i* r, I- R- C# i" t: K! r
sudo apt update
2 ^7 M# d7 T9 P4 x5 H5 J
# [* E# @3 _) t( [sudo apt upgrade+ Z8 ]0 S' X; s) W2 {9 o5 r
2、安装git和make。" k6 ^- j4 @$ n

7 O, R. f4 e9 m7 {. H" x0 ssudo apt install git make
* H2 }/ f  x; t$ C3 B: ^9 F3、进入/home/dave/wksp/go/src目录
, C# Y. U: a4 L3 i/ M
, B2 s" }9 u8 ?. M$ P8 P$ C# F/ a7 c4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
4 F$ Q9 O1 Z6 H5 S8 ]3 U3 D: d
+ k' T5 P5 ?! m  L0 U- x7 _+ Mgit clone https://github.com/fatedier/frp.git$ d7 O0 B! U6 j: h
5、进入frp目录
# z. Q' |1 p2 |* p+ Z# c9 i
5 @* z. q2 ~0 g+ }! x/ n! c6 e6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
% Z2 f# Q5 g3 t/ W# V
) Q8 O/ `- L3 J3 O' Uexport GOARCH=mipsle3 y* }% p% X  o$ m, ]
" v* n2 p  L. h$ o: n
export GOOS=linux+ ^* |1 T- ?  T3 i
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。8 d5 M4 W* \5 c- K: C- B5 X1 E

- M% e  C* R& m) X) \- ~$ O/ x/ rgo get -v  github.com/docopt/docopt-go; a7 _) z& V& `# g! P( G) S

4 z' N# k- o+ ?7 [* d2 wgo get -v  github.com/fatedier/frp/src/models/client2 D7 v- }. f+ g& v# u
8 `; |; n% H. k3 }
go get -v  github.com/fatedier/frp/src/utils/log
3 b( u& j1 h% t, a1 l" K) Q3 J/ ?+ b* p* y3 D
go get -v  github.com/fatedier/frp/src/utils/version8 S, O5 D$ w2 ?! I

  ?9 F9 Q, F1 s( u! v4 Y3 Igo get -v  github.com/mitchellh/gox
3 z& @1 z4 _6 Y" n4 z. G+ ^2 ^% W6 ~% Q
go get -v  github.com/rakyll/statik4 ~$ r& _: x5 t/ r  l

; |1 K( K! E2 z% z& O9 b4 f! Ymake
" _; q$ c" [. m, q- {  `编译好的FPR就在frp/bin目录内。
' d% ?) f& w% _3 _$ F开源地址:https://github.com/fatedier/frp" Q9 k. Y% A( m# M4 O, V
- s- r  B' G4 t  `

* g4 J' S* Y' [! I! l4 D' Z% O& K
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-10-24 16:55 , Processed in 0.070417 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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