frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
本文教程原发时间为2016年,只测试过老版本,新版本的frp服务并未测试。本文仅做参考。
项目开源地址:
https://github.com/fatedier/frp
中文官方文档:
https://github.com/fatedier/frp/blob/master/README_zh.md
官网下载地址:
https://github.com/fatedier/frp/releases
备用下载地址:
http://pan.baidu.com/s/1bp3Nk2j
1.穿透案例一 (标准用法)
工具:一台内网主机(A:12.34.56.78),一台外网主机(B:1.1.1.1),frp程序。
本文将使用作者编译好的程序,有兴趣可以根据作者的文档对源程序自己进行编译。
下载符合自己系统架构的版本,然后解压。
其中以下四个文件需要特别留意:
frpc:客户端脚本
frpc.ini :客户端脚本配置文件
frps:服务器端脚本
frps.ini:服务器端脚本配置文件
将服务器端脚本及配置文件上传到外网主机(B)上,将客户端脚本及配置文件上传到内网网主机(A),
然后编辑服务器端脚本文件frps.ini:
1 | [common] |
编辑客户端脚本文件frpc.ini:
1 | server_addr = 12.34.56.78 # frps 所在服务器绑定的IP地址 |
配置完成后,先启动服务器端服务(启动时候会占据并且不会释放终端,可以借助screen、nohup等命令进行剥离)./frps -c ./frps.ini
ss -ntlp 检查配置文件中设置的端口是否开启,按照经验来说,终端未释放就可以说明服务已启动。
再启动客户端./frpc -c ./frpc.ini
按照经验来说,终端未释放就可以说明服务已启动。
当然也可以直接访问A主机对应B主机服务的端口测试,访问地址http://12.34.56.78:1111。
也可以访问 http://12.34.56.78:7500 查看。
2. 穿透案例二(域名泛解)
在frpc.ini和frps.ini的对应服务器段(如:[web01])下添加:custom_domains = web01.mykernel.cn
注意:域名必须存在,你自己可以解析。
解析格式如下(这种写法可以直接在配置文件中定义二级域名了,不需要单独再去域名提供商那里做额外的解析):
1 | * CNAME mykernel.cn |
当然也可以直接指定单个的二级域名进行解析。
此时访问地址可以为web01.mykernel.cn:1111,若要使用80端口,请备案域名或者使用国外主机。
3. 穿透案例三(docker部署frps)
注意:以下文件都必须放在同一个文件夹内。
1. 文件一:Dockerfile
1 | #设置继承镜像 |
2. 文件二 frps
frps运行程序,百度云链接,自取。
http://pan.baidu.com/s/1kVLhMBX
密码:ah3f
3. 文件三 frps.ini
1 | [common] |
4. 文件四 run.sh
1 | vim run.sh |
5. 编译并启动容器
1 | #编译dockerfile文件 |