我想监控在OSX El Capitan上运行的两个进程之间的流量。服务器正在侦听127.0.0.1,所以我相信我需要监视lo0环回接口。
我正在尝试使用Apple提供的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
它似乎是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扩展。
答案 0 :(得分:2)
include $_SERVER['DOCUMENT_ROOT'] . "/connect.php";
tcpdump命令说“使用pktap捕获sudo tcpdump -i pktap,lo0 -v ./DumpFile01.pcap
,以详细模式打印文本输出,并使用字符串”./DumpFile01.pcap“作为捕获过滤器”。 lo0
表示“以详细模式打印”;你的意思是-v
,这意味着“以二进制形式写入名称在-w
标志之后的文件”?
“./ DumpFile01.pcap”不是有效的捕获过滤器;不幸的是,Apple的libpcap是错误的(Apple bug 21698116),并且,如果您使用pktap进行捕获,其无效捕获过滤器的错误消息是“pktap_filter_packet:pcap_add_if_info(lo0,0):pcap_add_if_info:pcap_compile_nopcap ()失败“。 (我告诉他们如何在bug中修复它;希望他们能在10.12 Big Sur中修复它,或者不管它叫什么,即使它们没有在10.11.x中修复它。)
如果要监控-w
上的流量,并让tcpdump 在终端上打印其流量的解释(而不是将其保存到二进制pcap文件中,以便以后通过tcpdump进行解释或Wireshark或其他; tcpdump和Wireshark都不能读取,作为捕获,来自tcpdump的打印输出),然后执行
lo0
如果您希望将打印的解释保存到文本文件中(同样,您无法将该文本文件提供给tcpdump或Wireshark作为捕获),请执行
sudo tcpdump -i pktap,lo0 -v
如果要将原始数据包数据保存到二进制捕获文件中,以便以后通过tcpdump或Wireshark解释,请执行以下操作:
sudo tcpdump -i pktap,lo0 -v >PrintedCapture.txt
(sudo tcpdump -i pktap,lo0 -w ./DumpFile01.pcap
,不 -w
)。
而且,是的,-v
是Apple扩展程序。 -Q
是另一个Apple扩展程序,用于打印数据包元数据,例如,如果您使用pktap进行捕获,则会显示进程名称。