最近在用 tailscale ,这虚拟组网工具配置起来超简单,太爱这样的工具了,在我所有的 windows 操作机和 Linux VPS 上安装都非常顺利,唯独在我的 Arch Linux 笔记本电脑上出了问题:启动 tailscale 后能连通虚拟网的 IP ,但是 DNS 有问题,无法使用 VPS 作为出口( exit node )。按照官网的说明调整了还是没用。
https://tailscale.com/kb/1188/linux-dns/#dhcp-dhclient-overwriting-etcresolvconf
最后发现是 Arch Linux 的 dhcpcd 在自动更新 resolv.conf 导致的,最终解决方法如下:
#不要让 dhcpcd 接管 resolv.conf ,增加如下配置
vim /etc/dhcpcd.conf
nohook resolv.conf
systemctl reload dhcpcd
#不要让 NetworkManager 接管 resolv.conf
vim /etc/NetworkManager/NetworkManager.conf 文件:
[main]
dns=none
systemctl reload NetworkManager
#让 systemd-resolved 接管 resolv.conf
ln -rsf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
systemctl enable --now systemd-resolved
#重启 tailscaled
systemctl restart tailscaled
问题解决。
在 Linux 平台上,能设置系统 DNS 的程序,真是不少,看来以后要多注意了。
https://tailscale.com/kb/1188/linux-dns/#dhcp-dhclient-overwriting-etcresolvconf
最后发现是 Arch Linux 的 dhcpcd 在自动更新 resolv.conf 导致的,最终解决方法如下:
#不要让 dhcpcd 接管 resolv.conf ,增加如下配置
vim /etc/dhcpcd.conf
nohook resolv.conf
systemctl reload dhcpcd
#不要让 NetworkManager 接管 resolv.conf
vim /etc/NetworkManager/NetworkManager.conf 文件:
[main]
dns=none
systemctl reload NetworkManager
#让 systemd-resolved 接管 resolv.conf
ln -rsf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
systemctl enable --now systemd-resolved
#重启 tailscaled
systemctl restart tailscaled
问题解决。
在 Linux 平台上,能设置系统 DNS 的程序,真是不少,看来以后要多注意了。