1

我想监控在 OSX El Capitan 上运行的两个进程之间的流量。服务器正在监听 127.0.0.1,所以我相信我需要监控 lo0 环回接口。

根据https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/tcpdump.1,我正在尝试使用Apple提供的tcpdump程序通过以下命令执行此操作。 html

sudo tcpdump -i pktap,lo0 -v ./DumpFile01.pcap

但这失败了:

tcpdump: data link type PKTAP
tcpdump: listening on pktap,lo0, link-type PKTAP (Packet Tap), capture size 262144 bytes
tcpdump: pktap_filter_packet: pcap_add_if_info(lo0, 0) failed: pcap_add_if_info: pcap_compile_nopcap() failed

它似乎是 Apple 的 tcpdump 版本:

tcpdump --version
tcpdump version 4.7.3 -- Apple version 66
libpcap version 1.5.3 - Apple version 54

从上面的 tcpdump 手册页和https://dreness.com/blog/archives/829我想我应该能够运行以下命令来查看给定进程的数据包:

tcpdump -i pktap,lo0 -Q "proc =myserver"

有人在这方面取得成功吗?我会尝试最新的 tcpdump,但我从手册页了解到“-Q”是 Apple 扩展。

4

1 回答 1

4

sudo tcpdump -i pktap,lo0 -v ./DumpFile01.pcap

该 tcpdump 命令显示“lo0使用 pktap 进行捕获,以详细模式打印文本输出,并使用字符串“./DumpFile01.pcap”作为捕获过滤器”。 -v表示“以详细模式打印”;你的意思是-w,这意味着“以二进制形式写入名称在-w标志之后的文件”?

“./DumpFile01.pcap”不是有效的捕获过滤器;不幸的是,Apple 的 libpcap 存在错误(Apple 错误 21698116),并且,如果您使用 pktap 进行捕获,则其针对无效捕获过滤器的错误消息是信息量不大的“pktap_filter_packet: pcap_add_if_info(lo0, 0) failed: pcap_add_if_info: pcap_compile_nopcap () 失败的”。(我告诉他们如何在 bug 中修复它;希望他们会在 10.12 Big Sur 或其他任何名称中修复它,即使他们没有在 10.11.x 中修复它。)

如果您想监视 上的流量lo0,并让 tcpdump在终端上打印其对流量的解释(而不是将其保存到二进制 pcap 文件以供 tcpdump 或 Wireshark 或其他任何东西稍后解释;tcpdump 和 Wireshark 都无法读取,作为捕获,从 tcpdump 打印输出),然后执行

sudo tcpdump -i pktap,lo0 -v

如果您希望将打印的解释保存到文本文件中(同样,您不能将该文本文件作为捕获提供给 tcpdump 或 Wireshark),请执行

sudo tcpdump -i pktap,lo0 -v >PrintedCapture.txt

如果要将原始数据包数据保存到二进制捕获文件以供 tcpdump 或 Wireshark 或其他任何东西稍后解释,请执行以下操作:

sudo tcpdump -i pktap,lo0 -w ./DumpFile01.pcap

( -w不是 -v)。

而且,是的,-Q是 Apple 的扩展。 -k如果您使用 pktap 进行捕获,它是另一个用于打印数据包元数据(例如进程名称)的 Apple 扩展。

于 2015-10-26T19:15:50.543 回答