如果是 Ubuntu 16.10
或更新的版本,则由 systemd-resolved
服务来管理 DNS,可以使用下面的命令来禁用并立即停止该服务并解除53端口的占用:文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
systemctl disable --now systemd-resolved.service rm /etc/resolv.conf
然后手动创建 /etc/resolv.conf
文件。文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
创建 /etc/resolv.conf
最后的最后,就是手动创建 /etc/resolv.conf
文件了,建议权限设置为 644
。配置示例:文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
vim /etc/resolv.conf
文件内容如下:文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
nameserver 114.114.114.114 nameserver 223.5.5.5
chmod 644 /etc/resolv.conf
当然,除了 nameserver 外,还有其他的参数可以配置,感兴趣可以 man 一下:文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
man 5 resolv.conf
文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
确保 /etc/resolv.conf
不会被覆盖
通过设置只读权限来保护 /etc/resolv.conf
文件:文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
sudo chattr +i /etc/resolv.conf
这样可以防止文件被意外修改。如果你需要更改 /etc/resolv.conf
文件,可以先取消只读属性:文章源自合一学院-https://unvmax.com/ubuntu%e9%87%8d%e6%96%b0%e5%a4%ba%e5%9b%9e%e5%af%b9-etc-resolv-conf-%e7%9a%84%e6%8e%a7%e5%88%b6%e6%9d%83-%e8%a7%a3%e9%99%a453%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8.html
sudo chattr -i /etc/resolv.conf
然后再进行编辑,完成后再次设置只读权限。
配置 NetworkManager
如果你使用 NetworkManager
管理网络连接,需要确保它不会覆盖 /etc/resolv.conf
。
编辑 NetworkManager
的配置文件:
sudo nano /etc/NetworkManager/NetworkManager.conf
在 [main]
部分添加或修改以下行:
[main] dns=none
重启 NetworkManager
:
sudo systemctl restart NetworkManager
这样就可以确保 NetworkManager
不会修改你的 DNS 配置。
检查配置
最后,确认你的 DNS 设置是否生效:
cat /etc/resolv.conf
测试 DNS 是否正常工作:
nslookup example.com
通过以上步骤,你应该能够成功地重新夺回对 /etc/resolv.conf
的控制权并解除 53 端口的占用。