很多人在家搭了NAS、摄像头或者个人网站,想从外面访问,结果发现根本连不上。原因很简单:你家的宽带根本没有公网IP。运营商把公网IP收走了,大家都是私有网络,外网根本找不到你的设备。那没公网IP就真的没法远程访问了吗?其实办法不少。
为什么拿不到公网IP
现在大部分家庭宽带用的是动态NAT或CGNAT技术,运营商只给你分配一个局域网IP,几十甚至上百人共用一个公网出口。这时候,外部请求不知道该转发给谁,自然无法直接访问你的电脑或设备。
反向代理:让内网主动“找”外网
既然外网进不来,那就让内网设备自己往外“搭桥”。这种思路就是反向代理。你租一台有公网IP的云服务器(比如腾讯云、阿里云的轻量应用服务器),然后让家里的设备主动连接它。这样,别人访问服务器,数据就能通过这条“隧道”转回你家。
frp 是个好工具
frp(Fast Reverse Proxy)是目前最常用的内网穿透工具之一。配置简单,支持多种协议,还能加密传输。
先在云服务器上运行 frps(服务端),配置文件 frps.ini 内容如下:
[common]bind_port = 7000 token = your_secret_token
在家里的电脑或路由器上运行 frpc(客户端),配置 frpc.ini:
[common]server_addr = x.x.x.x # 你的云服务器IPserver_port = 7000token = your_secret_token type = httplocal_port = 80custom_domains = example.com
启动后,frpc 会主动连接 frps,建立通道。你在浏览器输入 example.com,请求先到云服务器,再通过隧道打回家里的80端口,相当于把本地Web服务暴露出去了。
ZeroTier:虚拟局域网方案
如果你不想折腾端口映射,可以试试 ZeroTier。它能把不同网络的设备拉进同一个虚拟局域网,像在同一个路由器下一样互访。
安装客户端后,加入一个网络ID,设备之间就会分配到 192.168.x.x 这类虚拟IP。哪怕你在家、对方在国外,也能像局域网一样直接用 IP 访问NAS、远程桌面。
Ngrok 快速测试用
临时调试接口或者演示项目,可以用 ngrok。不用服务器,一条命令就行:
ngrok http 80
执行后会生成一个 xxx.ngrok.io 的域名,自动转发到本地80端口。适合开发测试,但免费版速度慢、域名随机,不适合长期用。
路由器插件也能搞定
有些软路由系统(比如OpenWrt)支持安装 frpc 插件。配置一次,开机自启,全家设备都能走这个通道上网。比如你在公司想连家里的智能家居,只要路由器通着,随时能连上。
实际场景举例
老王装了个监控摄像头,存在本地硬盘。他用树莓派跑 frpc,绑定云服务器。每天下班前手机打开网页,输入自己的域名,就能看到家里实时画面。整个过程不需要公网IP,也不用改路由器设置。
小李做前端开发,客户要看页面效果。他用 ngrok 把本地 3000 端口甩出去,发个链接过去,对方刷新就能看最新界面,改完代码立刻生效,不用部署到正式服务器。