用resolvconf配置DNS服务器

上手一个Deepin,在家里的环境下,网络访问特别慢。

域名解析太慢

利用ping baidu.com来检查,发现各项指标均正常,但是会在出结果前卡很久!

$ ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.  (这里卡很久!)
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=49 time=35.3 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=49 time=40.0 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=49 time=35.6 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=4 ttl=49 time=36.5 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=5 ttl=49 time=35.7 ms
^C
--- baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4030ms
rtt min/avg/max/mdev = 35.396/36.669/40.036/1.738 ms

如果换成ping 39.156.69.79,则出结果的速度会快很多。

这就是典型的DNS解析太慢的问题。

国内的DNS

一般在网上看到的方案是,改成谷歌的8.8.8.88.8.4.4实测很慢,切勿盲从。

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=51 time=1075 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=51 time=77.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=51 time=36.6 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=51 time=32.7 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=51 time=38.3 ms
64 bytes from 8.8.8.8: icmp_seq=9 ttl=51 time=35.0 ms
^C
--- 8.8.8.8 ping statistics ---
9 packets transmitted, 6 received, 33% packet loss, time 8049ms
rtt min/avg/max/mdev = 32.770/216.025/1075.922/384.863 ms, pipe 2

某些环境下,这个配置的延迟与丢包都不太理想。 所以,反正现在靠DNS也无法翻墙了,还是配置成国内的比较实在。

提供者 首选DNS 备用DNS
北京联通 202.106.0.20 202.106.196.115
南方电信 180.153.225.136
阿里 223.5.5.5 223.6.6.6
百度 180.76.76.76
腾讯 119.29.29.29 182.254.116.116
360 101.226.4.5
114 114.114.114.114 114.114.115.115

上面列出的一些公共DNS,应该有一个适合。 至于是哪一个,绝对不能看品牌,一定要亲自一个个ping过去,找到延迟低于20ms的。

安装resolvconf

默认情况下,Deepin并没有安装resolvconf,这可能是问题的关键。

sudo apt install resolvconf

一般直接使用的是/etc/resolv.conf文件。 安装了resolvconf后,不仅多了对应的可执行文件,还新增了/etc/resolvconf/这个配置目录。 其中,主要有三个配置。

一般使用的是head

修改后,执行以下命令。 它会立即更新resolv.conf文件,即刻生效。

sudo resolvconf -u

修改DNS

临时修改方案是,直接改/etc/resolv.conf文件,在前面添加。 比如孤的环境下,是添加这个:

nameserver 180.76.76.76

文件更新后,配置立即生效。 但重启后,配置失效。这个配置,每次网络服务重启时,会自动生成。

永久方案是,修改/etc/resolvconf/resolv.conf.d/head,添加一个最快的nameserver。 修改完成后,更新resolv.conf或重启network-manager生效:

sudo resolvconf -u
# or
sudo systemctl restart network

参考


相关笔记