找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13953|回复: 0

ngrok类似软件FRP编译教程

[复制链接]
发表于 2017-4-7 11:02:21 | 显示全部楼层 |阅读模式
一、简介
1 l/ F) b, z4 w) O) L3 Y. {; D" }( \# W
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。. D3 ~8 l$ r) F% s1 u
* H3 o, u% b2 k* E4 z7 }: z
二、GO编译环境的安装
( ~1 o5 ~" b+ O0 a4 d; \0 ~  H9 Z. L/ Q; Z% D7 }0 n. s7 i
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 l% t( o: `; f% I- f# S0 B, e

3 }7 f  }% b3 T9 |. ?1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以,并在用户文件夹下新建一个文件夹,用来存放GO1.8,本文以建立的文件夹名为GOFiles为例。
- v6 q# ]7 S, [5 C7 x6 \: y6 P( S& e+ c
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8.linux-386.tar.gz,注意一定要下载1.8版本的。
: B9 ~5 F; F+ a  h) s' q  q% b, W  j8 P+ c
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/home/dave/GOFiles(这样可以防止后期需要用root用户才能编译),请注意更换压缩包名。以用户名dave为例
' R5 n6 K) F( M) A. V- g' y0 s% D
sudo tar -C /home/dave/GOFiles -xzf go1.8.linux-386.tar.gz/ k6 b3 Z: k1 G0 `( w8 c
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。# K  J, m2 U0 \. `
9 y8 I! D  _' m3 F+ B
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
  V" `2 A- D3 s. a
6 d3 ]0 M8 W& J* j' gexport PATH=$PATH:/home/dave/GOFiles/go/bin7 a  c- j# r* E" ?4 W

: N* z0 U: H( \5 F4 b, g( n+ Bexport GOROOT=/home/dave/GOFiles/go/7 z: X$ a: j/ r% U
+ w  o  `  y/ o% o' x9 M  S
export GOPATH=/home/dave/wksp/go% m, r4 Z/ _# F# u% e
6、重启系统,进入终端,运行如下命令:* q) D4 w+ U$ d" N1 V& K, \
7 w" T; ?6 I$ V7 u$ L4 ?2 Z$ @
go version3 k! |; P0 ?4 c6 @9 ?
如果显示如下,说明GO1.8安装完成。, }1 T! v3 c2 E' c3 D

! W2 Z6 j8 y! M1 P9 i" ^go version go1.8 linux/3866 p: n: n' |2 o- z
三、编译FRP
3 w/ ~3 L  L  Y9 E% e1 T1 b. v3 T0 {6 B0 b0 {+ O4 H
1、最好先升级一下源和软件,运行一下如下命令:1 F* E4 x  l4 B/ i1 K/ B; Z

. d4 p+ o  M1 v% ]/ S1 M9 k1 O+ ^0 H2 ksudo apt update3 L* K# b, ?* M3 h

# _6 K; T$ N+ Jsudo apt upgrade) @* t5 i% Y3 e5 f4 X/ Y" Z$ b5 E
2、安装git和make。9 k7 C) P1 m0 G" W! Z

& D* |0 T. P6 lsudo apt install git make
2 @  S, K  w8 [5 r) X. w; n! T0 ~3、进入/home/dave/wksp/go/src目录
! W6 ~4 s0 u9 i% y6 K5 O! ^4 E$ l( Q$ w4 p0 _3 {$ J: s0 k+ @5 `
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)7 g' h) a2 O8 o" j2 `
- O. g" ^! z5 t) q. P; I9 {, Z
git clone https://github.com/fatedier/frp.git
' w$ W( o; U& C+ D( J( H, j5、进入frp目录/ J5 |7 l- C) I# m# S) b) h/ b
" A  h8 U+ q% e% f' n
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
+ q  r+ i: ^* R: a# a
; i7 i3 s5 H0 s  H5 g4 x9 Pexport GOARCH=mipsle* b" }. h2 M- V+ m$ N# c
7 N4 {& b' d3 o# N3 \0 @
export GOOS=linux
$ H8 p4 B$ c) `( L3 i4 Q7、逐一运行如下代码,不报错的话,即可完成FRP的编译。: ?: J+ p' A/ y0 M+ @4 c' J

- M# n- v! v) cgo get -v  github.com/docopt/docopt-go
6 O  s& U5 U' H8 ]" U$ g* Q8 P1 h3 l3 A: H$ M2 z3 k9 x
go get -v  github.com/fatedier/frp/src/models/client
: b% U9 _1 A4 y
/ e' J3 g. p  h6 l* m# E) ~' Ago get -v  github.com/fatedier/frp/src/utils/log8 U0 X( b/ I6 z* q  X9 X( h
/ [4 k6 \  e6 q4 |1 n/ G2 ~
go get -v  github.com/fatedier/frp/src/utils/version' U7 |! ]' B, ~* H; A. Z4 C

4 o" P; ?0 K* S3 p; jgo get -v  github.com/mitchellh/gox- d0 H4 L6 O% u$ ~

: T2 F: v- \0 ^7 q; R  b6 h' `go get -v  github.com/rakyll/statik" S( L2 h/ f! W9 n5 [
, N0 y( A  n4 s
make
. T) s4 q% N1 m- V' y: n编译好的FPR就在frp/bin目录内。
, b) {5 c- ?* K- W: [开源地址:https://github.com/fatedier/frp
* g- }0 Z- f$ B4 Z
7 w- f' M- N( P  O4 i' q
5 ]- x2 e: G7 `9 T
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-3-26 04:44 , Processed in 0.083456 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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