找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13810|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介
1 d4 w( n' ?3 g/ I3 j! K1 e# u$ l+ }9 f! h; J! |
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
1 [. H5 W! Y; F3 \: ]/ {3 `. C/ }0 q0 ]: `; o$ C8 _( O+ U
二、GO编译环境的安装
- F) H$ [$ V- }! U# x  f
- T6 j4 ]5 o7 `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的安装配置。$ m* [, s& @* Y( @8 f/ f1 N0 z

5 e6 A# O6 Q! X. c" S1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。
) Z5 d9 D9 i$ D3 Z3 W6 `( s) C1 a* `
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。$ J) _' ~0 F1 i% F: I* I+ i

+ l/ E7 l2 h7 V3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例- z" f. K9 Z, [+ Y/ h

+ t! @" k  g3 c) ?8 ]+ y% Psudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
4 ]+ g3 z( u9 W5 e* @# q' O4 V4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。) l" e: W7 V, o" N' w3 D& v

! [' ]0 H5 |) r' g% W" J3 F5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):/ O, K. L8 o( ~" y* I% U1 J
$ V! X0 q) K8 h* E+ T7 I* Z
export PATH=$PATH:/home/dave/GOFiles/go/bin4 G: ^# m' U- K. H

7 I: H3 @- h! F( E5 oexport GOROOT=/home/dave/GOFiles/go/% G6 p$ Y7 I; `( @; _/ e

, O: W- Z2 ?( Y; I( i9 nexport GOPATH=/home/dave/wksp/go
! o5 q8 s7 [* E7 k5 W6、重启系统,进入终端,运行如下命令:. `9 d4 ~' O7 L) e: S& }
0 r7 T0 i/ u' P* `# d
go version8 X4 _+ A/ p# m' ^
如果显示如下,说明GO1.8安装完成。
& C0 }, a) x: Y1 K" D4 v' q; P: A$ h4 d+ Y8 u3 k) {. d" s1 E
go version go1.8 linux/386
# ?; U1 t! d) s三、编译FRP
) O7 r! w8 Q/ g! ~( R2 H, _, J. H4 ~8 n0 T3 ~: @8 c
1、最好先升级一下源和软件,运行一下如下命令:2 n/ C0 M4 a  \; L, p2 ^
6 d7 b$ b" ?; |. u$ X
sudo apt update: b' U9 s# k  x8 c  Z* k1 Z
. c7 z$ I: m* Y; V7 f# O% g2 q* i8 I
sudo apt upgrade+ _% f" t" B) p& r7 L
2、安装git和make。) t1 @3 k9 O# p7 \
9 o; t& R0 |! L
sudo apt install git make
  \( G" x5 j) X$ Z: Q% [' W" y. K& ]2 j' n3、进入/home/dave/wksp/go/src目录* r' t1 z; K, \% C7 N
( H# V; D" s6 O5 G3 K6 s* K' n1 h
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
; D/ I" [! i- z; L3 W; Z" W- Q5 ^2 ^! k, U& y9 K! F
git clone https://github.com/fatedier/frp.git" u1 x+ N2 A. k; q8 p" D0 X
5、进入frp目录
4 L- ~$ z/ V8 I, D, e5 q
4 |; Q6 b5 G  Q" q6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
' P: k' d' C3 I6 O8 P  c0 c! i1 T2 q' M- X! Y3 A& E6 c2 k
export GOARCH=mipsle
/ o. Y% E' E" M2 T0 K- i5 x% v& ?% l9 ~6 w
. y, K" y. o7 b  ?" fexport GOOS=linux  W+ j( J& j3 h7 t% g% [  B
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。% M0 u( b; J% a, |* [7 D
: s  s- D0 B3 F  L4 A1 T% ^
go get -v  github.com/docopt/docopt-go
- }: S' ], I$ l& C) t$ ~1 h( g4 m) [3 @# l1 ?, J1 \; x
go get -v  github.com/fatedier/frp/src/models/client$ v0 e0 F7 K) u1 M
  Z" w( X+ m7 w" S$ u# p) S+ d% }5 n
go get -v  github.com/fatedier/frp/src/utils/log6 A$ Y0 c8 L; Q. F

$ x* F0 ?7 I  T) k' mgo get -v  github.com/fatedier/frp/src/utils/version
; R) B4 x5 z" s4 C. [% y
: {' `. r; M9 D  S# kgo get -v  github.com/mitchellh/gox
$ i  l( U- V5 x3 e* ]" \# j& ]/ C. j: D9 \, y% m2 a" e( U3 x; H( b4 p
go get -v  github.com/rakyll/statik
% p% W$ j; W3 ?0 A* q; M( w- Z6 {2 G! w, c7 E' \
make) o1 x2 O2 v" p
编译好的FPR就在frp/bin目录内。
- w# {; X: c, N* ?  o0 k) C' {开源地址:https://github.com/fatedier/frp5 v1 H8 F. Y0 X5 a0 L
6 u" R2 L5 ~# Z+ ]2 y- }

/ f( ^6 h1 m, @* a
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-3-8 13:23 , Processed in 0.052626 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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