搜索了Ubuntu下设置DNS的相关资料,我们发现,在 Ubuntu 18.04 之前,可以使用简单方法更换DNS;而在 Ubuntu 18.04 之后,则变得更加困难。以下是根据两种情况总结出的两个办法。
Ubuntu 16.04 或者以前的版本
方法一
通过 /etc/network/interfaces
,在它的最后增加一句:
dns-nameservers 8.8.8.8
8.8.8.8是Google提供的DNS服务,这里只是举一个例子,你也可以改成其他的DNS。重启后DNS就生效了,这时候再看 /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
nameserver 8.8.8.8
方法二
通过修改:/etc/resolvconf/resolv.conf.d/base
(这个文件默认是空的)
在里面插入:
nameserver 8.8.8.8
nameserver 8.8.4.4
如果有多个DNS就一行一个。
修改好保存,然后执行
resolvconf -u
再看/etc/resolv.conf
,最下面就多了2行:
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
nameserver 8.8.8.8
nameserver 8.8.4.4
可以看到我们的设置已经加上了,然后再ping一个域名,当时就可以解析了,无需重启。
Ubuntu 18.04 或者以后的版本
修改 /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8
FallbackDNS=223.5.5.5
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes
我们添加 DNS=8.8.8.8,FallbackDNS=223.5.5.5
作为我们的DNS服务器。
重启 systemd-resolved 服务
sudo systemctl daemon-reload
sudo systemctl restart systemd-resolved.service
将 /etc/resolv.conf 链接到 /run/systemd/resolve/resolv.conf
sudo mv /etc/resolv.conf /etc/resolv.conf.bak
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
使用 dig 命令验证 DNS 的更改
dig www.wrmit.com
若提示 dig: command not found
,可以安装一下工具包:
# Ubuntu
sudo apt-get install dnsutils
# Debian
apt-get update
apt-get install dnsutils
# Fedora / CentOS
yum install bind-utils