Tailscale DNS 配置小记
今天尝试在手机上下载 tailscale 访问内网设备,发现了一个问题。手机默认的 dns 解析器只会把 ts.net 的域名和我的设备关联,可是我内网服务器使用的域名并不是这个(假设是 a.example.com)。
我希望将我服务器使用的域名 a.example.com 关联到我的服务器。
首先想到的自然是改 hosts。但是我的手机没有 root,自然也不方便改。
其次是 Virtual Hosts 之类的软件,但是这个和我的 tailscale 无法同时工作。
然后考虑在 tailscale 中添加 dns 记录,发现首先你需要一个自己控制的服务器。这个好办,直接把我那台服务器装上 dnsmasq,监听 tailscale 设备即可。
然后在 dnsmasq 中添加 dns 记录。首先尝试添加 cname,关联到 ts.net 的域名,但是虽然日志显示有查询,但是电脑和手机仍然显示没有记录。猜测是查询不到 ts.net 的记录(我也不知为什么),然后直接改成了 ip 地址,然后发现 dnsmasq 居然还读取了 /etc/resolv.conf,forward 到了本地的 systemd-resolve。加上 no-resolv 之后就神奇的可以用了。
此外还有一个遗留问题。之前从 NetworkManager 迁移到 systemd-networkd 时,tailscale 的 dns 服务器怎么都加不上,因此我手写了一个配置文件告诉 networkd 在 tailscale0 设备上要使用 tailscale 的 dns 服务器查询。缺点就是现在 resolved 显然并不知道那些询问要问 tailscale 的 dns 服务器(也就是,Dns Domains 没有设置)。然后现在删掉了那个文件似乎一切有可能正常运行了。Dns Domains 也回来了。神奇。