原文:https://zhuanlan.zhihu.com/p/531974441
之前升级系统的时候发现突然就 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