找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15481|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介. H6 I7 ~8 U9 z/ c3 b
& K7 S' l7 O  M* ]) U0 D
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
8 s, {* |: y5 a1 ~& o
% K3 K) R7 `; s4 ~/ V. g$ a* C二、GO编译环境的安装
( O/ `, Z0 f7 _/ o# X" ~+ }
" u+ ^; A( W, V7 t% U, k/ S4 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的安装配置。
5 R& z4 ^# J4 }5 _$ X  @
) o2 v! h! S3 f: u1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。  O+ W( x( |, z, B- x) s
" n# y0 |$ X2 N7 S
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
; d& t4 H2 J- j9 }' V& E3 s! j' H) m9 I8 p
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例+ ~" L/ y2 _: p9 i5 J' K' m% b
# K! @  h; W7 j
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
/ n7 p( d' t' X0 y7 O: ]4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。4 \, P" _1 _% x6 m; [) A8 E( j3 ]

# U: c2 b0 I( f. X+ @5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
  S3 O9 \! W& p! i& Y5 \# s, D& s& g* f/ S$ T8 k1 f
export PATH=$PATH:/home/dave/GOFiles/go/bin# B8 L7 n- f, K
- w9 l1 {6 C& _7 r# S
export GOROOT=/home/dave/GOFiles/go/5 \5 E9 ^- b+ }) Q& K& J
0 E0 @0 y" p( K' p' R9 ?; C- }
export GOPATH=/home/dave/wksp/go" L2 w' r' [! e- Y- ^
6、重启系统,进入终端,运行如下命令:) f3 o$ }: l. f/ g- V/ a

$ N1 q- w% q6 ^; r) hgo version; F7 a$ ~2 E) N6 w
如果显示如下,说明GO1.8安装完成。
9 G0 h+ P; F# u$ q" |# u) e7 r; y0 ^
6 W/ Y; P* T- J# Q; V# d3 v3 Zgo version go1.8 linux/386' S0 @3 \8 J7 e  {8 v8 d
三、编译FRP2 `5 f% V9 P9 A# W

8 {% _7 R8 n8 {+ h9 Y. z1、最好先升级一下源和软件,运行一下如下命令:
) f3 F* O3 e) U9 O0 e
* x( A3 U. a/ l4 A! [. d: x4 |sudo apt update% u5 |& x* A, P2 \; O" d

% V" W2 A3 Q- G4 l  qsudo apt upgrade
. r8 V  B; w9 o8 i3 T1 W2、安装git和make。
7 ~, [( u: P/ |& v4 s- ?) g+ y  g
4 s9 z9 o$ d7 G% o6 g* lsudo apt install git make: g( a# n+ [$ @. o3 \" r  r
3、进入/home/dave/wksp/go/src目录0 O/ P% F" _7 v  k$ E8 e0 }

9 w7 V$ W, Y6 J: n4、运行如下代码下载FRP源码(建议科学上网,不然很慢)& m3 i0 R* H" c0 u# K$ O1 y
  [4 D3 d  f& X7 z& m5 P  }
git clone https://github.com/fatedier/frp.git
2 R6 g4 Q6 K7 x4 X5、进入frp目录
% y6 E% n' i( g# c" O- ~' o, s4 }
0 s( e6 O$ [' G& N9 g, a; m2 {# G0 y6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。7 ~% I& z) L* _2 L2 A& C

0 w4 X3 P& ]: v, c( i, F/ |export GOARCH=mipsle
, Q: K" o2 S' j0 C. @3 P0 h% L8 g
6 v( t% I1 X/ ]- V$ Hexport GOOS=linux' b. g1 \3 ]9 Y7 X! c) M, f1 {
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
9 @. h8 t8 a4 _3 j9 l6 Z) d& M1 E$ g, ?* |
go get -v  github.com/docopt/docopt-go! t$ s  F. `8 e# }+ w, ~: n* g1 e

" v9 M$ k0 M7 }1 u3 w: g6 mgo get -v  github.com/fatedier/frp/src/models/client: g6 N# d# ]0 W  g, w+ t
. T* Z2 p# |$ M
go get -v  github.com/fatedier/frp/src/utils/log7 c2 b& W# v% L  g' t4 G
4 B& ^7 p8 F- X, N
go get -v  github.com/fatedier/frp/src/utils/version
9 Z$ N* t: e5 a3 e$ x; c9 g: n5 H2 B) J. M( i: |$ T  e4 X& }. N
go get -v  github.com/mitchellh/gox
3 j, }3 H5 Q2 s; a( C' B
  a# i0 j0 n) F- q8 qgo get -v  github.com/rakyll/statik0 \) l* Z/ p# k$ s: R

' V( [- E0 `5 Q9 v/ kmake" Z+ `0 a3 c" x7 O
编译好的FPR就在frp/bin目录内。' W3 @* T& a$ l8 V- Z  J
开源地址:https://github.com/fatedier/frp5 r2 h" h' l* o& V# p
& F& F+ S- _: E! t

, j! T. O8 ?1 ?, L
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-9-29 20:38 , Processed in 0.028162 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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