找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13383|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介9 i' b! M4 D& R( r

  ]* ?7 e* F5 u( t. |众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。1 i( Y9 U$ s9 I3 o1 V2 R

2 Y7 i3 w* M: M+ W9 R) u5 g二、GO编译环境的安装" R3 I% g& Q* `% ?$ o

: z" z- n4 T% Z! t3 N' p4 WFRP的编译教程,网上并不是没有,比如这个和这个,但是这两个教程,都是需要先编译一个go-mips32,也就是一个可以编译生成mips架构软件的GO编译环境才行。然而GitHub上这个go-mips32看起来已经年久失修,而且是基于GO1.4版本的,最新的GO已经1.8了,而且在我的Ubuntu16.10上,这个go-mips32编译总是不成功(不过在debian上没问题,搞不懂)。通过咨询FRP的作者,了解到GO1.8版本已经支持了交叉编译,可以直接编译任意架构的二进制文件,所以直接安装GO1.8就可以了,下面先说说GO1.8的安装配置。
+ i! z, [6 [, p$ E$ G( k! K( z
! F! ?, [# `, ?/ v+ x2 Y. h1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。
+ p3 `: K7 j3 c: j; r) A
. ]* y) C5 l. S1 J3 g+ n4 \; E2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
3 k) O# `1 ]. j# [5 X3 F) @$ G
; \2 @) w. O- u; W/ |% [3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
2 P) Q5 L$ O0 M
+ }( ^( L  N$ e# F1 Bsudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz
4 J4 d( R' }) K5 y- v+ ^4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。" X& C( `% d8 H5 r+ r) h
2 V# R' L3 ~9 H7 E) A
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):; I+ _8 ?9 v+ R5 G' u, f5 h7 c+ s

# G$ W: q" ]. V& D. p5 r6 Lexport PATH=$PATH:/home/dave/GOFiles/go/bin
3 h; \4 X) k+ \4 y( d6 T
) [9 I& G* E+ \1 l* }: \: R, N5 vexport GOROOT=/home/dave/GOFiles/go/
8 r4 s( h9 s4 m$ T' E6 ]. c* ^" o4 f) S
* t* M; t. q: c) W, sexport GOPATH=/home/dave/wksp/go
! ~1 v, [7 C( W$ ]' R& c# W6、重启系统,进入终端,运行如下命令:3 j  y  K! P8 T0 F1 T4 B
+ m: C  F% U+ o
go version
$ m3 s/ p/ d0 s. ]如果显示如下,说明GO1.8安装完成。
$ m- }) v0 e6 E# x! V( E; v
7 `' C; [) N* r0 Pgo version go1.8 linux/386
+ @& k5 w/ Z8 K, R# }0 \( [# g三、编译FRP
  \0 i1 s! J5 }$ g3 T& {* ~& O) ]3 D9 h, g8 {" p* q- W
1、最好先升级一下源和软件,运行一下如下命令:
8 M9 Z5 p( z4 k4 \' j. s9 g( @6 O+ S4 f9 u& I" ]7 v5 `) y
sudo apt update
3 F8 l, k3 O) i% J) O
8 G8 p5 P# }# }# m& M0 V& U$ [/ ssudo apt upgrade6 a2 o1 K9 n% `& M* }+ S+ g3 t7 ]
2、安装git和make。
$ L- c7 j4 {; {: @) S/ v6 H0 w
% x0 D1 |- h7 y; j4 ^$ J; Y" @. jsudo apt install git make# }3 ?. h1 d9 y; ~) i' H
3、进入/home/dave/wksp/go/src目录
9 N, ~" c6 I  {+ q0 x, F! t. |" c. w1 b) N
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)1 A" G. m& ]  `/ \% ^

/ N, A8 k1 y# ]1 O: S2 H" hgit clone https://github.com/fatedier/frp.git
9 f% o; ~7 n* v& T- B5、进入frp目录
* C( f9 J, d; U4 g2 F- C! _  Z+ I  w( q( h
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
5 m* x) h$ ~, X! o( C  n, Z8 q' z% [$ z8 \& |8 |! `
export GOARCH=mipsle
" X; q; A: y+ j. F' ~2 H: o' N) u7 E) m) J$ I
export GOOS=linux
- q0 f2 r3 j& _' j* }7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
8 Q- u5 r$ s( ?( c. O3 u3 N8 P' j; |3 E, z0 l
go get -v  github.com/docopt/docopt-go
4 [$ v& ]) N: f1 o% O# {0 f; P+ Z/ r7 t& A
go get -v  github.com/fatedier/frp/src/models/client
  B% h4 p9 ^2 e2 n$ q6 f) ~6 H1 h0 s* ]5 }* @+ L3 J
go get -v  github.com/fatedier/frp/src/utils/log
: f4 X" F( A# c  B% ~, x0 T8 O& ?% U  D+ G) K# `7 n2 n' i/ @
go get -v  github.com/fatedier/frp/src/utils/version/ F/ A9 V: w3 D0 Q
  \. s* R; w: z  n' x
go get -v  github.com/mitchellh/gox
  x6 r9 E+ p; M. q* v9 m: S# O% t
" J+ U3 [& X) b% C. B* Y: j: Wgo get -v  github.com/rakyll/statik! k! x+ P" j, X- d
. m- d3 B. P' H. t, W% ?
make
0 _. E! r8 t8 z& r( O编译好的FPR就在frp/bin目录内。6 ~% K( Q  B: B' N3 f- S# J
开源地址:https://github.com/fatedier/frp  K2 ~3 ]" k) b, H+ G1 ~+ A& h' `
& i" i/ u+ b' v! ]0 H, E

8 u' i0 d; t6 [1 j
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-16 21:01 , Processed in 0.075232 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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