nas内网穿透
家里那台NAS跑着Docker里的网穿十几个容器,从Jellyfin到Nextcloud,网穿还有一堆自动化脚本。网穿可每次出门在外想调个文件,网穿就得面对运营商分配的网穿大内网IP——那串192.168开头的地址在公网上就是个笑话。折腾了三个月,网穿试过frp、网穿ZeroTier、网穿Tailscale,网穿最后发现内网穿透这事的网穿核心就一句话:别想着把墙拆了,开扇小门就行。网穿
最早用frp,网穿租了台35块钱一年的网穿VPS。配置过程倒不复杂,网穿服务端跑个frps,网穿客户端填上服务器IP和端口映射规则。可问题出在稳定性上——那台廉价VPS动不动就丢包,高峰期传个500MB的电影能断三次。更要命的是,frp把所有流量都从VPS中转,上行带宽才1Mbps,看自己NAS里的4K视频卡成幻灯片。后来才明白,中转式穿透只适合应急,不适合日常使用。
转向ZeroTier是个意外。朋友推荐时说这玩意儿能打洞,我半信半疑地装了个客户端。结果真香——在同一城市的两条宽带之间,它居然直接建立了P2P连接,速度跑满了我家30Mbps的上传。原理不复杂:通过公共服务器握手后,尝试UDP打洞,成功后数据就不经过第三方了。但ZeroTier有个致命伤:依赖外部协调服务器。有次他们机房维护,我整整两天连不上自己的NAS,那种无力感让人抓狂。
最后逼得我自建了Tailscale的协调服务器(headscale)。过程比想象中顺利,一台树莓派4B跑着headscale容器,家里路由器上做了端口转发。现在手机、笔记本、办公室电脑都装上官方的Tailscale客户端,登录时指向自己的服务器。效果出奇的好——打洞成功率比ZeroTier高不少,因为Tailscale用了更多NAT穿透技巧,比如同时尝试多个端口和协议。即使打洞失败,也会自动走DERP中继,虽然慢点但至少通着。
有个细节值得说道:内网穿透的体验瓶颈往往不在软件,而在家庭网络的上行带宽。我家宽带下行500Mbps,上行却只有30Mbps。这意味着即使穿透成功,从外面拉NAS里的文件,峰值也就3.75MB/s。后来我把NAS上的照片和视频做了分目录存储,重要的走穿透实时访问,不重要的用syncthing定时同步到手机。这算是个笨办法,但确实解决了90%的需求。
现在这套系统跑了半年多,最满意的一次是上个月出差,在酒店用手机流量看了家里NAS里存的一部纪录片。点开播放时,缓冲只转了两秒,画面清晰流畅。那一刻觉得当初折腾的所有配置都值了。当然,也有翻车的时候——有次家里的光猫重启后IP变了,headscale的端口转发失效,我人在外地又没法手动改。后来给树莓派加了个cron脚本,每五分钟检测一次公网IP,变了就自动更新路由器配置。这种自己动手补窟窿的感觉,大概就是自建NAS的乐趣所在。
如果你也打算搞内网穿透,我的建议是:先别急着买设备或租服务器,用Tailscale官方版试试水,确认打洞成功率能不能接受。如果不行,再考虑自建headscale。至于frp那种纯中转方案,除非你要暴露HTTP服务给别人访问,否则真没必要碰。毕竟,穿透的本质是让数据少绕路,而不是找条更远的路硬走。