

























Tailscale 通过一个叫做 MagicDNS 的核心功能来管理 DNS,默认情况下处于启用状态。当满足以下条件时,Tailscale 就会接管:
--accept-dns 参数控制,默认值为 true,即接受 Tailscale 下发的 DNS。systemd-resolved 或 NetworkManager。Tailscale 会检查这些程序,如果都没有,它就会直接接管 /etc/resolv.conf。如果你想继续使用手动指定的 DNS,可以按以下优先级选择方法:
这是 Tailscale 官方建议的方案,也是现代 Linux 发行版的默认 DNS 管理方式。它能实现最佳兼容性,让 Tailscale 和你的本地 DNS 设置和谐共存。
systemd-resolved 正在运行:sudo systemctl enable --now systemd-resolved
sudo systemctl restart systemd-resolved
systemd-resolved 配置:sudo nano /etc/systemd/resolved.conf
取消注释并填写你希望系统使用的 DNS 服务器,例如:[Resolve]
DNS=8.8.8.8 223.5.5.5
/etc/resolv.conf 指向 systemd-resolved 管理的存根文件。sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved
sudo systemctl restart tailscaled
配置完成后,你可以通过 resolvectl status 命令来查看 DNS 设置是否生效。
如果你不希望依赖 systemd-resolved,可以直接在本机禁用 Tailscale 对 DNS 的修改。
执行以下命令(重启失效):
sudo tailscale set --accept-dns=false
这条命令会立即生效,Tailscale 将停止接管你的 DNS 设置,/etc/resolv.conf 也会恢复为你之前手动指定的值。
或者永久生效(写入配置)
sudo tailscale set --accept-dns=false
sudo systemctl restart tailscaled
配置结果说明:
/etc/resolv.conf 文件。100.100.100.100) 仍然会在后台运行。*.ts.net 域名指向 100.100.100.100。查看是否成功:tailscale dns status
运行后输出信息非常明确:
/etc/resolv.conf 文件(⚠️ 不推荐)这是一种粗暴的方式,通过给文件添加“不可修改”的属性来阻止任何程序写入。这可能会在未来导致难以排查的问题,仅作为最后的备选方案。
# 1. 先完成你的手动配置
sudo nano /etc/resolv.conf
# 2. 锁定文件,阻止写入
sudo chattr +i /etc/resolv.conf
# 3. 如果需要修改,必须先解除锁定
sudo chattr -i /etc/resolv.conf
⚠️ 重要警告:Tailscale 官方不推荐这种做法,它可能会在检测到无法写入配置文件时,触发“Linux DNS configuration issue”之类的警告信息,并且可能导致你难以享受到 Tailscale 的高级 DNS 功能。
综合来看,方案一(使用 systemd-resolved) 是最符合 Linux 生态惯例、也最受 Tailscale 官方支持的做法,能确保系统长期稳定。方案二(--accept-dns=false)同样有效,但会牺牲 MagicDNS 的便利性。方案三则风险较高,通常不建议使用。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。