找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14072|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介/ [+ D2 |. g; M- w( V, t

2 U2 U2 }! c: R  x! T众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
& r/ D# e$ g: J$ p- m/ E
/ Q9 C5 g5 ]4 H8 z5 ~二、GO编译环境的安装! z2 o, P" T8 i7 h

; E5 P4 }8 k+ b9 f% Y# h0 ^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的安装配置。
; u. l6 U. E, ~9 |# ]4 Z) z! Z- o' l: }! V) ~( k  }
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。
7 T  T" {/ Z! |: B% R6 n1 a& K8 C- i" e! k
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
4 h. Q$ j5 X* t9 J% G
8 X& x6 J( ?. M* N9 B3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例0 S1 K9 Y5 |9 i9 v3 }
( Q3 x( z" o& `# C! M
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz/ i9 R# o' [, c7 ?" K! i
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。+ G2 B) Q% l- _* ~- t% k: t
9 n$ o4 f* _# U/ u; ]2 v; }3 I- |8 W
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
/ H9 Y, O* [8 v" e/ j, B
9 a; P6 A9 }4 E* C  V4 Fexport PATH=$PATH:/home/dave/GOFiles/go/bin
5 f7 J! x9 g2 Y1 O8 ]9 Y
9 {- f& S) H9 i- l" \5 Z3 Iexport GOROOT=/home/dave/GOFiles/go/8 m: O8 \- K7 }

  r! b  H0 }  l: G! M9 y3 k/ Gexport GOPATH=/home/dave/wksp/go
* h9 K4 v8 t5 A+ f& g$ z, I& ]" s6、重启系统,进入终端,运行如下命令:5 h' F% A  b% ~, K3 ?  _* @, `
2 e" f, W6 ^$ @  N6 u
go version8 j( z' K" I* ^& D3 b
如果显示如下,说明GO1.8安装完成。
7 S3 F  o. A8 l' o/ K2 {  N! B1 b5 R7 Q% u
go version go1.8 linux/386% N0 U  y% S( t  L; E, f4 ]
三、编译FRP
% H7 Y* Z/ w, b3 |" Y' O0 I8 s4 \6 A
1、最好先升级一下源和软件,运行一下如下命令:
! I3 m* ]+ `; k6 q6 F) j" H4 Z$ W& S# S
7 h9 ?  m2 T0 }sudo apt update
, L6 m' @0 L  d4 F2 L6 q6 q8 O% i* p) r) ?& B* G) [- D. U
sudo apt upgrade  D0 h" c7 g( s- {
2、安装git和make。  i( P) n3 S1 [4 y, b
4 O4 a- h% r* Q% `: u
sudo apt install git make6 T* j9 v6 d4 D: c2 ^  l* z
3、进入/home/dave/wksp/go/src目录  k4 n: i' j. D; _4 v/ J6 e+ L

( F$ ]4 k" V& P" g6 s* D+ m4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
" ?/ }3 p$ g5 E) Z+ r: ^7 [
7 o5 q; ^3 V6 `7 j. O/ s( ~* a! wgit clone https://github.com/fatedier/frp.git
8 q. N* Y: D0 ^; f# T5、进入frp目录
- @: w/ O9 u' F7 ^: V, T: l) I
+ n( Y  x$ X% o' z4 W- h* ?6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。) v9 E3 ~: j1 f, t9 V7 m# e. l  P" S

7 A. X- Y5 E- j- s; n0 C: n! j& Jexport GOARCH=mipsle( m" V$ }; i' M) Y6 o0 X  i

! e; P( ]7 f6 Q: m+ e: n: xexport GOOS=linux
: ?& b) z* p/ E: J6 K4 ~' w7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
: y; C  g0 O; @! |5 L. q$ t; l, A( v3 u( I0 `7 |: q! m
go get -v  github.com/docopt/docopt-go
0 K! B8 c$ e# ]! W. I9 P% J2 t2 J1 X% [* a
go get -v  github.com/fatedier/frp/src/models/client
$ p8 x. b6 e1 I) y7 s' d7 b2 x- o) r% ~2 @( s
go get -v  github.com/fatedier/frp/src/utils/log
! Q9 d. |6 r  L" {0 H5 ?5 \
, P; I8 P6 C2 H; i! v' i, i3 Tgo get -v  github.com/fatedier/frp/src/utils/version
5 O% q3 C: q: g2 ]& D+ j5 N$ H1 N- C& ?+ t
go get -v  github.com/mitchellh/gox
- X- `4 e! M, {5 E* k, S$ _2 Q$ F$ ^' J) |9 x1 y
go get -v  github.com/rakyll/statik4 O/ |1 V5 f/ m' |) L
! p/ B6 X' _5 f- ?& H# `
make
( t+ B# Y, Y" M8 c; j编译好的FPR就在frp/bin目录内。
3 }" o" G; k  O2 v& i; M! Y# t开源地址:https://github.com/fatedier/frp1 |! A1 o2 ^- v. {& g1 b; m

( I" L& ~/ e* g, d7 b2 Z
+ a: X& Y" z- D) t; }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-8 12:39 , Processed in 0.063212 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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