Tailscale 组网三个月后,我把内网穿透和端口映射全下线了
过去两年,家里那台小主机要访问,走的是内网穿透 + 端口映射:外面一个域名,中间一个 frp 或者 nginx 反代,再加一层 Basic 认证。能用,但每次换网络环境就要修一遍配置,暴露的端口也越来越多。三个月前换成基于 WireGuard 的 mesh 组网(Tailscale),现在穿透和端口映射全部下线了。下面六条是这三个月真正值钱的结论。
一、先想清楚要解决的是"谁能访问谁",不是"怎么打通"
穿透工具的思路是把内网服务推到公网,所以每多一个服务,就多一个对外暴露面。mesh 组网的思路反过来:设备之间直接建立加密隧道,公网一个端口都不开。这个方向不同,决定了后面所有运维成本的差别。
实际收益很直接:新加一台设备不用改路由器、不用申请证书、不用等 DNS 生效,装完客户端登录同一个账号就能互相通。
二、NAT 打不通是常态,但不需要自己处理
家用宽带大多是 CGNAT,尤其是移动网络,公网 IPv4 基本拿不到,只有 IPv6。这种情况下直连失败,流量会自动回落到中继(DERP)。中继会多一跳,延迟从 20ms 变成 60~80ms,但功能完全不受影响,SSH、网页后台、文件同步都够用。
判断是否直连,一条命令就够:
tailscale status # 名字后面没有 relay 字样就是直连
tailscale ping 100.x.y.z # 显示 "via DERP(host)" 说明在走中继
如果长期走中继且延迟不能接受,可以自己部署一个 DERP 节点放到 VPS 上,中继质量立刻好转,成本只要一台最小规格的机器。
三、子网路由比"每台机器都装客户端"更省事
家里除了小主机,还有路由器、NAS、打印机、摄像头,这些设备装不了客户端。这时候用子网路由:在一台 Linux 主机上开启 IP 转发,然后宣告整个网段。
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding=1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale up --advertise-routes=192.168.1.0/24 --accept-dns=false
# 之后到管理后台 Machines 里批准这条路由,否则不生效
注意两点:宣告了不等于生效,必须在后台批准;另外客户端要接受子网路由,否则本机路由表里看不到这个网段。
四、ACL 默认是"全通",一定要自己收紧
默认策略允许所有设备互相访问所有端口。设备一多,这个默认值就成了隐患:一台被入侵的笔记本可以直接扫到家里所有机器的 22 端口。
最小可用策略长这样,按 tag 分组,只放必要的端口:
{
"tagOwners": { "tag:server": ["autogroup:admin"], "tag:client": ["autogroup:admin"] },
"acls": [
{ "action": "accept", "src": ["tag:client"], "dst": ["tag:server:22,443,8080"] },
{ "action": "accept", "src": ["tag:server"], "dst": ["tag:server:*"] }
]
}
改完在后台点一次测试,会直接告诉你哪条规则命中了,比 ssh 试错快得多。
五、DNS 名字比 IP 好用,但别和本地 DNS 打架
组网自带一个内部域名解析,设备名变成 主机名. tailnet名.ts.net,再也不用记 100.x 的地址。但如果主机本身跑着 dnsmasq 或者 ADGuard,就容易和系统解析冲突,表现是内网域名时通时不通。
稳妥做法是给这类主机加 --accept-dns=false,让它只做转发端,不做解析客户端;客户端那边再单独指定上游,问题就消失了。
六、真正省下来的是"变更成本",不是延迟
三个月下来最直观的变化不是速度快了多少,而是加设备、换网络、改端口这些事不再需要计划。以前加一台机器要开路由器、改反代、加证书、通知使用方,现在装完客户端就算接完。设备清单在后台一目了然,哪台多久没上线、走的直连还是中继,都能直接看到。
还有一条容易被忽略的:密钥轮换和吊销。设备丢了,后台点一下移除,隧道立刻失效,不用去翻路由器配置里那条 port forward 到底还开着没。
总结一句:如果需求是"给公网提供一个服务",反代和穿透仍然是标准做法;但如果需求是"让自己的几台设备互相访问",mesh 组网在安全边界和变更成本上都明显更划算。三个月里唯一还留在公网上的,只剩下一个必须对外提供的 443。
- 点赞
- 收藏
- 关注作者
评论(0)