对于服务器Linux系统来说,网络配置通常使用systemd-networkd配置,桌面Linux通常使用networkmanager。networkmanager内置了dnsmasq用于DNS基本的查询,但如果想要使用更高级的DNS查询功能,可以使用dnsmasq或systemd-resolved配合networkmanager完成。下面介绍配置systemd-resolved的方法。
1、启用systemd-resolved服务
确保你的系统正在使用networkmanager并通过以下代码启用systemd-resolved服务:
sudo systemctl enable --now systemd-resolved.service
同时停用dnsmasq等服务。
2、创建符号链接
创建符号链接,使 /etc/resolv.conf 指向 /run/systemd/resolve/stub-resolv.conf ,让systemd-resolved接管DNS解析服务,在 /etc 目录下运行以下命令:
ln -sf ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
3、编辑配置文件
在新版本的networkmanager中,可以自动检测并使用systemd-resolved,但我们可以在 /etc/NetworkManager/conf.d/ 目录下添加一个 dns.conf 的文件显式声明使用systemd-resolved,内容如下:
[main]
dns=systemd-resolved
完成后,我们可以编辑 /etc/systemd/resolved.conf 的文件中的内容,配置你喜欢的DNS服务提供商。建议配置以下选项:
DNSSEC=allow-downgrade
DNSOverTLS=opportunistic
MulticastDNS=no
LLMNR=no
Cache=yes
具体内容含义可通过 man systemd-resolved.service 参考官方文档和arch wiki的systemd-resolved部分。
文章评论