Ubuntu 22.04.2 LTS下如何手动将/etc/resolv.conf的DNS服务器设置为8.8.8.8(已安装dnsmasq并禁用systemd-resolved)
我明白你的困扰——已经禁用了systemd-resolved、装了dnsmasq并配置它只读取本地hosts文件,但/etc/resolv.conf总被自动改成127.0.0.1,想改成8.8.8.8却试过resolvconf的base文件和netplan都没用。咱们一步步来解决这个问题:
首先,先搞清楚你的/etc/resolv.conf到底是不是软链接,因为Ubuntu默认会用resolvconf或者systemd-resolved来自动生成这个文件,导致手动修改后被覆盖。先执行这条命令查看:ls -l /etc/resolv.conf
如果输出显示它是指向/run/resolvconf/resolv.conf之类的软链接,那咱们就需要把这个自动生成的逻辑断掉,换成静态的文件:
先备份原文件,以防万一
sudo cp /etc/resolv.conf /etc/resolv.conf.bak删除现有的软链接
sudo unlink /etc/resolv.conf创建静态的resolv.conf文件
用编辑器打开新文件:sudo nano /etc/resolv.conf
然后写入你需要的DNS服务器配置,比如:nameserver 8.8.8.8 nameserver 8.8.4.4 # 可选,加个备用DNS更稳妥写完按
Ctrl+O保存,Ctrl+X退出编辑器。锁定文件避免被自动修改
把文件设为只读权限,防止其他服务偷偷改它:sudo chmod 644 /etc/resolv.conf
之后要是需要修改,再用sudo chmod 666 /etc/resolv.conf临时放开权限就行。
另外,还要确保resolvconf服务不会再捣乱——你之前禁用了systemd-resolved,但resolvconf可能还在后台运行自动更新DNS配置。可以先检查它的状态:systemctl status resolvconf
如果显示它正在运行,直接禁用并停止:sudo systemctl disable --now resolvconf.service resolvconf.socket
至于你说修改netplan没效果,这很正常——netplan的DNS配置是给systemd-resolved或者NetworkManager这类网络管理服务用的,你已经禁用了systemd-resolved,所以netplan的设置自然不会生效。
最后再确认一下:你的dnsmasq配置里resolv-file=留空、addn-hosts=/home/users/hosts.dnsmasq的设置没问题,它只会处理本地hosts请求,不会干扰系统用8.8.8.8作为全局DNS。
备注:内容来源于stack exchange,提问作者JPX

