找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14451|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介# H8 Y: J: B, P: A

. Y% M) j+ |, Y6 Y+ G1 \0 _众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
" w3 X* S! \" B' H- x' k  K9 y! ^9 G" j( [  b5 S+ `: I
二、GO编译环境的安装1 e7 y; N, j  B2 ^1 k
& K! e# Y6 h6 r6 S; Z" N* U
FRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
7 m9 q+ Z& b( [( ~& ]4 i% C$ k- ]+ l( l! w
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。' M8 i" D2 f6 [+ V: i$ v

0 @: T% V1 I. V+ {/ h, M" V3 J2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。" m+ d( [% y6 Q5 Z
( Z" {5 y( z2 I1 e* P! s; o
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
0 j! i; B0 ?! {: R% U2 g1 g, s+ k! b0 n, A+ u) D+ r
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz/ I9 |0 c3 D) f/ k
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。7 r4 ~/ f4 H+ C8 C

$ x6 Z0 ?, p) o3 a' q& ^5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):, I; c0 {5 }6 y+ x* q* D

; _" A. s2 u0 e. n9 |export PATH=$PATH:/home/dave/GOFiles/go/bin3 ?9 ?* J- @) q: H& x
. s" [9 Z: ^& y% X% N! e( h
export GOROOT=/home/dave/GOFiles/go/- U1 Q( Q  |8 ?9 j- n9 o
5 r: U+ t' K! \3 y! f
export GOPATH=/home/dave/wksp/go
( D# Y/ w: {& a5 M, H- R6、重启系统,进入终端,运行如下命令:
8 L$ h- `8 S( M' j- Z( j3 z
% v) d( R! V' u, Qgo version6 C% A8 M. _: e$ Q. Z- C5 P
如果显示如下,说明GO1.8安装完成。) y/ }- \1 m, k4 x1 D4 {9 b
% ^0 Y2 A7 k1 F
go version go1.8 linux/386: g4 l, y: t" v: a, m
三、编译FRP2 R- I+ s! B- |- a; o
! ^" i0 v- d: H- [+ W7 G% G! \
1、最好先升级一下源和软件,运行一下如下命令:' k; ?# y2 o: R! }% l7 X
' l2 L# K* H' a! @2 ^3 |
sudo apt update
0 X! f& y+ @3 m4 r
" |) J4 Z5 @1 V) ]) E# h8 ]' ?sudo apt upgrade; e; ~, ]3 X3 I/ W, D/ j
2、安装git和make。2 y9 c1 A$ T1 ]) }

( ?" C( P$ J! U- a0 G5 c( z+ [sudo apt install git make
9 g* V! ?, P2 r8 a4 c3、进入/home/dave/wksp/go/src目录1 V: p& V. a- C* z

, h$ f2 i5 A+ D& {, o* e4 X3 M4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
  q+ Z; u2 @( v, x+ B( X2 a) a! R) E/ n6 j# d
git clone https://github.com/fatedier/frp.git, z, F8 L/ M0 o; e& K0 }
5、进入frp目录- y; }  z/ d3 @" H9 W* Q6 e
: o" V7 M! v, d9 W' m  D- ?, s
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。& y9 w$ h/ i; I( d. c; T* F
1 Q4 s( z# Y% P
export GOARCH=mipsle( b' ]6 `$ o. B8 B. N2 ]

) }% S' a% o/ Z, l) @( i3 Z' h. gexport GOOS=linux& l5 l: K( Z8 ?! r( Q3 m
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
) r: _3 x, i) Y: B; F; ?* H
* b7 A, B+ P" ~7 k! O6 wgo get -v  github.com/docopt/docopt-go; ^/ y9 {/ z8 s: z$ ]8 c, ]
' Y, |* ], Z. U8 C
go get -v  github.com/fatedier/frp/src/models/client
6 w2 V: K, @+ F4 v7 ]
- _3 ~4 n5 e, b; B: @go get -v  github.com/fatedier/frp/src/utils/log
1 R! u& D" x, w$ ^# R2 ^6 O, S1 }5 a6 w4 e9 Z2 o
go get -v  github.com/fatedier/frp/src/utils/version
3 ^' w! s! Z9 C
7 T9 G0 {# b+ q6 }. U$ Ygo get -v  github.com/mitchellh/gox
5 f' c/ c7 ?- C3 O& `
2 ], E9 h/ R7 vgo get -v  github.com/rakyll/statik
$ N1 r( H+ L; y$ z6 W# G: \+ a0 I# X
make
+ L: c& j& N0 h编译好的FPR就在frp/bin目录内。
, Z1 w. w2 ]1 K: ]( X开源地址:https://github.com/fatedier/frp
. @9 u9 b+ Y  \6 X1 L7 R) f
9 r0 Y1 X4 T" h7 n, E" l2 V2 s" r
5 z2 l& h$ m  l* G$ S9 W4 i
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-5-25 09:56 , Processed in 0.058898 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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