内网穿透工具 frp

frp 是一种快速反向代理,可帮助您将 NAT 或防火墙后面的本地服务器暴露给 Internet。截至目前,它支持TCP和UDP,以及HTTP和HTTPS协议,其中请求可以通过域名转发到内部服务。

更早些时候我们用的是 ngrok,下面将对比其区别及使用场景。

frps

https://github.com/fatedier/frp

需要有自己的服务器,安装服务端,配置较为简单。

客户端下载地址

https://github.com/fatedier/frp/releases/tag/v0.37.0

MAC:frp_0.37.0_darwin_amd64.tar.gz
Window x64:frp_0.37.0_windows_amd64.zip

客户端配置

subdomain

[common]
server_addr = frp.dev.*.com
server_port = 7070
protocol = kcp # 传输更快但更消耗带宽

token = ********

[cs]
type = http
local_port = 443
use_compression = true # 压缩
subdomain = cs # 配置次级域名

custom_domains

[common]
server_addr = ..com
server_port = 5443
protocol = tcp

token = ********

[web]
type = http
local_ip = 127.0.0.1
local_port = 443
use_compression = true
custom_domains = ..com # 可与server_addr一致

客户端启动

./frpc -c ./frpc.ini

后台管理

http://..com:${backend_port}
admin ***

frps-onekey

https://github.com/MvsCode/frps-onekey

一键安装命令

1
2
3
wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

卸载

./install-frps.sh uninstall

更新

./install-frps.sh update

服务管理器

/etc/init.d/frps {start|stop|restart|status|config|version}
启动 frps start

ngrok

https://github.com/inconshreveable/ngrok
https://ngrok.com/

无需自己服务器,映射到 ngrok.com 子域上

我可以用 ngrok 做什么?

将 NAT 或防火墙后面的任何 http 服务暴露给 ngrok.com 子域上的互联网
在 ngrok.com 的随机端口上将 NAT 或防火墙后面的任何 tcp 服务暴露给互联网
检查通过隧道传输的所有 http 请求/响应
重播通过隧道传输的任何请求

仅能映射到 ngrok.com

ngrok 有什么用?

临时共享仅在您的开发机器上运行的网站
在不部署的情况下在黑客马拉松上演示应用程序
通过允许您重放这些请求来开发任何使用 Webhook(HTTP 回调)的服务
通过检查 HTTP 流量来调试和理解任何 Web 服务
在防火墙与 Internet 隔离的机器上运行网络服务

总结

  1. 企业开发者、或有私人服务器的建议部署 frp,可定向优化。
  2. 个人开发者、没有服务器的可以用 ngrok。
    由于域名是第三方的,有诸多不便。

内网穿透工具 frp
http://example.com/20210713-内网穿透工具frp/
作者
csorz
发布于
2021年7月13日
许可协议