很多时候,我们会有这样的需求,自己在电脑上开发的 Web 服务需要展示给其他人看,而其他人在异地,没有开发完成也不能部署上线,所以查看起来非常不方便。也有一些时候,需要远程管理家里的 NAS,树莓派 等等设备,但是没有公网 IP,无法正常访问,这个时候内网穿透这个工具就派上用场了。

实现这个功能,需要一台公网上的服务器。内网穿透的原理也非常简单,就是在本地开启一个 frp 客户端,把本地的 web 服务转发到公网服务器上,然后对方直接访问公网服务器就能看到我们本地的 web 服务了,这也就是内网穿透。

配置 frp 服务端

frp 使用 go 语言编写,支持 Linux,macOS,Windows,配置也很简单。

服务端的配置文件以 frps 开头,我们首先来配置服务端:

[common]
bind_port = 7000
vhost_http_port = 9999

只需要设置下访问的端口就可以了。启动命令为:

./frps -c ./frps.ini

配置客户端

客户端的配置文件以 frpc 开头,配置如下:

[common]
server_addr = xxx.xxx.xxx.xxx //公网服务器 ip
server_port = 7000

[web]
type = http
local_port = 8080 //本地 web 服务的端口
custom_domains = xx.xx.xx

把公网服务器 ip,本地 web 端口配上就好了。然后启动客户端:

./frpc -c ./frpc.ini

现在就可以在浏览器里使用公网服务器 IP + 9999 端口来访问本地的 web 服务了!

除此之外,frp 还可以配置 ssh 内网穿透等等,具体可以查看相关 wiki