找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13759|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介
- v7 A2 t% n, }* A7 e( A; b( [8 m$ p% k( {2 T
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。9 s/ k( P$ G/ v& O# e$ ^
/ d1 R- K4 E# h. ~5 p
二、GO编译环境的安装$ ]: b* G- H! P
% _: `$ D2 p$ B+ w
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的安装配置。
' {% s8 u+ I8 E( s- O& A% [- y8 E! D! Q: ]6 D; r
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。# f+ T% S# [, ?- ^% p0 f6 `6 i
: ^+ |  E9 y) e" c+ a  b; ?( b
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
' Y9 u: Y  z( b) [2 z" v, A* N4 o, s$ ~
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例9 h% K. }+ r* l
3 g9 S1 D. J8 m0 K+ |
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
. _5 }3 Z+ [- z+ M4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。" S1 m* e- c2 g5 a8 N& y: A* K

5 {. U1 P/ @; P6 [* a5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):# Z, \$ ]: O$ y

+ \" ^# s; l# sexport PATH=$PATH:/home/dave/GOFiles/go/bin6 w. u6 {' [, a, V
& X/ J0 @3 a8 i
export GOROOT=/home/dave/GOFiles/go/5 |. }, Q- p; w4 K0 J

$ e6 _8 n9 I( Z0 hexport GOPATH=/home/dave/wksp/go
2 |7 \  e; P$ n  q6、重启系统,进入终端,运行如下命令:
0 a+ }2 k+ e$ D5 }" d7 j$ K
* B" X% D" h3 g% ^8 {" o4 P+ Hgo version' o: D- ?8 A( v/ S( |: j. G
如果显示如下,说明GO1.8安装完成。3 J$ y6 c5 t: s7 Z* M

' ~" N# j/ \! ^" ugo version go1.8 linux/386" q) Y' d: R5 G
三、编译FRP
7 P6 }! |8 ]5 k1 U% N
& M) }2 M& v) Y) I# J5 \1、最好先升级一下源和软件,运行一下如下命令:
  I1 c- n: |# j: @* H7 ~* r
( e) ?& x# g; i0 T( esudo apt update8 e; w% ^8 o% o1 j
* `/ v( w  @3 I8 i
sudo apt upgrade
' F( D0 X& u- I1 i) R2、安装git和make。
( b5 u; I% {8 E. r: a0 y0 D4 B* y2 h1 }' {0 Z
sudo apt install git make
  a% q8 I& L4 @' g3 X3、进入/home/dave/wksp/go/src目录& |- e* F' I, w' W. x  k

  X! n- }! W6 g) h) ^$ D+ ?1 j4、运行如下代码下载FRP源码(建议科学上网,不然很慢)% `8 f/ q* a1 I' Q' Y& s( N7 C

# m% I' A6 N5 s; @git clone https://github.com/fatedier/frp.git2 d* U  i& m2 j
5、进入frp目录2 p0 C" j1 l1 {8 W/ t

2 i" w* f  z8 }8 ]' \& I$ K6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。( l: j" F6 _3 l

3 b$ S4 Y  e, K' P/ Z+ v0 Texport GOARCH=mipsle$ T7 F7 i4 x: b) ^& E

+ u+ ?8 ^2 f1 f& Mexport GOOS=linux
, |% ?7 x; J% d) K5 X7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
0 w! b2 |8 x' _# @# }6 c- D7 F5 o, Z7 u; H' }2 D; b4 b
go get -v  github.com/docopt/docopt-go& V; q+ e$ v. H0 W) P
+ R( d& J, E& T/ I! o0 {
go get -v  github.com/fatedier/frp/src/models/client' A( R. O+ l3 Y7 {& l* j1 X, F
/ S( {$ w3 \- Y& M7 y
go get -v  github.com/fatedier/frp/src/utils/log
3 Y% B* l/ S- |: j4 K, H6 o2 E7 Z: M4 F
go get -v  github.com/fatedier/frp/src/utils/version/ {% Z3 x0 B/ U, L( A6 c

, }* T/ |1 B! X* t' A% Ggo get -v  github.com/mitchellh/gox
' K0 r: H. t) |* ?! F' D
  ]6 U; W& S8 Ugo get -v  github.com/rakyll/statik4 ^0 m9 o$ d# u
& P9 w7 O0 ^- h/ W/ I
make& B& f" L) i, S
编译好的FPR就在frp/bin目录内。
, a3 y+ ?/ D; @, n开源地址:https://github.com/fatedier/frp: f* E; m* }: ]+ M: P8 Y+ ~

8 B! S9 V7 P3 \% w
2 I9 Z1 D9 Q6 H3 F! q: O
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-2-26 10:33 , Processed in 0.079457 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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