Ubuntu 下永久设置 DNS 的方法

搜索了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
上一篇
下一篇