【问题标题】:libpcap - capture packets from all interfaceslibpcap - 从所有接口捕获数据包
【发布时间】:2012-02-18 05:24:47
【问题描述】:

我需要从 Linux 机器上的所有网络接口捕获数据包。 为了做到这一点,我打算使用pcap_open_live() API 并将“any”作为设备参数传递。

我有不同类型的端口:以太网端口(比如 eth0)和 GRE 隧道(比如 tun0) 来自不同类型接口的数据包有不同的头部格式:

  1. 来自以太网端口的数据包具有 MAC 标头
  2. 来自隧道的数据包带有 Linux“熟”捕获封装(16 字节)标头

如何查看pcap_loop() 回调处理程序我得到了什么类型的数据包头?

【问题讨论】:

    标签: linux networking network-protocols pcap libpcap


    【解决方案1】:

    您收到的所有数据包都获得相同类型的数据包头;这就是您在 pcap_t 上调用 pcap_datalink() 时得到的类型。 pcap_datalink() 返回的值是DLT_ 值,如 tcpdump.org 站点上的 Link-Layer Header Types 页面所示。​​

    如果您打开了any 设备,pcap_datalink() 将返回 DLT_LINUX_SLL,这意味着您捕获的 ALL 数据包将具有“熟”捕获标头 - 甚至来自 @ 的数据包987654328@!您必须在 eth0 而不是 any 上进行捕获,才能获取这些数据包的以太网标头。

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多