找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12830|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介+ ]* o" R  f! U8 X' _* W+ E
6 J9 h# M& |0 n7 \- l% A
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。* M1 r, f! \& c: |, R9 M

% `5 b- @$ B' Q, u二、GO编译环境的安装
3 Z" f( l+ p  C  A+ x( I' |5 x) |, k, y5 n, G9 K9 y
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的安装配置。
0 g/ T# u# H6 q; h5 @$ Q" B' `7 y( W2 k
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。1 j  _* [: u6 d2 g5 F; t" C% C
4 m, R: }4 r2 \* w& x( J
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
: o/ T3 R8 e9 v7 q
* p# G  @  q) g3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例6 O8 L. ]4 x% {! `' X# i

- n5 [* U$ C" g* |- H9 O- W7 t/ {sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz( c. u8 |5 v  L- ~& [! [) f8 X+ Z  G
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
  I, d; f3 Z  {
, n3 l9 S! E3 r" q5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):: }( j2 w# j0 I& m0 o+ Y% O

* g8 {6 M' ?( b1 T6 x7 A; V; x0 Aexport PATH=$PATH:/home/dave/GOFiles/go/bin9 z( C8 d9 w. i) P. x1 x
2 j2 a& E. @  i4 u9 [
export GOROOT=/home/dave/GOFiles/go/
: Q  x! E  a& H- @
+ M; m7 E; t$ U  Xexport GOPATH=/home/dave/wksp/go
, }' q3 M  {% r6 q, S& g; w6、重启系统,进入终端,运行如下命令:
$ N$ x. d5 d4 }3 B  {3 a7 q8 g7 V
6 `+ j' j* Q+ F$ D' l4 h% v0 _go version
( g; W" N0 B$ q. ^8 s9 [0 t6 L如果显示如下,说明GO1.8安装完成。6 D. f7 M2 G  \3 r5 }
: S- f( L+ B+ P0 V0 Z/ j/ W
go version go1.8 linux/386
* Y- T! m4 |/ ?: s6 G  J三、编译FRP
. q: z# z- H% i9 }+ Z" h/ b8 B5 I0 Y" _
1、最好先升级一下源和软件,运行一下如下命令:
$ R6 s1 p, h. o; Z6 D; b. R! i8 p. }8 w4 T# r0 |# t
sudo apt update% z! k% s7 W  L& D4 m: l# T
% p* Y4 z* j  F! Y( a0 `/ b! h7 J) [
sudo apt upgrade
# W  d7 T! u+ n, P+ \2、安装git和make。
) K0 I2 A; ~. Q: q9 v4 R
( u, s8 ~  K: {9 Dsudo apt install git make
! I; l8 E  U5 P5 g8 T3、进入/home/dave/wksp/go/src目录
% r9 |6 D! g2 W3 D6 w1 {9 x- J/ ]0 D! }* c. X1 |/ }+ _( H
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)# z1 P5 v3 e3 J% e4 H3 g! _; y
  A  \+ T; f0 C/ x, i; h  }+ O
git clone https://github.com/fatedier/frp.git; [' z3 b( D" S" k  ^
5、进入frp目录
% M7 S5 @7 ~' A( K; D! Y
$ @8 d0 {& B$ x6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
# x( Q4 e5 s. |+ a1 O: N& \
' E9 x8 T0 x+ d8 Yexport GOARCH=mipsle
3 h& B! a; B9 e8 d9 @! T
6 j' G3 F% j. [( Kexport GOOS=linux
$ J% q. L# e5 K0 [) G) t7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
  N4 b4 h8 Y! c' G6 \
4 b; [8 M/ S; S5 |. T  g% `6 v/ U" cgo get -v  github.com/docopt/docopt-go" L( Q- U9 }: c9 `. x! L2 W
+ t0 |7 \8 k7 }9 l, }+ w
go get -v  github.com/fatedier/frp/src/models/client* s" _! w3 `$ @

6 S/ e1 R6 f3 Y, [' ~6 qgo get -v  github.com/fatedier/frp/src/utils/log
, H: L) d) c* ^) V
+ X- Y9 ~2 P. B/ bgo get -v  github.com/fatedier/frp/src/utils/version
: Q) y* l: s+ c: p  M6 L- Z( o8 I. v
go get -v  github.com/mitchellh/gox
( W( k% ^+ F; F" Y) E
: y+ x4 Z; {  j. B0 T3 ]7 ago get -v  github.com/rakyll/statik2 t9 I" R6 ]& z" }4 \. h

* g9 s( k  P( C1 V; D# lmake/ y+ {: B! Y4 _4 Q% Q
编译好的FPR就在frp/bin目录内。2 J7 \8 Y/ `4 n  W4 l  o
开源地址:https://github.com/fatedier/frp
3 p# I2 l/ c( r: ?) [5 k3 C4 f, T( y6 H$ M0 S# y4 O* i, |7 C
  \, J+ N# y+ c% D7 @* j6 ]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-10 06:06 , Processed in 0.071880 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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