我正在从事Eddie Kohler为我的研究创建的Click快速原型路由器api。我在使用原始IP ENCAP生成tcpdump文件时遇到困难。我知道我的链接类型不允许捕获原始IP链接类型,因为在输入tcpdump -i (接口) -L时列出的唯一链接类型是EN10MB。
这并没有打动我的心。是否有方法在tcpdump或tshark中捕获原始IP数据包(转储数据包应从IP报头开始并跳过链路级别报头)?
发布于 2012-06-24 09:28:36
tcpdump和tshark都不能任意选择设备的链路层报头类型,因为设备和libpcap/WinPcap都不允许选择任意的链路层报头类型(正如tcpdump -i {interface} -L通知您的那样)。
大多数网络接口不支持"raw IP“作为链路层报头类型;我不确定哪些接口支持。如果您希望捕获文件中包含带有该封装的数据包,最简单的方法可能是编写一个程序从接口捕获,丢弃所有非IP数据包,并剥离IP数据包的链路层报头并将其写出。例如,如果在DLT_值为DLT_EN10MB (以太网)的设备上进行捕获,则只需丢弃以太网类型值不是0x0800或0x86DD的所有数据包,并剥离具有这些以太网类型值的数据包的前14个字节,然后将生成的数据包写入DLT_值为DLT_RAW的pcap文件中。
https://stackoverflow.com/questions/11173292
复制相似问题