使用阿里云服务器运行tailscale
后导致服务器无法连接外网, 经过检查是 DNS 的问题,最初怀疑是magic dns
问题,在 AI 的帮助下,经过一系列的排查, 又是打印 iptables 日志,又是怀疑 ip rule, 最终终于找到问题了所在。
tailscale
默认会新增一条iptables
规则-A ts-input -s 100.64.0.0/10 ! -i tailscale0 -j DROP
, 但这种做法却符合RFC 6598
,阿里云使用 CGNAT 中的地址当作内部 DNS 地址的做法不符合规范(AI 结论)
阿里云和 tailscale可以看到非常多人中招...
网上看到几个解决办法
- 手动删除 DROP 规则, 会再次生成顶部增加规则, 允许阿里 DNS 通过, 也可能会被覆盖脚本轮询(删除/增加), 增加系统维护复杂度, 随着版本更新可能失效修改服务器 DNS, 无法使用阿里云内网产品服务, 需要更换系统源使用
netfilter-mode=off
, 会导致无法访问其它节点的子网服务