凌晨两点,内网我盯着屏幕上的穿透“Connection refused”发呆。那台放在家里的工具旧电脑上跑着一个爬虫程序,白天在公司想远程看一眼数据,内网却被运营商分配的穿透假公网IP死死挡住。这不是工具我第一次被内网穿透折磨,也不是内网最后一次——直到我搞懂了它到底在解决什么问题。
说白了,穿透内网穿透就是工具给躲在NAT后面的设备开一扇门。你家路由器分配给你电脑的内网192.168.x.x地址,在公网上根本不存在。穿透别人想访问你,工具只能通过路由器做端口映射,内网但运营商早就把公网IP收走了,穿透你连映射的工具机会都没有。这时候就得找个中间人——一台有公网IP的服务器,帮你把请求转进去。
我用过最粗暴的方案是frp。在云服务器上跑一个frps,家里的电脑跑frpc,把本地22端口的SSH流量打包送到云服务器上,再由云服务器转发给我。效果立竿见影,但有个致命伤:你得自己掏钱买服务器。一个月几十块的轻量云,带宽才几Mbps,传个大文件能急死人。后来我换成了Tailscale,这玩意儿思路完全不同——它不走中心服务器转发,而是通过打洞技术让两台设备直接建立加密连接。如果打洞失败,才退回到中继服务器。速度比frp快得多,而且免费版就够个人用。
但别高兴太早。打洞的成功率取决于你的网络环境。我住的小区宽带是CGNAT(运营商级NAT),相当于双重NAT,Tailscale经常打洞失败,最后老老实实走中继,速度直接打三折。后来我学聪明了,在路由器上把UPnP打开,再给设备设置静态IP,成功率才上来。这玩意儿没有银弹,每个网络环境都得自己调。
还有个容易踩的坑——安全。内网穿透等于把你家里的设备暴露到公网,哪怕有加密,也架不住端口扫描。我见过有人用frp把3389端口(Windows远程桌面)直接映射出去,密码还是弱口令,不出三天就被爆破入侵了。我的做法是:穿透端口只绑定云服务器的特定IP,再用防火墙限制来源,同时开启SSH密钥登录,密码登录直接禁用。别嫌麻烦,等被黑了再后悔就来不及了。
现在我的工作流已经离不开穿透工具了。白天在公司用VS Code Remote SSH连家里的开发机,晚上在地铁上用手机通过穿透访问路由器管理界面,看看有没有蹭网设备。最爽的一次是出差时,用穿透连回家里的NAS,把一份急需的合同文件下载到手机里,整个过程不到十秒。
选工具别跟风。如果只是偶尔用一次,Cloudflare Tunnel免费版够用,但速度不稳定;如果追求极致速度和低延迟,自建frp + 高性能服务器是王道;如果你和我一样懒得维护服务器,Tailscale或者ZeroTier值得一试。核心就一句话:你的网络环境、使用频率、对速度的容忍度,决定了哪种方案适合你。
最后提醒一句——穿透工具不是灵丹妙药。如果你家宽带本身就烂,上行带宽只有1Mbps,那再牛的穿透工具也救不了你。先测测你家上行速度,再决定要不要折腾吧。