我在用libpcap在两个 VETH 对之间传输数据包{veth1,veth1peer}和{veth2,veth2peer}并使用彼此的对等点将数据包向上注入到 veth1 或 veth2 并禁用“rp-过滤器”并启用“接受本地”特征。
我有一个在 veth2 IP 地址上监听的 python UDP 服务器,但是当我将 UDP 数据包从 veth1 发送到 veth2(通过将数据包从 veth1 注入到 veth2peer)时,嗅探器看不到该数据包...在 veth1 上运行 netcat UDP 客户端并在 veth2 上运行服务器时也出现同样的问题,服务器看不到客户端的数据包。
我感觉这个问题与 iptables 防火墙有关,但我无法确定具体的问题
答案1
问题在于 VETH 接口默认使用校验和卸载,因此转发的数据包校验和错误,并被内核忽略。在主接口{VETH1、VETH2}上运行 ethtool --offload IFACE rx off tx off 可以修复此问题。