找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14278|回复: 0

ngrok类似软件FRP编译教程

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

: I- o* y4 b# h  {" U4 |6 f二、GO编译环境的安装
" {, P' q( p" F3 b9 \
7 d1 [; n/ S; e* x( vFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
& z4 \/ ?. \% B6 ]* J- `  N
1 `( L2 s; c: B* z3 }, ?# e! M1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。% v4 y  S7 l9 s$ a
/ W/ |2 B7 x) }
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
% o8 X" F) C  e* i: @
7 B4 [4 b4 C9 z3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例+ ~+ \7 X4 r1 e* [) Q: G( e, R* u
4 A+ Q& ]5 P5 D# j
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
- t$ T' i( u' `4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
, ^% a9 K# F& E: V- a9 W  [( Z( i% y4 I' `  B  D0 G3 g6 d
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
, ?' {9 O, r1 ^
* Z9 ~1 B3 s9 }" Jexport PATH=$PATH:/home/dave/GOFiles/go/bin
! e9 j' W# V3 ~3 U6 ]# F" b0 ?$ J! f& i! t
export GOROOT=/home/dave/GOFiles/go/
/ \  l0 ]" W, a. }4 m) z6 b& @7 T; u3 `) z, D
export GOPATH=/home/dave/wksp/go
* E: ?$ }* m/ D; ]6、重启系统,进入终端,运行如下命令:
  z" N, h0 O$ w; v0 {8 x
! ^1 \" T/ M/ F& K9 |/ Z1 M3 m: j  Ugo version
4 V4 }" {  h+ ^4 J如果显示如下,说明GO1.8安装完成。
6 X/ ]: N0 _( g! c7 S5 P+ o9 p; l( a" S
go version go1.8 linux/386+ t' b+ e) F) o0 f* o/ T3 O
三、编译FRP
) r" J6 j  ^8 \, L1 w$ q& d/ t9 N' K; X; I
1、最好先升级一下源和软件,运行一下如下命令:
) p+ H& f  Z( L' I$ |' V) {- M9 Y- d( P/ y" f
sudo apt update
" G8 [5 Q8 x7 l; V- j* |
# [; Y5 j  r) e3 `/ isudo apt upgrade
7 _" e2 f" y4 w8 `+ |2、安装git和make。
4 j0 w( }% m* m. \* _0 Q- u- o3 z4 p7 [6 u
sudo apt install git make
4 a9 r! T) x& G& s# `. [3、进入/home/dave/wksp/go/src目录
6 p% ]( h8 m8 @! D" e. ~
/ N( {) z3 `* _4 a% B7 G/ |4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
% ]/ j6 k4 [1 K# m8 p* X6 X1 H/ a; K/ ^/ W
git clone https://github.com/fatedier/frp.git
7 m. \! F* [6 ^7 y! q5、进入frp目录
% I* S6 d- r7 m4 ]9 e
0 U. a* k4 I# A6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
! v( U- q$ e3 C8 c0 i1 E& L; [2 E4 r* C1 O5 e. [! N
export GOARCH=mipsle
' S* s/ e) |- j" r" ]# R' i4 i( G3 }8 V
export GOOS=linux) H) n1 K; x  f* c% O) s
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
6 [: \" [' @* G: V2 V) {2 \% p% X$ m- Q
8 o# h+ t9 q0 T* }0 a- T! m$ Kgo get -v  github.com/docopt/docopt-go/ \- g: x+ m( o8 A

7 V9 b7 y# A1 s4 pgo get -v  github.com/fatedier/frp/src/models/client
( k9 f9 i  |7 s! ^- x1 N
0 Q: H1 x. a; Kgo get -v  github.com/fatedier/frp/src/utils/log5 R3 m, g8 n- y% S  K

% a$ O( z! `" s; v3 Q6 h$ Dgo get -v  github.com/fatedier/frp/src/utils/version
4 c* {; O! u' s2 V6 r! ]6 m4 V$ h/ |
go get -v  github.com/mitchellh/gox: h5 a& O8 N% q. @( O, S% A  R

$ w* E! S  v! ^8 l& zgo get -v  github.com/rakyll/statik
  c7 s2 o' Z- P% Z/ N+ n  G) K
; {! F9 |; T, q& L2 e  E' l  Jmake
1 C: R' T& F& h: {$ {4 D0 _编译好的FPR就在frp/bin目录内。
$ C- O: o& h" V1 `/ \开源地址:https://github.com/fatedier/frp- l/ K5 v+ g8 }3 ~  N

$ t8 l" u0 z. n4 O9 I# M
4 }2 g5 i* q7 q  E6 L; T, u( O
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-5-4 01:11 , Processed in 0.074245 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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