找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14386|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介
- x9 v4 ^% C! M7 g; k$ Z' G0 l
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
! \8 g8 R8 j. ~0 i
( O: W* Z( V  f. i二、GO编译环境的安装
3 `" J9 Y# `. M" L3 G3 l
9 Q/ V3 }. }: hFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
7 |: M* O. L8 A# z( A  D8 E) ]
1 s6 o- m; k, I5 H1 C1 x* C1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。9 ?7 I# G# k5 H6 ~( [, ?
& m9 Z' w0 S8 e1 \6 U
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
, `- |$ O) h: ?0 T* o9 y' {7 U
+ P( n( [( l" p) I3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例+ f# O2 _& f* ^

5 }( q# I" c# E+ `& G. J9 Xsudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
6 b: @! |9 h9 S: o5 o4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。% G8 m  ^; l3 ?9 c

4 J, V6 p) l: w* Y( u1 @5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):/ z! P, r& x0 [9 Z( l3 Q& F- V

8 ~  N7 D& ?' P5 [0 W& |export PATH=$PATH:/home/dave/GOFiles/go/bin
8 }; b0 a: \; B; N5 n3 i: }  v0 g# D+ f4 U: a' d
export GOROOT=/home/dave/GOFiles/go/
6 ]! A- t7 Q+ A$ P; I; A$ L3 s$ M; x% o( t- a, i% G7 b$ z
export GOPATH=/home/dave/wksp/go
6 D) N$ p! i7 P! Q; w* _6、重启系统,进入终端,运行如下命令:
* a+ I4 k+ I" a' n7 h
  x: `# ]# G" d$ ^8 u$ g& Q1 zgo version
, o( j: f5 m/ T2 T+ D, h4 \8 D' K如果显示如下,说明GO1.8安装完成。
" _" H) E3 ~3 b8 b5 k+ V
0 p% y# j4 E" P2 m* G1 q$ ?3 ^go version go1.8 linux/3864 D6 f2 N; {) z+ _" [, Z
三、编译FRP  }- b0 q+ k" r% R+ ^$ R
! D( j9 U# p6 h3 i, I
1、最好先升级一下源和软件,运行一下如下命令:
1 D$ a0 O" Z0 D% }0 S
& R8 y% F; t# a1 asudo apt update
2 K/ A; N+ f9 A* \. p, m) N" P# {5 ]+ F& h& D* h. S4 x3 |' t
sudo apt upgrade
1 t! G9 S% [& n1 u& _# V2、安装git和make。9 K( H: J/ x% k; [

$ V/ m; ?$ o2 B# _  _0 nsudo apt install git make
3 M' d7 y  [( `" b5 w% O3、进入/home/dave/wksp/go/src目录& [6 |. f3 A7 X
! \- x( Z* |8 Y+ R0 @
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
$ }5 z$ K, {* V* T* d$ Q8 E* O2 e) ~7 e
git clone https://github.com/fatedier/frp.git
8 T" ?) ?4 I* b! q9 X) I9 _) x& D5、进入frp目录
, H& k& Y% }1 x$ I- g, _. v- P
" ~; ~& S3 m% z: I# g  y6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
9 _0 {3 V1 K& Y8 \, m! |+ f# d
8 d) g. b: X+ B1 i. o8 kexport GOARCH=mipsle3 x; z, F/ l2 ~. A( G/ k6 p

. [* y3 ?- E% g# C+ |" |6 p/ ~1 Fexport GOOS=linux: C( m- l  I8 o* F
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。6 h+ n. b+ E- g1 C9 b1 f

/ a4 P1 x5 n4 Q/ K5 O% M% @go get -v  github.com/docopt/docopt-go+ x$ b8 z7 T$ J) C
2 U% R( L0 L7 e4 r9 I1 o% n
go get -v  github.com/fatedier/frp/src/models/client
2 t# \0 ~! p, i* D. J9 A- L0 T" i# {* l. s: W6 O( P
go get -v  github.com/fatedier/frp/src/utils/log
4 a2 p+ {" i4 a
/ p* h$ u; {, N0 R# cgo get -v  github.com/fatedier/frp/src/utils/version
2 S& ]0 s. W" S4 n0 m, G
8 l8 A# R0 L6 V0 Rgo get -v  github.com/mitchellh/gox
7 U' t5 D, U9 c* M1 Z2 d+ Z  p; G6 n8 z
go get -v  github.com/rakyll/statik
+ y& ^( O  B) S0 C! B' p
* W% e% J" p1 s& Bmake
4 r% T0 g5 o' Q, L编译好的FPR就在frp/bin目录内。6 I4 t" |' g4 T1 E9 X3 J
开源地址:https://github.com/fatedier/frp
5 g8 h0 r! o% Q+ l5 f9 e( R6 y! Y7 V- N) V- O" p
2 ~2 p$ n. _$ R% f) y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-5-16 19:29 , Processed in 0.104638 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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