找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13649|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介( }$ p1 |" H5 D' ]

% P0 j' Y3 \. ]8 P$ L众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
7 {0 V5 }1 ~/ G) y+ k
9 t/ S$ u9 k$ l; z2 N2 R二、GO编译环境的安装
) j9 L" I% ~8 ^# G; b. B+ G7 M
) x7 ?  k* X% E: R( q' F7 W- O4 rFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。9 q8 Z5 C; N! v% O% s! i

! L1 _+ q, q% N3 ]- c/ S. F" l1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。6 M* J+ z, y) i! {
0 P. o8 }4 d3 c& w9 }  N) P0 z
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
' L' `2 t( o( V4 Z
2 ?* K& @  H( O; v+ A+ I3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例( y( Y& W- Z! |, O

" m# h4 s; p/ d* G6 j, o) rsudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz: ^& p) G1 E9 I' N# b9 j
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
& ]/ Z* ^4 x  s5 [5 V+ Y8 I7 I# R6 I8 u9 \8 [4 X
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
4 A5 D$ K* O2 F7 G( U4 _5 a4 T% I7 q% U/ U- a) d. ]7 o
export PATH=$PATH:/home/dave/GOFiles/go/bin
1 }5 Q) L4 o) X! R9 V$ D$ C. i5 p8 [& n1 t/ ^: q9 j
export GOROOT=/home/dave/GOFiles/go/
) K# l' p- i# ?: j3 D9 }+ h. n, u0 F. s4 W
export GOPATH=/home/dave/wksp/go" P7 J- T5 d# }+ t9 O. f2 u1 n
6、重启系统,进入终端,运行如下命令:  Q( Z/ q) p. z5 u- f7 E/ p5 h

  x: Y+ _3 }5 h8 U, U9 \9 ~/ v/ V, {go version9 K% l5 ?1 {/ [, Y
如果显示如下,说明GO1.8安装完成。: x2 u  s/ j4 X( l3 u6 b2 o
- U$ ]  |6 W8 y4 e
go version go1.8 linux/386
+ s9 ]! c; x4 w4 c3 x三、编译FRP2 \$ P3 \- M6 {1 L; j
  \3 ]" U, e; x4 v- v1 e
1、最好先升级一下源和软件,运行一下如下命令:
+ h& o6 ~( x0 O( D- c  D0 `; C7 e* D" F1 L0 x( B+ m: M" T
sudo apt update+ Z4 v" ^& ^: t& x

* S% W. Y+ s6 W; w4 Isudo apt upgrade
' }' Z. t" l% U2 V( Q2、安装git和make。
8 o/ n. R$ s( [* S
8 X  G6 Y; Z4 u! h4 nsudo apt install git make9 A4 q7 p+ ~8 n- I
3、进入/home/dave/wksp/go/src目录
. N% g+ p- Z$ v* D. s8 H  q& a0 Q
1 _+ N: _* W" ]$ A, \) _4、运行如下代码下载FRP源码(建议科学上网,不然很慢), t# [2 h5 O( E& ^/ u

; J& }! {( l0 o! m$ |4 _git clone https://github.com/fatedier/frp.git# ?( a4 K% j. w9 u, @5 p3 ^
5、进入frp目录' P6 D. J5 t/ s) A) n7 l6 F) L9 s

: N" {$ V1 p  s6 U- W: s! U( z5 X6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。) j$ n. H" i: x, E

7 v/ S: g  C: x4 q. \1 dexport GOARCH=mipsle
) R* b  x6 u, W& z
, {/ O) D: X# Q, }& Q3 ~3 D, ]export GOOS=linux
7 h  W" c" f; p* _8 g0 ^) N7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
- a9 H$ ?' T& \9 G* A& k: Y& Y5 c7 o+ q- X' G) O
go get -v  github.com/docopt/docopt-go4 j, F: z- M( q% A* [6 I. `
  a, [. z/ a. D
go get -v  github.com/fatedier/frp/src/models/client! t5 {' M5 z- I% i' {# Y
- ~9 w+ h9 M- g& F- ?7 F. ]
go get -v  github.com/fatedier/frp/src/utils/log& _" `9 G4 ]: `5 _

# h1 q( m! @& ugo get -v  github.com/fatedier/frp/src/utils/version
" s8 R4 R. Y$ w* H: ?3 R. ?
" w! q5 t$ e! d7 w9 [: j. J/ xgo get -v  github.com/mitchellh/gox% V6 r* P9 K5 G6 ~/ d5 k

: R4 o, K+ X1 G8 c! Hgo get -v  github.com/rakyll/statik
8 J* a. S, y$ G7 R( F$ [
) T3 c1 l( x$ \make
% |' i2 ?& P- C( v9 Y* n% ^编译好的FPR就在frp/bin目录内。
4 A/ ?; |5 c. L. h开源地址:https://github.com/fatedier/frp
& I. ^3 h. l$ F2 m  P: f, w; ]8 P2 G  ]- F# R

$ z, o6 b/ [1 r! P2 I) i
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-2-7 02:22 , Processed in 0.049392 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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