我想监视在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
(-w
, not -v
).
是的,-Q
是一个苹果扩展。-k
是另一个苹果扩展,打印数据包元数据,如进程名,如果你是用pktap捕获。