如何在OSX上捕获特定于进程的环回接口网络流量



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

我正在尝试使用苹果提供的tcpdump程序用以下命令执行此操作,按照https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/tcpdump.1.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

这似乎是苹果版本的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扩展。

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

tcpdump命令说"用pktap捕获lo0,以详细模式打印文本输出,并使用字符串"。/DumpFile01。Pcap"作为捕获过滤器"。-v为"详细打印";你指的是-w,意思是"以二进制形式写入文件名在-w标志之后的文件"吗?

"。/DumpFile01。"Pcap"不是一个有效的捕获过滤器;不幸的是,Apple的libpcap有bug (Apple bug 21698116),并且,如果您使用pktap进行捕获,其无效捕获过滤器的错误消息是不太有用的"pktap_filter_packet: pcap_add_if_info(lo0,0) failed: pcap_add_if_info: pcap_compile_nopcap() failed"。(我告诉他们如何在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

(-wnot -v).

是的,-Q是一个苹果扩展。-k是另一个苹果扩展,打印数据包元数据,如进程名,如果你是用pktap捕获。

最新更新