找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13626|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介: K! F; i% m2 V% s" {8 }+ g. B
/ n$ k# h' S  z9 V. T0 x
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
7 C* h( h, K0 G0 Y7 y
! w, C9 w8 X: [+ V; V4 y& a二、GO编译环境的安装
! G/ V9 s# I5 ]8 ]6 c9 G! {4 w/ j/ ~% u* D
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的安装配置。
- {3 q0 b: Z$ H2 f# I  e
- P0 E7 J) _/ H' {! x- v1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。- }: {2 k4 y. Q8 s- U
$ `7 B- n6 S% g- K3 e4 ]
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。* B2 z, e5 f6 v+ R/ @8 @

, o" k3 Z/ Q9 `. C3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
! A& X) p0 K" I8 R2 E. k4 w8 C) P" _& E, S6 M
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
/ ?( r& O) m( @5 `! w4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
% K, ?. W2 p# d! ]
/ G' g3 p% F6 |* X5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
0 L4 ?6 h, X, c- ~& F/ b! p- c" E/ K
export PATH=$PATH:/home/dave/GOFiles/go/bin
, C8 w) ~  o* P9 W1 U, _; d( X& g; C% d! g1 D# ~
export GOROOT=/home/dave/GOFiles/go/
& r3 `" b7 I* a, _+ b9 ?8 o9 t5 Z) O: k$ G- d, M. B% [2 k
export GOPATH=/home/dave/wksp/go
$ F4 w+ Z& M) a; z/ [- Y5 `) l6、重启系统,进入终端,运行如下命令:
1 g1 x1 |. i9 [& w4 B* v, T/ B: s# V$ G( C- y# \4 N
go version
  j4 q8 \! c6 O7 {! D' y如果显示如下,说明GO1.8安装完成。
, n; W7 F/ r! w" T5 H# k, j4 G4 g3 o: X2 F; D" I/ d( Q
go version go1.8 linux/3862 G1 R% K3 E3 h# Y7 M4 M6 v
三、编译FRP
, l, K! `( T' O& Z) s  g
( s1 o7 O) l! W2 e9 o. j: {1、最好先升级一下源和软件,运行一下如下命令:
+ f0 O* F; r" b( ^
2 ]7 G! Z' Z: c1 c- Ssudo apt update4 u+ \1 h( _8 p0 Y8 n: Z
+ e# x1 E0 A$ D" D' z0 @7 b
sudo apt upgrade  ~; v7 M, H+ K, a6 i9 O9 @
2、安装git和make。
( o# }% p9 S; {5 G" a# U
) ]9 q! G$ q0 W+ V5 g+ s" \sudo apt install git make
" a7 i9 Y) `+ s7 }5 K; O7 w, e4 }5 _3、进入/home/dave/wksp/go/src目录
/ L- }3 W. _' S: g" M) @* ]* M7 p7 t/ s% q
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
0 W: \, P) |2 V" W9 l$ g' S& d* Y8 \* B) L/ i
git clone https://github.com/fatedier/frp.git6 Y$ Q. M/ F4 Y0 D0 Q8 r4 X  t! E
5、进入frp目录; S; E4 l! u) r" y
! W- s! S+ ~: R% Y  h
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。# x+ P$ w& x/ {5 t  w* k$ ~9 q7 r

+ Q1 V! q. _7 X! {3 Mexport GOARCH=mipsle! ~- a6 G+ B" l4 R, }6 {! v
  y! |. a/ p' {" a4 G
export GOOS=linux! g: c! y3 i# {+ T& p
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
% R* C# K( i1 m& a! G
4 q: {0 ^! W/ ]( ^% Ego get -v  github.com/docopt/docopt-go
1 S! B0 p& V/ t: x" s- q! q4 \
3 q( L; y% {; Q3 d; c& igo get -v  github.com/fatedier/frp/src/models/client0 a4 f' e  c  }1 K: m1 q1 A( C
* M  Z: J7 C0 o, h# ~$ v
go get -v  github.com/fatedier/frp/src/utils/log
* I' r5 j$ t# B6 _; u( m: F% y* l- f* v) ]9 x+ g
go get -v  github.com/fatedier/frp/src/utils/version
- M/ [& y7 y& q4 D$ }9 A! ~$ j6 d6 n9 G, ~$ p( K1 Q
go get -v  github.com/mitchellh/gox
# d7 v4 T' i& J, i  W2 }/ L4 \8 ?  A
go get -v  github.com/rakyll/statik
8 e+ _# S2 z" M2 f$ s0 h# u( `5 N5 c/ H7 b0 S, V/ ~
make
- k9 W$ ]2 H9 [/ G/ c编译好的FPR就在frp/bin目录内。
& J4 g, N! b2 u, W" U开源地址:https://github.com/fatedier/frp) z$ x$ K% e* U- g3 O
6 d2 R) H: q4 ^1 @& v; l0 Y5 {

& G! h, C4 [! F% x& `
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-2-4 05:08 , Processed in 0.073297 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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