内网穿透工具frp
什么是内网穿透
互联网上两个不同的主机进行通信首先需要知道对方IP。根据IP协议,只有分配了公网IP的设备才能在互联网上通信和传输数据。但是很多家庭及公司网络环境根本没有固定的公网IP。比如在日常开发中我们需要对接第三方服务回调,由于本地环境没有公网IP,我们通常需要部署服务到有公网IP环境测试,这就严重影响了我们开发效率,毕竟很多开发都是需要多次调试的。
frp介绍
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
frp工作原理为:
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口;
- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
frp服务器
部署安装
# 下载最新版本frp服务端
wget https://github.com/fatedier/frp/releases/download/v0.46.1/frp_0.46.1_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.46.1_linux_amd64.tar.gz
# 移动到/usr/local目录
mv frp_0.46.1_linux_amd64 /usr/local/frp
查看目录结构:
tree
.
├── frpc
├── frpc_full.ini
├── frpc.ini
├── frps
├── frps_full.ini
├── frps.ini
└── LICENSE
配置
cat frps.ini
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = ****
# 授权码,请改成更复杂的
token = ****
# frp 控制面板
# frp管理后台端口,请按自己需求更改
dashboard_port = ****
vhost_http_port = 80
vhost_https_port = 443
subdomain_host = httao.cn
# dashboard 用户名密码可选,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin
启动
# 进入目录
cd /usr/local/frp
# 进入目录,指定配置文件frps.ini启动服务端程序:
./frps -c ./frps.ini
# 也可以使用后台不挂断的方式启动,并且指定日志文件
nohup ./frps -c ./frps.ini &> /var/log/frps.log &
frp管理后台
浏览器打开http://IP:dashboard_port/static/#/,输入用户名和密码可以查看连接状态:
frp客户端
部署安装
同上服务端
配置
cat frpc.ini
# 连接服务端配置
[common]
server_addr = ****
server_port = ****
token = ****
# 配置ssh服务
[ssh]
type = tcp
local_ip = ****
local_port = ****
remote_port = 自定义的远程服务器端口,例如2222
[blogs-https]
type = https
local_ip = ****
local_port = ****
subdomain = www
plugin = https2http
plugin_local_addr = ****:****
plugin_crt_path = /ssl/www.crt
plugin_key_path = /ssl/www.key
plugin_header_X-From-Where = frp
custom_domains = httao.cn
[blogs-http]
type = http
local_ip = ****
local_port = ****
subdomain = www
custom_domains = httao.cn
启动
# 进入目录
cd /usr/local/frp
# 进入目录,指定配置文件frps.ini启动服务端程序:
./frpc -c ./frpc.ini
# 也可以使用后台不挂断的方式启动,并且指定日志文件
nohup ./frpc -c ./frpc.ini &> /var/log/frpc.log &
小结
除了开源的frp,还有如下内网穿透/远控工具:
- ngrok:ngrok 也是很知名的内网穿透工具,自从2.x版本不再开源,名气在下降。ngrok官网也提供免费穿透隧道,但国内连接速度较慢。NATAPP、Sunny-Ngrok等工具基于ngrok二次开发而来;
- ZeroTier:号称零配置的内网穿透工具,提供与企业 SDN 交换机同等的高级网络虚拟化和管理功能,可以跨本地和广域网连接任何设备和程序。然而由于ZeroTier的服务器在国外,国内连接速度经常很感人,需要自行搭建Moon来解决;
- V2ray:V2ray是一个功能强大的网络平台,提供代理、反向代理、内网穿透等功能。本站之前已有V2ray相关资源: V2ray教程、V2ray高级教程:流量伪装 和 V2ray客户端下载;
- 花生壳/向日葵:相信大部分折腾过路由器的人都听说过花生壳DDNS,可能也知道向日葵远控软件。花生壳和向日葵是贝锐科技旗下的产品,注册账户后可免费体验内网穿透功能;
- TeamViewer:TeamViewer是国内外知名的远程控制、远程会议软件,额外提供文件上传下载等实用功能,比QQ远程协助好用一万遍。虽然个人版免费,但是现在TeamViewer商业化道路一去不复往,用起来越来越恶心,本人现在已经很少用;
- SAKURA FRP:基于frp的免费内网穿透工具,也有收费服务。对于这家的行为,网民褒贬不一。如果你没有自己的服务器,可以尝试一下这家。