UbuntuLinux生产服务器优化日记

Ubuntu DNS服务不生效

2018-11-26  本文已影响329人  胡涂笔记

背景: 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有很多个服务会对这个文件进行管理:

  1. systemd-resolved (Ubuntu 16.10 or later)
  2. resolvconf and rdnssd
  3. NetworkManager

resolve.conf文件的内容可以看到,笔者的Ubuntu 18.04的这个文件确实是由systemd-resolved这个服务在管理。
所以我们把它disable让NetworkManager进行管理即可:

  1. 停用 systemd-resolved服务
    systemctl disable --now systemd-resolved.service
    rm /etc/resolv.conf
    
  2. 修改NetworkManager配置文件/etc/NetworkManager/NetworkManager.conf,在main部分增加一行:
    dns=default
    
  3. 重启NetworkManager
    sudo service network-manager restart
    

当然,我们也可以不要NetworkManeger,自己编辑这个文件来进行完全自主的DNS管理,把上面的dns=default改为dns=none即可。

详细了解resolve.conf可以戳此查看

上一篇下一篇

猜你喜欢

热点阅读