我正在研究由 Eddie Kohler 创建的 Click 快速原型路由器 api,用于我的研究。我很难使用 RAW IP ENCAP 生成 tcpdump 文件。我知道我的链接类型不允许在 RAW IP 链接类型中捕获,因为键入 tcpdump -i (interface) -L 时唯一的链接类型列表是 EN10MB,仅此而已。
这并没有引起我的注意。有没有办法在 tcpdump 或 tshark 中捕获原始 IP 数据包(转储数据包应从 IP 标头开始并跳过链接级别标头)?
我正在研究由 Eddie Kohler 创建的 Click 快速原型路由器 api,用于我的研究。我很难使用 RAW IP ENCAP 生成 tcpdump 文件。我知道我的链接类型不允许在 RAW IP 链接类型中捕获,因为键入 tcpdump -i (interface) -L 时唯一的链接类型列表是 EN10MB,仅此而已。
这并没有引起我的注意。有没有办法在 tcpdump 或 tshark 中捕获原始 IP 数据包(转储数据包应从 IP 标头开始并跳过链接级别标头)?
tcpdump 和 tshark 都不能为设备任意选择链路层标头类型,因为设备以及 libpcap/WinPcap 不允许选择任意链路层标头类型(如tcpdump -i {interface} -L
您所告知的那样)。
大多数网络接口不支持“原始 IP”作为链路层标头类型;我不确定哪个,如果有的话。如果您想要一个包含具有该封装的数据包的捕获文件,最简单的方法可能是编写一个从接口捕获的程序,丢弃所有非 IP 数据包,并从 IP 数据包中剥离链路层标头并将它们写出来。例如,如果您在DLT_
值为DLT_EN10MB
(Ethernet) 的设备上进行捕获,只需丢弃所有没有 0x0800 或 0x86DD 作为以太网类型值的数据包,并去掉前 14 个字节的数据包这些以太网类型值并将生成的数据包写入 pcap 文件,DLT_
值为DLT_RAW
.