找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14937|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介  p, l8 p) X5 i; \+ P/ j

1 I4 n3 e: R- G众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
: ~# _+ D' o4 w3 T/ u) \: f* A6 `! s) ?8 D0 Y; {/ m
二、GO编译环境的安装; t) |  F& N0 J- ~

$ E# ^$ X5 F* {; i$ u3 eFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
2 T( k' [$ x& R/ j  A* |  ], ?3 i- b' F3 Y( n
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。4 A$ _- l: d% ^
5 k+ q. h$ }6 h. s7 j! b
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。4 y! e: _; g! J0 Y1 ~
/ ?, x  `% ^3 A* P
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
9 O" Q2 P! {8 g2 S) [% K. ~$ ~& w  |# X
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
9 R/ |9 A. S" ^4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
- `6 d5 U+ [6 I8 Z: b+ Y# f6 C1 ]  `/ S3 [7 y
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):5 v) V% y. n2 G# j0 n0 t& E  D

  x5 Q1 Y$ j9 V8 _2 Eexport PATH=$PATH:/home/dave/GOFiles/go/bin
. f" P) m1 l& l9 g% m6 w4 t  S3 F2 u, A8 [: n' h
export GOROOT=/home/dave/GOFiles/go/+ y" H% z' Z$ q+ ~- M2 r( I1 J

; g; z, R2 }% q5 q/ W4 x! l; jexport GOPATH=/home/dave/wksp/go
* P. u9 r+ m9 F0 I2 f2 j+ L( X. g6、重启系统,进入终端,运行如下命令:
% S$ `4 \- {# E1 L5 @  g6 {2 ~) `$ w/ x0 t# D" z3 a" N7 Y
go version
5 S: v8 b( v' ~1 m如果显示如下,说明GO1.8安装完成。4 h1 g: K( [7 Y
% u& r4 [) ^# I& |! `( A
go version go1.8 linux/3861 I# d5 N  W' u8 t5 I
三、编译FRP
! y. E/ g! _0 w. {" E- }
9 k1 ?0 X% ?$ F, ]& y1、最好先升级一下源和软件,运行一下如下命令:
* m9 R4 j5 _- a/ Z4 ?: i7 ]
, G9 ?8 b% ?) s, xsudo apt update
5 A( Y  @$ n7 p7 L1 w/ D9 @- R
0 s" u3 |& s* L  k9 K: [sudo apt upgrade
4 K- g' k: v( k2 E, c$ q: G# \2、安装git和make。
, M. B! W$ @6 |8 q" ^# g  ]& y5 g6 [( v
sudo apt install git make
* N# k. ]4 z8 {3、进入/home/dave/wksp/go/src目录# p1 ~1 W& O/ b1 ]  _, ?

( K1 X, r" l+ D" g/ T4、运行如下代码下载FRP源码(建议科学上网,不然很慢)& P# X: q1 ]; a" e" F& D
* W) X/ S6 V9 M* }) S& l6 n1 `& h
git clone https://github.com/fatedier/frp.git! P( I: i2 S) E3 G  W2 h
5、进入frp目录: F( f0 X* j" }( v- q' D
  Z, a1 w! \# T7 @
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
- }: _  w4 z5 h+ e, K3 T3 |5 U6 B8 F, f8 j8 Q2 e) k# k* k- \
export GOARCH=mipsle' J2 U& u. {! b" i' ]9 }6 z
9 N4 d9 f" ^& d$ M; L) i
export GOOS=linux
4 Q+ u* w" I4 N  n3 Y7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
' a+ H3 C+ O$ S& }7 G' H' Z" a# o$ s5 l8 d9 S0 W
go get -v  github.com/docopt/docopt-go
: n4 ?% C/ _! Z! q
8 g$ b7 e2 g; c7 b& w2 q6 f4 Ego get -v  github.com/fatedier/frp/src/models/client
6 ~" K  H7 y! Z- O: L+ d7 A+ g! k, T$ u2 T( `" B
go get -v  github.com/fatedier/frp/src/utils/log0 X9 a: y: D7 e( c/ k

$ ^" ~/ ~: l5 V1 ~, B2 Wgo get -v  github.com/fatedier/frp/src/utils/version( r+ \/ G6 `3 i% C

; S/ ^& L+ h  o; W5 Qgo get -v  github.com/mitchellh/gox
" h0 L5 O; K% W4 P) F
# [$ o4 p' o! S' D3 e. Xgo get -v  github.com/rakyll/statik% s8 \2 m& Y, g6 @/ r- _+ O

% C: E9 \" K# |+ o! i8 Xmake
% i# B. S9 }+ V6 l5 e" [0 M) O" h编译好的FPR就在frp/bin目录内。
9 U1 R+ [- o; c, |开源地址:https://github.com/fatedier/frp* y, x. }1 S% Y# s

  H6 l$ u' L4 |3 v) I7 K% A) H
: Y, o- M# p7 T
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-7-26 17:40 , Processed in 0.102214 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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