之前升级系统的时候发现突然就 DNS 失效了,于是网上找了一些修改 DNS 的方法,发现很多方法修改之后都不生效,而且不管怎么改最后都会被改成 127.0.0.53 这个 DNS 地址。于是几经搜索之后终于找到一个可行的方法,本文做个记录。
检查 /etc/resolv.conf,发现之前修改的 nameserver 总是会被修改为 127.0.0.53,无论是改成啥,过段时间,总会变回来。
查看 /etc/resolv.conf 这个文件的注释,发现开头就写着这么一行:
# This file is managed by man:systemd-resolved(8). Do not edit.
这说明这个文件是被systemd-resolved
这个服务托管的。
通过 netstat -tnpl| grep systemd-resolved
查看到这个服务是监听在 53 号端口上。
查了下,这个服务的配置文件为 /etc/systemd/resolved.conf
,大致内容如下:
[Resolve]
DNS=1.1.1.1 1.0.0.1
#FallbackDNS=
#Domains=
LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
如果我们要想让 /etc/resolve.conf
文件里的配置生效,需要添加到 systemd-resolved 的这个配置文件里 DNS
配置项(如上面的示例,已经完成修改),然后重启 systemd-resolved 服务即可:
systemctl restart systemd-resolved.service
另一种更简单的办法是,我们直接停掉 systemd-resolved 服务,这样再修改 /etc/resolve.conf
就可以一直生效了。
查看结果:
systemd-resolve --status
参考: