之前的文章<<NFQUEUE机制导致DNS请求5秒超时分析>>分析过在3.10.0-1015.el7
版本之前的内核上,conntrack
模块在插入条目时存在竞争条件,使用NFQUEUE
机制导致AAAA
请求包被丢弃,从而导致DNS
请求出现5
秒超时的现象。当时给的解决方案是可以在/etc/resolv.conf
中添加options single-request-reopen
来规避。
最近又遇到这个问题,但该规避方案并没有生效,因而做了进一步分析,发现glibc
的DNS
行为在不同响应上有所不同。
在没有NFQUEUE
机制也没有开启single-request-reopen
的环境中,访问正常解析的域名, 如:
1 | [root@dev07 ~]# time curl -s www.baidu.com -o /dev/null |
抓包结果为:
1 | 16:29:40.344792 IP 10.10.0.7.34972 > 10.10.0.2.53: 20510+ A? www.baidu.com. (31) |
可以看到resolver
同时发出A
和AAAA
两个请求。