本文针对抓包工具在处理阶段的性能瓶颈,指出关闭 DNS 与端口解析可显著降低丢包率,给出 tcpdump、Zeek、Wireshark 三款工具的具体关闭方法。
关闭 DNS 解析:
tcpdump 实测显示,开启 DNS 查询时同一 ICMP 报文仅被过滤器接收 51 个,关闭后升至 82 个;每次查询耗时数毫秒至数秒,且返回的主机名如 a104-64-214-98.deploy.static.akamaitechnologies.com 无法还原原始域名 www.whitehouse.gov。tcpdump 加参数 -n 即可禁用;Zeek 默认不解析主机名;Wireshark 需在“视图/名称解析”取消“解析网络地址”,或在捕获选项中取消“解析网络名称”。
关闭端口解析:
端口号到服务名的映射仅读取 /etc/services,开销远小于 DNS,但累积量大时仍会消耗 CPU 周期。三款工具均建议同步关闭:tcpdump 再加 -n 即可(-nn 同时禁用端口与 DNS);Zeek 默认不解析端口;Wireshark 在同一菜单取消“解析传输层端口号”。原文未给出具体量化数据,但原则是避免任何非必要的查表操作。
实测对比与取舍:
示例中同一 ping 报文,关闭 DNS 后内核丢包保持 0,过滤器接收包数从 51 增至 82,说明解析延迟直接导致捕获窗口内可处理报文减少。工程师应在高流量或长时间抓包场景默认启用 -n/-nn,仅在离线分析且确需主机名时再开启解析;Zeek 与 Wireshark 的默认行为已偏向性能,只需确认未被误开启即可。
对运维与网络工程师而言,在抓包命令或配置中固化“禁用解析”选项,能以近零成本换取更完整的报文留存,尤其在排查突发丢包、DDoS 溯源等时效敏感场景下,避免因解析延迟造成关键报文缺失。
原文: APNIC Blog(2020-11-09)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog