日常记录

阿里云安装tailscale域名解析冲突解决

缘由

首先,Tailscale是一个虚拟专用网络工具,实现用户态的wireguard算法,它可以帮助您安全地连接到其他计算机和设备。

在阿里云和内网上安装Tailscale,使用阿里云节点可以与本地内网互联。但在阿里云安装好tailscale之后,会遇到域名解析冲突的问题,表现为阿里云节点无法正常访问内部资源(如apt包、内部docker等)。

这是因为阿里云使用了自己的DNS服务器来解析内部域名,相关的内部DNS部署在阿里云自己的100网段,巧了,tailscale自己的内网也是100开头的网段,而且tailscale的免费使用不支持自定义私网网段。

这里貌似无解了,但巧用linux的nptables防火墙来指定特定的流量走向,可以相对完美地解决问题。为什么说是这个方案是相对完美呢,那就是tailscale暂时找不到方案可以指定启动后运行指定的防火墙命令,只能外挂命令。

当然,钞能力强可以直接付费方案或者自建headscale控制服务器。

解决方案

三个方案

1、使用tailscale的付费方案,可以自定义私有网段

2、修改iptable,禁止DNS请求走tailscale,两条命令解决问题

3、使用headscale自建中心化控制服务器

这里选思路:把送往100.64.0.0/10的流量都不让往tailscale0接口送,其他地址则允许从tailscale0接口出,还有一个input放开drop,这样就解决了。

iptables -A ts-forward -s 100.64.0.0/10 -o tailscale0 -j DROP
iptables -A ts-forward -o tailscale0 -j ACCEPT
iptables -D ts-input -s 100.64.0.0/10 ! -i tailscale0 -j DROP

这样再运行完apt update,就可以正常更新了。

剩下的就是各自把这三行代码设置到生效中,我目前还是手工生效,因为阿里云的节点主机,一启动就很少重启,很少需要操作这三行代码。

当然,也可以借助iptables-persistent这个软件包来实现规则持久化。

最后

tailscale相比于zerotie、openvpn等来说,好用太多。相比frp、n2n来说又足够小白化,而且稳定性也比它们要好。

从稳定性来看,Tailscale 又比 Netmaker 略胜一筹,基本上不会像 Netmaker 一样时不时出现 ping 不通的情况,这取决于 Tailscale 在用户态对 NAT 穿透所做的种种优化,他们还专门写了一篇文章介绍 NAT 穿透的原理, 中文版翻译自国内的 eBPF 大佬赵亚楠,墙裂推荐大家阅读。

Exit mobile version