为了测量一个 DNS 服务器的放大性能,使用dig命令向能够放大的 DNS 服务器请求某个具有大量回复的域名的 ANY 资源,并利用 tcpdump 进行捕包。
dig @x.x.x.x xxx.gov ANY
tcpdump -i interface -n -vv '(udp) and (port 53) and (host x.x.x.x)'
问题1:
问题描述:收到了一个 IP 包长度为1500的分片包,但没有收到后续的 IP 分片包。
解释:这是因为除了第一个分片包,其他分片包本身并不包含 UDP 或 TCP 头部,所以也无从得知这些 IP 包的端口号,后续的IP分片包也就被过滤掉了。
解决办法:把port 53这一过滤条件删除。
问题2:
问题描述:根据RFC 1035,使用UDP的 DNS 回复包大小被限制在512字节,但是这次回复显然超过了512字节,这是为什么?
解释:x.x.x.x DNS 服务器应该实现了 DNS 扩展机制——EDNS0,EDNS0允许大于512字节的UDP回复包。DNS 响应因为引入了一些大型数据项,如 AAAA 记录,DNSSEC 信息(例如RRSIG或DNSKEY),或大型 TXT 记录,导致其大小增加。EDNS 提供更大的 UDP 载荷能力可以避免 DNS 广泛使用 TCP 进行通信,提高 DNS 的可伸缩性。关于 EDNS 详情参考RFC 6891。
问题3
问题描述:dig提示;; Truncated, retrying in TCP mode.,也就是说回复太大,被DNS服