找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12866|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介9 Y4 W4 a* l  i! R! G. M

% ]8 Y2 a: y( Q- [  t; ^( b众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
8 y- U+ a3 [5 `6 f& [* @; I
3 a3 a# J/ M6 ^二、GO编译环境的安装7 [0 v7 A4 A: x

" h& O- \: w6 y) M# Q3 CFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
8 m3 l" F8 r. E( {: {' d5 Z  l- u6 o: v* }2 e( T
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。) }# z+ _" w  {: I8 H: R" [

& v7 O) d( M/ ~) Y6 A; U. Q  m2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
/ _+ e( \' ?1 d+ L+ V- A4 `0 B( F
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
8 u! q; z& v6 l1 z
- z0 w! l8 N9 U0 j' nsudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz& q& a0 I7 S* a) [0 u
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
' B" o( P% |3 [  j  [$ C8 @; O4 s4 ^3 ~7 @8 @! G
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):) g5 l# s+ M& ~* g8 m

8 d, M; @2 J" U  ]+ ~export PATH=$PATH:/home/dave/GOFiles/go/bin
- C6 `' |1 ^# s' B  w8 G* n' y& {3 j) A# `7 `# S( ?. `# j
export GOROOT=/home/dave/GOFiles/go/( _0 F7 _3 W) o6 Q

/ @; Z. k* a1 D* `& _" oexport GOPATH=/home/dave/wksp/go; m" J/ s7 U$ {' U5 V2 I7 i
6、重启系统,进入终端,运行如下命令:
4 N  X* O  k/ c& ^9 H0 n8 \7 j& j" a: k- V
go version
; O( |0 T# U! I$ |! @$ L如果显示如下,说明GO1.8安装完成。4 F$ s% }7 `3 I0 p6 _& z0 W

5 j% Y& H3 {7 z9 J) Y& rgo version go1.8 linux/386" S! ?7 \3 |- z! R  \& M( f. z# u
三、编译FRP) i, u- K% A' H0 D7 l, @

- G: |+ ~5 A  ]7 X( ^/ C1、最好先升级一下源和软件,运行一下如下命令:+ {" q2 f& K& [$ ^
# ^/ N+ [# {' o1 e$ s# o+ k
sudo apt update
! s5 y/ u. y9 V8 A* @5 }) L2 U1 r( t5 C, B! w3 ~9 O9 X6 @2 f1 ^
sudo apt upgrade- v( r1 n" M8 X5 \1 J9 E" I
2、安装git和make。
  ]( o; o- Y  k4 C
! s; U/ R  j  Q+ k& z8 E* Asudo apt install git make0 u( O/ o. ?+ w
3、进入/home/dave/wksp/go/src目录4 D! @! b4 _6 z0 O/ `
0 k# B- x! E- ^- y
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
! f9 y! m' k6 t1 Y" p
1 V2 \! `4 r; G: c' l: Qgit clone https://github.com/fatedier/frp.git
; O  N9 {* @$ N' S/ ?! ~! t, k5、进入frp目录8 ^. p! Q& m& s+ Q2 M9 Y0 @
1 m0 v$ D3 s7 C1 v& f& s
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。4 _/ ~( a& V. I* [' O- O) d
0 S5 `7 Z  V5 f. u; \* V% B! |
export GOARCH=mipsle3 z7 v+ j, J0 F; I

, P6 t5 b% Q/ V' ]export GOOS=linux
  R3 F! v1 [% T, }6 {7 @7、逐一运行如下代码,不报错的话,即可完成FRP的编译。- x. t* b# @* B9 _5 P6 s

+ O" \/ f, ^( h+ O: v' U# T! D+ ggo get -v  github.com/docopt/docopt-go& J; C4 F6 l* U  z% \- W7 d; v# c
, I. L2 @, `- G; G4 w; E  B- c
go get -v  github.com/fatedier/frp/src/models/client- P. q4 n& }1 o. B- i

# A, b. ~# W2 `/ \, ?go get -v  github.com/fatedier/frp/src/utils/log" ^! c* ^! [+ b
' D# u% h) G2 y- P% q
go get -v  github.com/fatedier/frp/src/utils/version
7 S; ]" N( s3 H1 ^2 C  ]" b
% E" I+ j8 l6 ?. D2 m2 G3 xgo get -v  github.com/mitchellh/gox
& M! U$ R/ T' x, [1 s+ f4 m4 z6 y5 t) A; e
go get -v  github.com/rakyll/statik: l8 C8 W+ B( H* f" q

4 t2 V; H" m- F# Amake9 I1 w9 z+ z( Q5 v0 W
编译好的FPR就在frp/bin目录内。
% g( m9 B7 [% J  h) @5 `2 C+ b( m开源地址:https://github.com/fatedier/frp3 e# i0 j4 V1 @& L
- f3 L. M# b3 S/ _' {  r' b8 [

6 R" l5 U/ l2 m$ }$ A2 G
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-19 09:44 , Processed in 0.072341 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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