找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15659|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介! @2 W9 e" H7 v4 q! T3 a. j) _
- U- S6 Y$ T7 Z# }$ b2 z, K$ J
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
( \+ ]: v# s/ X4 d1 Y6 Q' h
" ^( t$ e+ M5 @2 g二、GO编译环境的安装7 L' H  v2 M7 j* C8 i. D5 z* [

, _- `6 ^8 `2 N' l) y& F& rFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
  D$ ]* e$ J. S1 e$ D. S+ L) }3 I& N* [. o
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。
  W3 {% U! z5 _) d8 n8 ^4 \
6 v# C) g; s! Z3 o3 S1 g5 D2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。8 K9 v  A& |* E/ r3 B1 k

7 [/ p$ ]' z- C+ b, j& T7 Q3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
2 O; [- V5 f, K: I
* n, N9 g* m4 P) t) ^/ t( G5 _sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz: y- f; j, v3 c6 C1 [; i
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。% t6 u8 V: `4 W6 h! t1 R9 k
3 I2 c- b- D: J$ R
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
' C+ o4 [; R) G3 |% r6 |9 |* N% B9 E/ v% C8 I
export PATH=$PATH:/home/dave/GOFiles/go/bin
, I4 h9 G1 z1 A; [. W( }$ P" Z! E- D: N% v
export GOROOT=/home/dave/GOFiles/go/4 S) E1 C9 C' }: [, q& z, v5 C
2 m0 S# c9 s0 s0 L% z2 i
export GOPATH=/home/dave/wksp/go
( c6 k, }; b$ n7 F6、重启系统,进入终端,运行如下命令:
5 ?9 a6 a- n4 H+ ^3 H
) Z1 g( d5 e. u6 N4 U, `" hgo version) C. w: W/ W2 ]) Q# L6 j3 X9 y, _
如果显示如下,说明GO1.8安装完成。
# `9 X6 D+ L% f1 s7 f: T1 a2 E+ B% T! v
go version go1.8 linux/386
, ~. }# \3 a# I( A三、编译FRP8 ]8 _1 }  U7 T) p5 ^

% C$ p- }1 j" J/ h) a+ A1、最好先升级一下源和软件,运行一下如下命令:
* v4 P# `6 C" }; X4 v- w2 J" u
+ N- |) a' j1 x# e' F3 P  n% A1 Osudo apt update
  ?- F$ R) e' P# l* d& \3 `4 X" J* G3 w, S3 U2 N+ t
sudo apt upgrade
3 r) C0 @. V/ W3 w6 _; F) c2、安装git和make。
6 J# L* M: l! F& `
. R8 f% ~  I8 F% m+ Bsudo apt install git make
- v9 F$ n& r# X2 f* x3、进入/home/dave/wksp/go/src目录
) b8 M/ E! I' I4 h
: G: O3 d* r6 w- K- O( T( W* N! ?# p7 t4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
6 X8 o# w# |; T: y' x2 b0 |# N/ ?& T' Y7 ]5 Q6 @, l! K
git clone https://github.com/fatedier/frp.git* e( f7 B. i* a9 f6 Q4 y! c* O
5、进入frp目录& F! i3 W2 h0 U9 b% M
" Z% G' u3 c# l
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
) k1 I5 j- r9 I6 G0 y+ B" U- j2 C1 g2 @4 |% q' a# r2 a% B5 p* `2 y
export GOARCH=mipsle
5 v$ G7 |. l$ p! n& K# k+ o/ h" ^+ h/ K# Y
export GOOS=linux
. ?7 X" w+ L" @+ J) S7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
) s) v: j* S( c1 s( P' \6 ^. H3 l; _+ @* V/ f) p' l+ C
go get -v  github.com/docopt/docopt-go3 r6 r6 F1 m' M* U% [
. }- S  }, a* d/ N" r: ^
go get -v  github.com/fatedier/frp/src/models/client; J: d5 {1 I" g6 K
  b! `6 w" d! `, L
go get -v  github.com/fatedier/frp/src/utils/log
3 Y+ _6 u) M% X5 s$ }. k8 O; k2 u
' ]# p" }$ t! {9 J6 Wgo get -v  github.com/fatedier/frp/src/utils/version
3 }9 O# ~% V# Q) T! @6 w7 n9 t6 g% P: H
go get -v  github.com/mitchellh/gox
7 Z/ E0 B" p7 W; N  g1 c
5 U2 x3 ~, D5 H" v: Kgo get -v  github.com/rakyll/statik$ h! \, @0 ?5 [3 U

0 G# o. l4 X( ^! Z% H0 jmake' n# u! s# Q, G
编译好的FPR就在frp/bin目录内。% W4 I3 P# G4 l5 v, b# b% v
开源地址:https://github.com/fatedier/frp
1 ^5 u0 x4 x; |
* g+ d: }0 p9 H1 E& n0 ]% p
$ \6 q8 _9 l, E& P( O1 q1 p
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-10-24 16:53 , Processed in 0.046517 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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