Published on

修复 systemd resolved DNS 配置

Authors
  • avatar
    Name
    ttyS3
    Twitter

solution

其实是升级后 tailscale 提示我的.

❯ tailscale status
# Health check:
#     - dns-manager: systemd-resolved and NetworkManager are wired together incorrectly; MagicDNS will probably not work. For more info, see https://tailscale.com/s/resolved-nm
#     - dns-os: setLinkDNS: Could not activate remote peer.
#     - dns: setLinkDNS: Could not activate remote peer.

/etc/resolv.conf 的内容虽然是正常的 nameserver 127.0.0.53, 但是这个文件并不是指向 systemd-resolved stub 的一个符号链接.

tailscale 检测出了这一问题. 其实产生这个问题的原因是, 我这台机器的 systemd-resolved 这个服务没有被启用 (有可能是突然断电造成的问题).

参考它的方法 https://tailscale.com/kb/1188/linux-dns/ 还不够. 我们需要启用 systemd-resolved 这个服务:

# 以下操作均以 root 身份的执行

systemctl enable --now systemd-resolved

ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

systemctl restart systemd-resolved
systemctl restart NetworkManager
systemctl restart tailscaled

misc

MagicDNS 是 tailscale 推出的一个很方便的功能, 可以让你使用域名访问你的内网资源. 而不是 IP.

❯ resolvectl status tailscale0
Link 6 (tailscale0)
    Current Scopes: DNS
         Protocols: -DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 100.100.100.100
       DNS Servers: 100.100.100.100
        DNS Domain: xxxxxxxxxxxxxxxxxxxx (此处为敏感信息)

可以看到 tailscale0 的 DNS 在启用了 MagicDNS 后, 变成了 100.100.100.100 , 它会负责解析 tailscale 相关的域名 (比如 hostname.xxxx.ts.net)