无法在 Mac 上使用 tcpdump 的 -Q

Cannot use tcpdump's -Q on Mac

DEVs-iMac:dev$ sudo tcpdump -Qout -nnSX -c 1 -w packet.pcap port 9656
Password:
tcpdump: cannot parse term at: 
tcpdump: invalid expression "out"

我正在尝试转储所有传出的 IP 数据包。它适用于 Linux 但不适用于 Mac。有人知道为什么吗?

我发现它唯一给我带来问题的 -Qout 我试图重新排列它,但无论我把它放在哪里,它都不起作用。

Linux 对比 Macos tcpdump

您不能在 Macos 内置 tcpdump 上使用 -Q 选项,因为它有来自 Apple 的附加功能。您可以通过查看它们的版本信息来了解它们是不同的软件:

Mac 版

macos-10.14$ sudo tcpdump --version
tcpdump version tcpdump version 4.9.2 -- Apple version 83.200.2
libpcap version 1.8.1 -- Apple version 79.250.1
LibreSSL 2.2.7

Linux版本

ubuntu-18.04$ sudo tcpdump --version
tcpdump version 4.9.2
libpcap version 1.8.1
OpenSSL 1.1.1  11 Sep 2018

手册页

令人困惑的是,man tcpdump 在 Macos 终端上显示 -Q,这是不可用的。比较:

备选方案

您可以根据您的架构构建 from source if direction is important to you. This may or may not 成为可能。