(本文的内容,依据本人实际操作ubuntu18.04,修改DNS的步骤总结得出)
ubuntu上网慢的一个根本原因
就是因为/etc/resolve.conf中存在 nameserver 127.0.0.53回环地址。这是因为ubuntu操作系统未配置DNS服务器,使用应用默认的127.0.0.53,这个会导致电脑连 wifi 的时候,陷入一个不停地进行dns解析的死循环。
如果,您打开的网页过多,最终会导致uubuntu系统进入OOM(OOM,全称“Out Of Memory”,意思“内存用完了”)。电脑也会直接断电关机。
修改DNS
网上有很多修改DNS的方法,就是:
在resolv.conf内容里的
nameserver 8.8.8.8 (或者是nameserver 114.114.114.114 )
将DNS改成8.8.8.8,这个DNS服务器是谷歌公司提供的公用DNS服务器。主要为了替代ISPs或其他公司提供的DNS服务。
而114.114.114.114则是国内移动、电信和联通通用的DNS。
两个DNS服务器各有利弊。
如果。在国内上网,114的解析成功率相对来说更高,国内用户使用的比较多,速度相对快、稳定,是国内用户上网常用的DNS。
8.8.8.8是GOOGLE公司提供的DNS,该地5261址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。但其机房在国外,国内无节点。所以,更适合在国外、或者经常访问国外网站的用户使用!
我们将DNS更改为8.8.8.8或114.114.114.114之后,电脑连网则一切正常。打开网页时,不会再不停地进行dns解析........ 直到您重新启动电脑。
当您重新启动系统之后,会发现,电脑上网依旧是慢。这个时候,您在终端输入命令:
怎么回事?
原来,在您重启系统,或禁用NetworkManager 后,域名服务器被写入resolv.conf,无效的127.0.0.53也会被写入,127.0.0.53是systemd-resolve提供的,可以防止解析主机名 。
怎么办?
难道每次开机都要重新改一遍这个?
永久修改DNS的方法:
1)修改resolved.conf文件 :
大家注意,这个是resolved.conf,不是前面提过的resolv.conf。
这个resolved.conf在/etc/systemd/目录内,前面的resolv.conf在/etc目录内,注意两者的区别。
先打开终端,输入:
然后,修改resolved.conf 内容里的DNS:
找到
1 2 3 4 5 6 7 8 9 10 | [Resolve] DNS=114.114.114.114 DNS=8.8.8.8 #FallbackDNS= #Domains= #LLMNR=no #MulticastDNS=no #DNSSEC=no #Cache=yes #DNSStubListener=yes |
保存。然后,终端输入::
查看结果,终端输入:
$ systemd-resolve --status
Global
DNS Servers: 114.114.114.114
8.8.8.8
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
最后,重启系统或者network-manager。
什么?重启系统?
前面的那个/etc目录内的resolv.conf,不又是变回那个该死127.0.0.53了吗?
是的,又变回去了。这个是ubuntu17.0之后特有问题,systemd-resolvd服务会一直覆盖DNS。我们就要:
2)干掉systemd-resolvd
干掉systemd-resolvd之前,我们先要找一个人来接替他的工作。
这个人就是unbound(貌似很强大)。
Unbound是一个缓存DNS解析器,unbound是Red Hat(红帽)公司推荐的DNS软件。就是他了,接下来,打开终端:
1 2 3 4 5 | sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved sudo apt install unbound sudo rm -rf /etc/resolv.conf sudo vim /etc/NetworkManager/NetworkManager.conf |
在[main]
下面添加
dns=unbound
将dns服务替换为unbound
reboot
重启电脑即可,开机查看resolve.conf发现nameserver自动配置