tcpdump 返回数据包前延迟一秒

dla*_*ced 6 bash wifi tcpdump linux-networking

使用 Ubuntu,我试图将 tcpdump 嗅探与来自客户端设备的自我识别“ping”同步。问题是由于 tcpdump 中的内置延迟,很难获得精确的启动和停止。这是我的脚本中的关键行:

sudo timeout .5s tcpdump -i wlan0 -e
Run Code Online (Sandbox Code Playgroud)

当我设置超时以在半秒后停止 tcpdump 时(如我的示例),没有数据包返回。事实上,任何低于 1.1s 的值都无法返回数据包(而 1.1 和更长的时间效果很好)。

我尝试添加 -n 参数来抑制 DNS,但这没有任何区别。我还用两个完全不同的 wifi 卡(英特尔迅驰和 TP-Link N900)尝试了这个,以确保它不仅仅是一个硬件“功能”。

我不是开发人员,但我对“延迟”、“延迟”和“超时”的 tcpdump 源代码进行了 grep 搜索,但没有出现任何似乎是负责任的。

有任何想法吗?

kas*_*erd 2

默认情况下,tcpdump 将尝试对正在通信的 IP 地址执行反向 DNS 查找。一秒的延迟听起来像是一个合理的超时,以防 tcpdump 无法获得对此类 DNS 查找的响应。

添加-n到 tcpdump 命令行将禁用 DNS 查找。如果将命令更改为以下内容是否有帮助:sudo timeout .5s tcpdump -ni wlan0 -e