【问题标题】:Filtering encapsulated ipv6 packets with tcpdump使用 tcpdump 过滤封装的 ipv6 数据包
【发布时间】:2017-12-13 21:39:10
【问题描述】:

我有带有 Next 标头 == 0x29(41) 的 IPv6。我想通过主要 IPv6 帧内的 IPv6/TCP 帧的目标地址和端口来过滤数据包。

tcpdump -B 1000000 -pnni 任何“ip6[6] == 0x29”

00:24:33.461496 IP6 xxxx > yyyy: IP6 zzzz.45388 > hhhh.443: Flags [.], ack 809205, win 2636, options [nop,nop,TS val 1395182923 ecr 142811329], length 0
00:24:33.461505 IP6 xxxx > yyyy: IP6 zzzz.45388 > hhhh.443: Flags [.], ack 809205, win 2636, options [nop,nop,TS val 1395182923 ecr 142811329], length 0

可以用 tcpdump 做到这一点吗?我在 pcap 库文档中找不到任何信息。

【问题讨论】:

  • ip6[6:1] == 0x29 and (ether[64:4] == 0x0000 and ether[68:4] == 0x0000 and ether[72:4] == 0x0000 and ether [76:4] == 0x0001) 或 (ether[80:4] == 0x0000 and ether[84:4] == 0x0000 and ether[88:4] == 0x0000 and ether[92:4] == 0x0001 ) 这行得通,但它不是最好的解决方案。

标签: ipv6 pcap tcpdump libpcap


【解决方案1】:

Alexander 在笔记中提到的解决方案是你今天能做的最好的解决方案。问题是您现在无法在 tcpdump/BPF 下使用带有 IPv6 的 tcp 宏来引用 TCP 端口。

但是,没有必要将所有偏移量都基于以太网帧头。您可以使用 IPv6 标头作为起点。请记住,您可能在 IPv6 标头和 TCP 标头之间存在路由、分段或其他标头,这使得这一切都非常具有挑战性。

坦率地说,编写带有 Scapy 或 libpcap 绑定的 Python(或类似)脚本来打开数据包捕获、IPv6 过滤以及为更高级别的 TCP 端口编写选择逻辑会更容易。

【讨论】:

  • 我检查了一个 tshark,它具有相同的捕获过滤语法。显示过滤器可以处理 ipv6-ipv6 隧道。
猜你喜欢
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
相关资源
最近更新 更多