找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14707|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介3 ~0 o" p* K0 D1 P
: A  X$ n. v! C3 d1 @' t* ^
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
, }& ?& J& s. N! c- P4 w8 O- D9 J$ J! a; y7 C
二、GO编译环境的安装& H' D/ W( D$ O+ _6 _/ B- u7 ^
7 A& ^, ^8 V0 m6 [9 \
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的安装配置。' t6 Q' I+ H$ C8 z6 b
5 }: X% z: |( [4 _) H: x: W4 K! H
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。# ]. [& }# \/ e
/ _+ w. i. @9 `0 V% F
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
) U( i$ H8 v# a7 f4 C
: g6 b( M7 L* p0 m0 s# F3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
) i) d) d1 g1 f4 A- m2 G, L/ k) @2 N6 l+ `) V
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz/ w6 P) y: ^) a3 d* Z5 o5 h
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。' A" N) K" G; h, v0 i; l
7 C$ d# U7 ~- J) p! [4 |2 \
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):# C- c, Z2 ~6 @( X. B
/ z* T! _$ M* t
export PATH=$PATH:/home/dave/GOFiles/go/bin
1 p2 |. S3 ?" @
$ b8 @) `2 Z7 ~export GOROOT=/home/dave/GOFiles/go/0 ^( F! G8 H0 x
" b* I/ A( L1 t/ d
export GOPATH=/home/dave/wksp/go
& j- h  A; ^$ @- h2 t0 Z0 Z( F5 |8 @6、重启系统,进入终端,运行如下命令:
9 J: k* R, N; n" E  C2 H- q  d! D5 \; {7 u8 g4 ]8 v
go version5 Z2 U0 [. a9 p  Y  e
如果显示如下,说明GO1.8安装完成。
" S5 m" ?' k8 @& D( x
$ ~! q# l9 l5 Y7 o4 U! V9 @go version go1.8 linux/386
0 O2 g2 F1 Q9 J7 g: g三、编译FRP4 i5 C; K/ B# |0 N8 |
9 e2 W% B! i& ^7 w" D) ^
1、最好先升级一下源和软件,运行一下如下命令:
! [( A* K1 R5 o/ d
0 B5 r! B8 r8 Lsudo apt update9 R8 b, G% @& a
$ V9 X( x" p6 e, I* R
sudo apt upgrade
8 D6 {$ h# k7 a1 ^, x6 j2、安装git和make。; s5 ?( E0 L, L* K; O
9 T7 O, r5 Q( A
sudo apt install git make4 v# Z- \6 [0 A# @2 ]
3、进入/home/dave/wksp/go/src目录
7 L2 h+ V* J8 g9 C+ l! r# ^) N
) K! f: w: ^6 z0 \, B; E4、运行如下代码下载FRP源码(建议科学上网,不然很慢)9 X; Y& `1 j6 X, b

+ ]* I4 k$ k1 Jgit clone https://github.com/fatedier/frp.git+ u3 v: C9 r0 i! O; ]. ~" `
5、进入frp目录
# u2 p8 l6 o3 I+ W( i, m" T4 f+ N5 o5 Y
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。6 I) C' A( }! [3 w

& M  A; f" O1 l6 I7 P; u# c) [export GOARCH=mipsle+ t: [  w9 j( i

" p$ J9 x2 ~- s! |5 {5 uexport GOOS=linux; j( t. [* \) X
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。0 C  p2 Q# B" `2 ^) W. I/ U& P) o: m4 u

$ Y: Y# p5 T4 ^6 b. \6 w: kgo get -v  github.com/docopt/docopt-go* T. O. h! J3 Z' E! e2 y: d- k

6 x. Z9 f* W8 i8 ^go get -v  github.com/fatedier/frp/src/models/client
: a8 b$ v4 g+ @( o7 K* O1 f6 C4 h# C" e! g; p0 r3 ?* g2 V. A
go get -v  github.com/fatedier/frp/src/utils/log
8 P8 d* ~7 e: N  u$ k6 r2 b9 B7 E& U! l. ?
go get -v  github.com/fatedier/frp/src/utils/version- C) o: z5 x$ q3 h0 _

% g# l# |  P. v! _: {4 Dgo get -v  github.com/mitchellh/gox( c8 n3 U8 S! X" _- v

2 U, R3 x$ I, R2 @9 vgo get -v  github.com/rakyll/statik
; k+ m0 G* _5 v$ A) U2 r4 \" l/ v# A, _; g2 Q& q
make( }0 S( Y$ ?0 J% D
编译好的FPR就在frp/bin目录内。% W& p1 c, o" t. Z, Y) O+ v
开源地址:https://github.com/fatedier/frp: M: x+ Y9 O! x" F8 J
& P  T" o9 u5 v: a) q3 s$ e0 l
6 D. [4 Q2 Z4 t9 p! _3 d
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-6-25 09:50 , Processed in 0.039629 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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