发现每次在/etc/resolv.conf 修改DNS之后,重启服务器DNS就会重置为原始127.0.0.53。
查看 /etc/resolv.conf文件发现如下:
于是查找systemd-resolve相关资料《systemd-resolved.service 中文手册》
结果如下:
systemd-resolved 为本地应用程序提供了网络名字解析服务。 它不但提供了传统的 DNS/DNSSEC 解析与本地缓存功能,还提供了 LLMNR 与 MulticastDNS 的解析(resolver)与应答(responder)的功能。 本地应用程序可以通过三种方式提交网络名字解析请求:
DNS服务器来自于 全局配置文件(/etc/systemd/resolved.conf
)、 针对单个连接的静态配置文件(/etc/systemd/network/*.network
)(当使用 systemd-networkd.service(8) 管理网络时)、 针对单个连接的动态配置(从DHCP服务器、resolvectl(1)、其他系统服务得到的DNS服务器)。参见 resolved.conf(5) 与 systemd.network(5) 以了解 systemd 自身的DNS服务器配置。为了提高兼容性, 仅在 /etc/resolv.conf
不是一个 指向 /run/systemd/resolve/stub-resolv.conf
, /usr/lib/systemd/resolv.conf
, /run/systemd/resolve/resolv.conf
之一的软连接 的情况下,才会从 /etc/resolv.conf
读取 全局DNS服务器。
于是:
显然与上面的第二种情况类似,也就是说resolv.conf 现在归systemd管,果然找到了/etc/systemd/resolved.conf 文件:
而里面也有我想找的DNS
sudo vim /etc/systemd/resolved.conf
然后修改DNS,例如:
[Resolve]
DNS=114.114.114.114
DNS=8.8.8.8
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
然后
systemctl restart systemd-resolved.service
查看结果:
$ systemd-resolve --status
Global
DNS Servers: 114.114.114.114
8.8.8.8
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa