您如何在 OSX 上捕获进程特定的环回接口网络流量?
how do you capture process-specific loopback interface network traffic on OSX?
我想在 OSX El Capitan 上监控两个进程 运行ning 之间的流量。服务器正在侦听 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 扩展。
sudo tcpdump -i pktap,lo0 -v ./DumpFile01.pcap
那个 tcpdump 命令说 "capture on lo0
with pktap, print text output in verbose mode, and use the string "./DumpFile01.pcap“作为捕获过滤器”。 -v
表示"print in verbose mode";你是说 -w
,意思是 "write in binary form to the file whose name comes after the -w
flag"?
"./DumpFile01.pcap" 不是有效的捕获过滤器;不幸的是,Apple 的 libpcap 有问题(Apple 错误 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
如果您想将 raw 数据包数据保存到 binary 捕获文件以便以后通过 tcpdump 或 Wireshark 或其他任何解释,请执行:
sudo tcpdump -i pktap,lo0 -w ./DumpFile01.pcap
(-w
, 不是 -v
).
而且,是的,-Q
是一个 Apple 扩展。 -k
是另一个 Apple 扩展,用于在使用 pktap 捕获时打印数据包元数据,例如进程名称。
我想在 OSX El Capitan 上监控两个进程 运行ning 之间的流量。服务器正在侦听 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 扩展。
sudo tcpdump -i pktap,lo0 -v ./DumpFile01.pcap
那个 tcpdump 命令说 "capture on lo0
with pktap, print text output in verbose mode, and use the string "./DumpFile01.pcap“作为捕获过滤器”。 -v
表示"print in verbose mode";你是说 -w
,意思是 "write in binary form to the file whose name comes after the -w
flag"?
"./DumpFile01.pcap" 不是有效的捕获过滤器;不幸的是,Apple 的 libpcap 有问题(Apple 错误 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
如果您想将 raw 数据包数据保存到 binary 捕获文件以便以后通过 tcpdump 或 Wireshark 或其他任何解释,请执行:
sudo tcpdump -i pktap,lo0 -w ./DumpFile01.pcap
(-w
, 不是 -v
).
而且,是的,-Q
是一个 Apple 扩展。 -k
是另一个 Apple 扩展,用于在使用 pktap 捕获时打印数据包元数据,例如进程名称。