共计 916 个字符,预计需要花费 3 分钟才能阅读完成。
在 linux 下,ping 域名反应很慢,即使把域名解析出来后 ping,也是很慢; 直接 ping IP 就很快,可能是如下一个原因造成的! 很有可能是 DNS 的反向查询慢了,比如在在 ubuntu20 或 centos7 上发现随便 ping 一个域名要等 10 秒以上才有回应,如 ping www.baidu.com,而 windows 不存在这种问题!
经过抓包发现:
1、ubuntu centos 在 dns 域名解析时,进行了反向解析请求,而 dns 并未回复导致了响应延迟。
这个 dns 地址 192.168.199.1 是我家的路由器地址
规避方法:ping -n www.baidu.com 加了 - n 参数,- n 为不进行反向解析。
2、在 ubuntu centos 上将 dns 地址切换至 114.114.114.114 后无此问题,抓包显示 dns 回应了反向解析。
这个结果就表示我家的路由器可能不支持 dns 反向解析
这种解决方法就是在 DHCP 中修改分配的 DNS 地址为公网 dns 地址如 114.114.114.114 或公司内网 dns 地址,避免使用这种小路由器的 dns 地址。
解决:
1、禁止 ping 的时候使用反向 DNS 查询: ping xxx.xxx.xxx -n
2、在 /etc/host 里面添加域名和 IP 对,例如:183.232.231.174 www.baidu.com (这种临时解决)
3、修改 server 上 nsswitch.conf 文件
# vi /etc/nsswitch.conf
找到:hosts:files dns 改为:hosts:files
4、修改客户端配置文件 ssh_conf(注意,不是 sshd_conf)
# vi /etc/ssh/ssh_conf
找到:GSSAPIAuthentication yes 改为:GSSAPIAuthentication no
5、修改 /etc/resolv.conf 文件:
nameserver 8.8.8.8
nameserver 114.114.114.114
总结:
1、可能出于程序本身的情况,linux 系统上的 ping 程序带了反向解析,windows 系统上 ping 程序不带反向解析。
2、显示出 DNS 服务中反向解析配置的重要性,它影响 linux 终端 ping 域名的响应速度和使用人员的判断。