问题现象
在ping某些域名的时候,第一个回显十几秒才出现,但时延time正常,第二个包开始回显频率正常且最终统计结果为不丢包;或是每一个回显均间隔数秒才显示,但时延time又都是正常的,且统计结果为不丢包。
抓包分析
从上述抓包结果可以看出,域名解析(序号151、154)、ICMP(序号167、170;序号186、189等)均在毫秒内即返回结果,因此域名解析及ICMP均是正常的,真正阻塞回显的序号155、158等。ping程序在成功解析域名后,试图查询IP的PTR记录(即反向解析记录,IP对应的域名/主机名)以打印回显,但经过数次查询耗时12s后均失败,方才打印结果。
问题原因
ping域名时,ping程序尝试查询IP反向解析记录失败,这一过程阻塞了icmp回显结果的打印,同时导致了发包间隔过大(默认应为1s)。但由于icmp收发包本身正常,因此不存在丢包,时延也在正常范围内。
解决方法
方法一
添加-n
参数,不进行反向解析查询:
ping -6 -n www.baidu.com
-n
参数释义如下(通过 man ping
查询):
-n Numeric output only. No attempt will be made to lookup symbolic names for host addresses.
方法二
为IP配置反向解析也可解决次问题(部分云服务提供商如华为云默认为其弹性公网IP添加了默认PTR记录),但需要注意,反向解析一般只用于如下场景:
- 电子邮件反垃圾:检查来源 IP 的 PTR 记录是否和发送邮箱域名有关,如未正确设置,则判定有较大垃圾邮件嫌疑。
- 网络故障排查工具(如 traceroute, ping, netstat 等)默认采用 DNS 反向解析获得 IP 对应的主机域名。
- 日志或监控工具通常会获取网络设备的 IP 地址,为了提供更好的可读性,可通过 DNS 反向解析查询关联的主机域名。
需要注意的是,ping结果异常并不代表服务访问异常。
与正向解析不同,反向解析不在域名提供商处配置,而是在IP提供商处配置,如需配置反向解析,可以参看如下配置方法:
IPV4地址的PTR记录
主机记录 | 记录类型 | 记录值 |
---|---|---|
1.2.3.4.in-addr.arpa | PTR | example.com |
上述记录表示配置IPV4地址4.3.2.1
(1.2.3.4
的即4.3.2.1
的反向)的反向解析记录为example.com
。
IPV6地址的PTR记录
主机记录 | 记录类型 | 记录值 |
---|---|---|
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa | PTR | example.com |
上述记录表示配置IPV6地址fe80::1
(1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f
的即fe80::1
的反向)的反向解析记录为example.com
。