编译在路由器上可以运行的FRP
来源:互联网 发布:美国风投公司排名矩阵 编辑:程序博客网 时间:2024/06/04 20:08
一、简介
众所周知,国内运营商的家用宽带大多不提供公网IP,这就导致家中或公司中的设备无法通过外网直接访问,这时就需要我们利用内网穿透工具,如花生壳、Ngrok等。最近GitHub上出现了一款叫做FRP的内网穿透工具,使用非常简便(GitHub地址:FRP-内网穿透工具)。由于我刚开始关注该软件时,作者并不提供编译好的mipsle架构版本(如newifi、斐讯k1、小米路由3等均为此架构),而我又想在路由器上运行FRP,所以只能硬着头皮研究GO程序的编译,由于自己基础薄弱,进展很慢。通过几天的研究和众位大神的指点,终于搞定了,然而搞定之后,我却发现作者发布新版本的同时,提供了编译好mipsle版本,哎。不过还是把这个教程发布出来,就算是给自己留个笔记了。
二、GO编译环境的安装
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的安装配置。
1、首先要先准备一个干净的Linux操作系统,Ubuntu啊,Debian啊,都可以。
2、到https://golang.org/dl/的最下面下载对应你CPU型号的压缩包,我的虚拟机是32位CPU的,所以下载的是go1.8beta2.linux-386.tar.gz,注意一定要下载1.8版本的。
3、进入压缩包的下载目录,运行如下命令解压,将GO1.8安装到/usr/local,请注意更换压缩包名。
sudo tar -C /usr/local -xzf go1.8beta2.linux-386.tar.gz
4、在用户文件夹下建立一个文件夹,命名自选(本文以用户名dave,文件夹名wksp为例,读者请注意替换为自己的名称)。在wksp下建立一个go文件夹,并在go文件夹内建立三个文件夹,分别命名为src、pkg、bin,请注意这三个文件夹的名称不能修改,必须如此。
5、修改/etc/profile环境变量,在最后加入如下代码(读者请注意修改路径):
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=/home/dave/wksp/go
6、重启系统,进入终端,运行如下命令:
go version
如果显示如下,说明GO1.8安装完成。
go version go1.8beta2 linux/386
三、编译FRP
1、最好先升级一下源和软件,运行一下如下命令:
sudo apt update
sudo apt upgrade
2、安装git。
sudo apt install git
3、进入/home/dave/wksp/go/src目录
4、运行如下代码下载FRP源码(建议科学上网,不然很慢)
git clone https://github.com/fatedier/frp.git
5、进入frp目录
6、运行如下代码设置目标架构和系统,我的路由器为mipsle架构,Linux系统,如果要编译其他架构和系统的,请替换为相应命令。
export GOARCH=mipsle
export GOOS=linux
7、逐一运行如下代码,不报错的话,即可完成FRP的编译。
go get -v github.com/docopt/docopt-go
go get -v github.com/fatedier/frp/src/models/client
go get -v github.com/fatedier/frp/src/utils/log
go get -v github.com/fatedier/frp/src/utils/version
go get -v github.com/mitchellh/gox
go get -v github.com/rakyll/statik
go fmt ./src/...
go fmt ./test/echo_server.go
go fmt ./test/http_server.go
go fmt ./test/func_test.go
go build -o bin/frps ./src/cmd/frps
go build -o bin/frpc ./src/cmd/frpc
go build -o test/bin/echo_server ./test/echo_server.go
go build -o test/bin/http_server ./test/http_server.go
编译好的FPR就在frp/bin目录内。
具体FRP的用法,可以参考GitHub页面内的中文说明。或者可以加qq群261807771参与讨论,谢谢。
- 编译在路由器上可以运行的FRP
- 编译一个可以运行在openwrt上的c程序
- 编译一个可以运行在openwrt上的c程序
- 编译一个可以运行在openwrt上的c程序
- 编译一个可以运行在openwrt上的c程序
- blueZ-5.37 交叉编译可以在arm上运行
- 如何编译可以在arm平台上运行的可执行程序?
- 编译一个可以在Android系统上运行的可执行程序
- Access 数据库 在64位的windows运行时,需要在编译时,编译为x86结构,既可以在32位64位的操作系统上运行
- servlet在本地服务器上可以运行,在云服务器上不能运行的解决方法
- 使用交叉编译编译在OpenWRT上运行的程序
- Windows7可以运行在低配置的pc上
- 5 款 Photoshop的替代品,可以在Linux上运行
- 在VC上可以运行的烟花代码~
- 经验总结---编译出可以在Android上执行的可执行文件
- 在windows上可以运行的java程序移植到liunx上运行出错
- TimesTen可以运行在VMware上吗?
- 在Windows上创建可以运行在U盘上的Ubuntu系统
- 传智播客:为什么未来是全栈工程师的世界?
- 拦截器,避免重复提交
- Linux查看日志常用命令
- lynx
- vbs教程《模拟按键》
- 编译在路由器上可以运行的FRP
- Java随机数
- Java类和类成员、方法的访问权限
- 3.java面向对象语法学习(部分2-抽象类,接口,内部类)
- 在hibernate框架中配置显示sql语句
- 强大的vim配置,让编程更随意
- Web前端性能优化进阶路
- 在Python中临时地import自己写的.py模块
- web前端之精通dojo四:JavaScript中的语言扩展