背景: Ubuntu系统从16.04升级到18.04之后,发现有线网链接配置的dns服务器没有起作用。
Ubuntu的DNS配置一般写在如下文件中:
/etc/resolv.conf
但是这个文件并没有笔者给有线网配置的DNS地址,而且此时该文件被软链接到了另外的地方,并且内容是某个服务自动生成的,即使修改了这个文件的内容,也会很快被这个服务改回来,所以想要通过修改这个文件添加DNS服务器是不可行的:
➜ jxli@Ubuntu:~$ ls -al /etc/resolv.conf
lrwxrwxrwx 1 root root 29 10月 22 12:07 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
➜ jxli@Ubuntu:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
Ubuntu有很多个服务会对这个文件进行管理:
- systemd-resolved (Ubuntu 16.10 or later)
- resolvconf and rdnssd
- NetworkManager
从resolve.conf
文件的内容可以看到,笔者的Ubuntu 18.04的这个文件确实是由systemd-resolved这个服务在管理。
所以我们把它disable让NetworkManager进行管理即可:
- 停用 systemd-resolved服务
systemctl disable --now systemd-resolved.service rm /etc/resolv.conf
- 修改NetworkManager配置文件
/etc/NetworkManager/NetworkManager.conf
,在main
部分增加一行:dns=default
- 重启NetworkManager
sudo service network-manager restart
当然,我们也可以不要NetworkManeger,自己编辑这个文件来进行完全自主的DNS管理,把上面的dns=default
改为dns=none
即可。
详细了解resolve.conf
可以戳此查看。
网友评论