问题:

部分异常域名如:

gs-loc.apple.com

ios.synacast.com

stream16.qqmusic.qq.com 系列

19-courier.push.apple.com系列


部分域名返回servfailed(案例)_第1张图片

如上图,这些域名应答失败率接近100% ,在终端nslookup 也无结果。但是在后台递归服务器上,dignslookup均正常。

 

说明及处理方法:

客户端域名应答失败,实际上是客户端收到了servfailed应答,没有收到正常应答。

局方协助我们进行客户端抓包也证实了这个结果。

 

而且这个应答失败主要为缓存返回局方管理员将其中一个域名gs-loc.apple.com 添加为不缓存域名中后,该域名可以正常解析,不返回失败。

部分域名返回servfailed(案例)_第2张图片


通过查询缓存状态,发现这些故障域名缓存内容都是servfailed。没有能够缓存正常内容。

 

故障初步处理

初步分析判断确认该故障为域名缓存刷新有问题。这些故障域名只能缓存servfailed应答,而不能缓存正常应答。

 

于是临时关闭了缓存系统对于servfailed应答的缓存。

关闭servfailed应答的缓存后,等于不缓存这些故障域名,这些故障域名的请求都是穿透缓存,由后台递归服务器应答

 

经过处理后,这些域名能够正常应答,不再返回servfailed

 

故障定位

经过局方人员配合进行现网抓包测试及公司内部测试,我们查明是采集机网卡驱动问题。

 

现网采集机网卡驱动针对DNS进行了优化,对小于512字节的DNS报文进行优化高速处理,但是对于超过512字节的DNS报文处理算法有问题,会出现无法正常缓存的情况,但是可以正常透传。

 

现网出现应答错误的几个域名都是正常应答内容超过512字节的情况,因此系统无法正常缓存。

而且原来系统打开了域名servfailed缓存,因此这些域名正常应答无法缓存(超过512字节),但是如果偶尔出现servfailed应答,反而被缓存(因为servfailed应答报文小)。

 

后来关闭servfailed缓存后,这些域名虽然无法缓存,但是能够正常透传,就不会出错了。

 

故障解决

通过采集机驱动程序的更新,可以解决这个问题。

 

每台采集机驱动程序更新时,需要先旁路采集机,然后更新驱动程序,重启服务器,再重新串接,整个过程在5分钟左右。

 

目前已经更新驱动解决该问题。