找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12532|回复: 0

ngrok类似软件FRP编译教程

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

: i: I7 N# m0 _6 O! c二、GO编译环境的安装
$ G' h# M- [5 c, ]0 j/ H( |# Y" W8 J7 r! }  u0 {5 g. |, T2 b
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的安装配置。
+ V" j# R- u, J: [
0 D( Y. g) o! h8 G1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。% t, N' g; I, X; k2 `

9 y. N5 F% p4 `5 S; d7 D2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。$ y6 \$ [& p- U+ P

+ S* F8 y+ o2 S# d3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例  U& t  i' a$ P. H6 A
: f! h' |9 u8 F& s7 i( s3 ]: P2 `
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz5 J6 g0 \/ E3 E1 M2 _' c: O: Y
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
: x# f0 c, _# n# z& W6 u/ D, t: D
( n, j2 r( E* X* m9 |5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):) R0 ]+ V' S0 q6 M; l7 C- X& M/ V0 S& V
! f1 b$ c1 H/ F% |. K% a
export PATH=$PATH:/home/dave/GOFiles/go/bin% r$ a/ p1 T0 T# _/ H7 W

1 B% N9 x8 O1 f0 D5 Oexport GOROOT=/home/dave/GOFiles/go/
" j& D3 g$ P* o/ ?: {
1 q! u/ ^/ H  }* N) [export GOPATH=/home/dave/wksp/go
; X$ Y# }. ~# E8 X* Z8 I3 ?) W6、重启系统,进入终端,运行如下命令:
2 C. B$ ]+ u  d# f1 f: L
/ p0 o0 ]' t, o7 ^- |6 J+ R  dgo version
/ j7 {: r; A6 ^" G' x如果显示如下,说明GO1.8安装完成。
! S. o: F: E% {, j1 }
% `# t' C; ]. S& i* igo version go1.8 linux/386% a* @0 v7 [, R& u6 j" e/ i
三、编译FRP
( S8 V9 s# c; {( H9 C
9 L( B( g# B7 O  K) s/ M1、最好先升级一下源和软件,运行一下如下命令:
' L5 V2 E. o3 D" ^, H0 G" V
; {* V7 R! }2 _* t% Hsudo apt update
! W# U: N! N* a2 d" G
1 x4 J* X; o. {9 qsudo apt upgrade5 i5 d/ T( ^% l% d: {( u
2、安装git和make。; J1 L' S. a6 u
; i$ ^* B9 ]" l2 c! H4 `5 \
sudo apt install git make: {5 ?0 Y" V) P" r5 Z
3、进入/home/dave/wksp/go/src目录/ j( W! @$ W# F4 s
* j2 V( J0 E. l: y8 r% |
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
+ {% R# T1 D% y- J) ]1 F7 ^- B" M7 r. m' X
git clone https://github.com/fatedier/frp.git' `. v) _- @8 l- g+ M
5、进入frp目录( x/ c$ A# e7 ]  I; V3 q- f
+ `. g# R4 h. I, P$ p5 f9 C: D
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
0 }/ ~0 Y7 r; U2 N! J0 H( ^
+ @3 D* a: r* H# }) W" p- u4 Zexport GOARCH=mipsle
# j( V0 p$ `) i3 e0 m2 G' S$ r8 X, q. H0 G- I4 g: j# M& T/ i0 _
export GOOS=linux1 k3 z1 c: d' l, C0 I# i
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。. Y, a  \. R7 l( x4 b  d; t7 [
5 J% X2 Y2 D+ J) l% x* x; r
go get -v  github.com/docopt/docopt-go' r+ j  I" T, A

$ R' C8 J* h* J& g; J! bgo get -v  github.com/fatedier/frp/src/models/client$ }" b2 r: H+ j, o

6 y! E7 n+ W" x( |0 ego get -v  github.com/fatedier/frp/src/utils/log
* H" [+ f5 c1 U9 M) ]( U( Z
& S6 `' a. y0 S$ ^; v5 j1 Ugo get -v  github.com/fatedier/frp/src/utils/version# s  @$ j5 ~2 U0 T' c9 p+ i8 c6 g

9 @# o$ X) n( R4 ggo get -v  github.com/mitchellh/gox* ~) a. h. M5 @5 O" T7 N
  |$ s. G3 o. U- T
go get -v  github.com/rakyll/statik# g& P8 r- a/ c$ R; r' i
; `3 d+ Y# {0 n( T* d4 C
make3 p; c8 m; M" l# J
编译好的FPR就在frp/bin目录内。7 p) H; S* n3 T; ?( X
开源地址:https://github.com/fatedier/frp
3 e* x3 x/ c5 ?3 U" A, k* F- z3 r6 i9 s9 F  a* y- @! w5 U, z

# ?1 A2 i% G: A' x% d6 o
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-5 10:31 , Processed in 0.080420 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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