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