文章前言

这几天一直在折腾树莓派上的Docker镜像,我用的是Ubuntu官方最新的18.04.2 For RaspberryPi的系统,在docker拉取镜像的时候总是提示网络错误,有些网址也无法定位,我猜是DNS解析问题,所有在这里记录一下Ubuntu 18.04 上如何修改DNS。

我像大多数人修改DNS会先想到/etc/resolv.conf这个文件,但是每次修改重启后都会被还原,我们可以查看与一下这个文件的注释内容,有下面这么一句:

This file is managed by man:systemd-resolved(8). Do not edit.

大概意思是这个服务器由systemd-resolved 管理,所以为什么修改这里总会被还原了。

修改DNS

Ubuntu 修改DNS的正确姿势应该是修改:/etc/systemd/resolved.conf这个文件,默认配置如下:

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

把DNS前面的#去掉,修改成如下:

[Resolve]
DNS=192.168.1.102 223.5.5.5 114.114.114.114
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

就是在DNS后面跟上你要设置的DNS地址,然后保存。当然还有一种方法就是停用systemd-resolved服务,但是这个不推荐,还是上面的方法比较妥当。

最后不要忘记重启服务,命令如下:

systemctl restart systemd-resolved.service

或者直接重启系统即可生效。