三台 VPS 加一部手机,用 Tailscale 组一张私有内网:出口节点与面板隔离实践
摘要
手里服务器一多,远程管理的方式就会先变成负担:每台机器都要记公网地址、放行端口、配防火墙规则,管理面板一旦挂在公网上,还要天天担心被扫描爆破。我的解法是给三台 VPS 和一部手机组一张 Tailscale 私有内网:机器之间用内网地址直连,手机出门走其中一台服务器做出口节点,所有管理面板只在内网里开放,公网入口能关的全部关掉。这篇文章记录这套组网的实际做法、几个容易踩的坑,以及它为什么比“每台机器各自加固”更省心。
一、为什么需要一张私有内网
我手里有三台不同云厂商的 VPS,分别在国内、首尔和香港,上面跑着导航页、密码库、监控面板、书签工具、AI 网关等十来个自托管服务。最开始的管理方式是最原始的:每台机器记一个公网地址,SSH 端口、面板端口各自放行,防火墙规则越攒越长。
这种方式有三个麻烦。第一是入口太多:每多开一个面板,公网上就多一个被扫描的目标,弱口令、未及时升级的漏洞都会变成真实风险。第二是规则难维护:换一台机器、换一个端口,就要同步改几处防火墙和反代配置,改漏一次就可能把自己锁在外面。第三是手机出门不方便:在外面想看一眼面板或者连一下内网服务,要么走公网入口,要么临时改规则,都不干净。
组一张私有内网之后,思路变了:公网只保留真正必须对外提供服务的入口,比如网站和反代的 80、443;管理类的入口全部收进内网,只对组网内的设备开放。公网攻击面一下子小了很多,日常管理反而更方便——内网地址固定,走到哪台机器都一样。
二、组网结构:三台服务器加一部手机
组网的成员很简单:三台 VPS 加一部 iPhone,全部加入同一个 tailnet。组网用的是 WireGuard 协议,设备之间默认尝试直连打洞,链路建立后流量走点对点加密通道,不经过第三方中转服务器转发业务数据。
我的分工是这样定的:
国内的机器跑监控面板和密码库,是日常最常看的两处;
首尔的机器跑导航页和代理节点,网络位置适合做出口;
香港的机器跑书签工具和 AI 网关,偏海外方向的服务;
手机作为随身终端,出门时也在这张网里。
这样分工的好处是职责清晰:哪台机器出问题,先看它在内网里通不通,再看它上面的服务,比先猜公网防火墙有没有拦要直接得多。组网之后我还专门验证过直连状态:设备之间显示的是直接连接,而不是经中转服务器 relay。这一点值得确认,因为一旦长期走中转,延迟和稳定性都会打折扣,而直连失败时面板上往往不会大声报错,只会默默变慢。
接入过程本身不复杂,真正要注意的是认证环节:tailscale up 给出的登录链接是一次性的,过期或用过一次就失效,拿到链接要立刻完成授权,拖久了只能重新生成。这个细节在官方文档里不显眼,但在实际操作里很容易浪费一次往返。
三、出口节点:让手机流量从首尔出去
组网里最实用的一个功能是出口节点(exit node)。我把首尔那台机器设为出口节点,手机在外面时把全部流量经由它出去,效果相当于手机临时“坐在”首尔机房里上网。
这个选择不是随便定的。首尔机器本身就是导航页和代理节点的宿主,带宽和稳定性经过长期验证;更重要的是,手机在外面的网络环境不可控,公共 Wi-Fi 下直接访问内网面板和管理后台并不安全,走出口节点相当于先回到自己可控的机房,再从那里访问内网服务,链路全程加密。
实际使用中有两点经验。第一,出口节点和普通组网是两回事:设备加入内网只能互访内网地址,流量默认还是走各自本地出口;只有在客户端上显式指定使用某台出口节点之后,流量才会改道。第二,出口节点本身要先确认它自己的出站是正常的,并且它的防火墙和转发配置允许这件事,否则手机一接上就会表现为“能上内网、打不开外网”,容易误判成组网故障。我的排查顺序是:先确认内网互通,再确认出口节点本机出站,最后才看客户端的出口设置。
还有一个顺带的好处:手机上的代理工具可以和 Tailscale 模块跑在同一条隧道里,代理流量和内网流量不用反复切换,日常使用时基本感觉不到这层结构的存在。
四、面板隔离:管理入口只在内网里开
组网带来的最大安全收益,是管理面板终于可以彻底离开公网。我的做法是:凡是只给自己看的面板,一律只监听内网地址,或者在反代层限制为仅内网来源可访问,公网防火墙上不给它们留任何入口。
这包括几类典型的面板:监控面板、容器管理、文件同步、服务状态页。它们共同的特点是功能强、鉴权相对简单,一旦暴露在公网,被扫描器发现只是时间问题。收进内网之后,攻击者要先拿到一台组网设备的访问权才摸得到面板,门槛完全不同。
这里有一个初次配置时容易困惑的现象:用内网地址访问面板时,浏览器可能会报证书域名不匹配的警告。这是因为证书是按公网域名签发的,而内网访问用的是内网地址或主机名,对不上号。只要确认访问的确实是自己的内网地址,这个警告是可以理解、也可以接受的,不必为了消除它而把面板重新挂回公网域名——那等于把刚关上的门又打开。
另一个原则是“面板隔离不等于取消鉴权”。内网只是多了一层门,面板自身的账号密码、管理员令牌仍然要保留。内网防的是公网扫描,防不住设备丢失、账号泄露这些场景,两层都要有。
五、日常维护:升级与故障排查的顺序
组网搭好之后,维护成本比想象中低,但有几件事值得固定下来。
首先是版本升级。Tailscale 客户端我会定期跟着官方更新,三台服务器和手机尽量保持在相近的版本,避免新旧版本之间的协议差异带来奇怪的连接问题。升级后要顺手验证两件事:设备之间的直连状态还在不在,以及出口节点切换后手机的上网是否正常。这两个检查花不了两分钟,但能避免“升级完当时没事,第二天出门才发现断了”的被动局面。
其次是故障排查的固定顺序,我现在基本按这个来:
tailscale status
tailscale ping <对端主机名>
先看状态表里对端在不在线、走的是直连还是中转,再用内网 ping 测延迟和丢包。状态表能直接回答“问题在组网层还是服务层”:如果对端根本不在线,查它的客户端和网络;如果在线但 ping 不通,查防火墙和路由;如果 ping 通但服务打不开,那才是服务本身的问题。这个顺序能省掉很多来回猜测。
最后是心态上的一点取舍:Tailscale 这类组网工具解决的是“设备之间安全互通”,它不替代 SSH,也不替代每台机器自身的防火墙和系统更新。我的 VPS 仍然保留 SSH 作为兜底通道,防火墙规则仍然按最小开放维护。组网是把管理入口收拢到一处,而不是把所有安全责任都交出去。认清这一点,就不会在组网通了之后放松其他层面的加固。
总结
回顾这套组网,收益其实来自三个很朴素的决定:第一,管理入口不再逐个挂在公网上,而是统一收进内网;第二,手机出门走一台自己可控的出口节点,而不是在公共网络里裸奔;第三,故障排查按“状态、直连、服务”分层,不再靠猜。
成本也很低:没有新增一台专门的网关服务器,没有改动任何已有服务的部署方式,只是在每台机器和手机上多装了一个客户端,配了一次网络。对于手里已经有两三台服务器、又经常需要在外面管理它们的人来说,这张私有内网可能是投入产出比最高的一步加固——它不炫技,但能让后面每一次远程操作都安心不少。
- 点赞
- 收藏
- 关注作者
评论(0)