Hasty Briefsbeta

双语

eBPF Mystery: When is IPv4 not IPv4? When it's pretending to be IPv6

a year ago
  • #IPv6
  • #networking
  • #eBPF
  • 文章讨论了一个eBPF程序,该程序设计用于重定向单个程序或Docker容器的53端口DNS请求。
  • 初始设置使用BPF_CGROUP_INET4_CONNECT来检查和重定向来自cgroup内部的流量。
  • 当dotnet CLI无限期挂起时出现了一个问题,尽管机器不支持IPv6,却产生了被阻止的IPv6消息。
  • 调查发现dotnet使用DualMode套接字,这种套接字通过IPv6套接字处理IPv4流量,将IPv4地址编码在IPv6地址中。
  • 解决方案包括更新eBPF程序以处理IPv4映射的IPv6地址,通过从IPv6套接字解析出IPv4地址。
  • 还需要在出口eBPF程序中做额外调整,以区分真正的IPv6流量和IPv4映射的IPv6流量。