![使用 libPCAP 库注入的数据包在 python 套接字嗅探器和 netcat 中看不到](https://linux22.com/image/783639/%E4%BD%BF%E7%94%A8%20libPCAP%20%E5%BA%93%E6%B3%A8%E5%85%A5%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E5%9C%A8%20python%20%E5%A5%97%E6%8E%A5%E5%AD%97%E5%97%85%E6%8E%A2%E5%99%A8%E5%92%8C%20netcat%20%E4%B8%AD%E7%9C%8B%E4%B8%8D%E5%88%B0.png)
我在用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 可以修复此问题。