找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15018|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介# `0 s" c% b5 N* S. U

$ W' E  d7 n/ X- l6 X5 g3 Q众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
& P# M+ D9 {# s: r! r+ G" d4 ~! V/ t, N/ T3 L2 I( Z6 q
二、GO编译环境的安装: t3 E. h( z0 e& R0 T) k

7 o4 M" G; R4 M# x7 lFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
: P) v* c0 y6 e; S- w) ~0 c. A
3 \! u' K- v# V" d2 ?1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。
% y& h1 |2 p7 p5 e0 x
, Q3 {0 B1 S+ T- Y# Q5 m. ^4 a2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。  f8 z5 l, y. T2 i, V
, a8 |, L4 A( C2 _$ x
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
) K& B# e* _8 L0 ]  i' \5 j4 [# _. {. }8 i, y! N1 l( O( C
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz) y2 B5 t2 B9 K
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
. ~5 U7 U+ U. A1 d6 C: h- S1 c" I7 Q1 d" X
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):6 x: \! D$ Z: V/ p0 z
- `, S: |4 k& C1 ]% Q, P" h, `% ~+ c
export PATH=$PATH:/home/dave/GOFiles/go/bin
+ u6 x8 @4 R$ J* K3 O1 K' d8 x7 R& U1 p# s8 j* j4 `: l; j/ T
export GOROOT=/home/dave/GOFiles/go/4 H( y* v  G' x

3 W! L& s7 \' g$ A& i5 P. s( _6 Yexport GOPATH=/home/dave/wksp/go; j3 I: F3 o9 k$ ~; c0 d
6、重启系统,进入终端,运行如下命令:
. A/ [6 C2 @9 a' X! a- R4 Z' v
4 N5 D2 y5 a& ^# C9 B: Cgo version
, o8 |7 ?) ~8 k. Q! f如果显示如下,说明GO1.8安装完成。: d- R& H' z: t: b6 r0 A4 @! O/ R
0 v: E7 g5 v' ?% g9 T7 K. }1 R' R
go version go1.8 linux/386
! ?  Y8 y3 @2 `6 r, c三、编译FRP
; K$ j6 E( \% Z" ]
& E! o* b, V) J/ y. r. d5 @1、最好先升级一下源和软件,运行一下如下命令:- T  B. }8 y% j5 m/ r
3 D6 @2 [# r$ f! ]8 F, K7 `
sudo apt update: U6 z+ y5 S, S
# T6 `& ?  J. U5 p
sudo apt upgrade. L+ m- F9 l5 L1 F( X( f. B' ?; L
2、安装git和make。% }, S# b0 J' ]5 _+ ?7 s3 q

8 _- n& G6 }1 v1 ^. C( rsudo apt install git make
# @" ~2 v* {3 R$ j0 u% T, P: x3、进入/home/dave/wksp/go/src目录( o* w3 Y, z. m8 x  ~1 P, A
  r7 {- y" j# @% M( {
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
- R# b: `, O  `  k7 V5 a8 o$ X8 m" C) ~; J
git clone https://github.com/fatedier/frp.git- M3 U4 v: R0 p
5、进入frp目录  u" q/ Y& D8 ?$ T. i7 i

% l  I6 \  {% ~9 Q5 u6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。% Z2 S+ `) y, g6 H# Y( R
% x' E" ?/ e- p! ^: `7 J
export GOARCH=mipsle
! \  P: Z% @8 D& Y0 Q1 T2 m8 B  E7 Q3 [5 ^# h" G8 M. e6 j9 x" G  A
export GOOS=linux
. I1 C2 l' p; J5 |7 b: E: F; _) F7 h% E7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
0 g/ c& K( c  ?5 U( d% L
: |5 B6 _/ K3 [+ l0 t4 _" Rgo get -v  github.com/docopt/docopt-go
+ Y+ ~) s: Z9 p5 P% w0 ^8 }4 O
& X2 {. V. ?) ]: j- z  qgo get -v  github.com/fatedier/frp/src/models/client
" X, X4 n" y$ T: E# I- c& B3 y- Z1 c* W, S: L9 t$ A; _
go get -v  github.com/fatedier/frp/src/utils/log! ~/ Q" H5 P/ D( B. @

; z9 E* u. |5 X% V/ \' I" Vgo get -v  github.com/fatedier/frp/src/utils/version) \# z! ?1 p4 {+ @) r

; e/ G. M) N: S4 `go get -v  github.com/mitchellh/gox. J4 r& t' c. J2 C# f5 ~

6 ~! t" P! d2 V* [6 m9 F4 I: ^go get -v  github.com/rakyll/statik0 H1 {8 B, K/ d% z. y, L5 `$ q+ Q
, w; E6 T9 A; i  v5 @
make
% c/ w3 y3 G8 N; p/ }编译好的FPR就在frp/bin目录内。7 [) ^, X; k% Q' j
开源地址:https://github.com/fatedier/frp
8 v* g( D9 d# G# v+ M0 A; F4 }$ v
, e3 W; Q! v* e- [& r5 ~) }# d' _8 |& t8 x  n& s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-8-6 01:32 , Processed in 0.063577 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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