【问题标题】:How to block packets received by eth0 from going up to TCP/IP stack如何阻止 eth0 接收的数据包进入 TCP/IP 堆栈
【发布时间】:2013-04-05 18:48:44
【问题描述】:

我们正在使用带有 ETH_P_ALL 的 dev_add_pack 来获取 eth1 接收到的所有以太网帧的 sk_buff 副本。有什么方法可以阻止 eth1 将所有以太网帧转发到 TCP/IP 层,同时仍然让它捕获所有帧并将其传递给我们的可加载内核模块?

【问题讨论】:

  • 刚刚发现netem可以用来造成100%的丢包,像这样:sudo tc qdisc add dev eth4 root netem loss 100%

标签: linux-device-driver kernel-module


【解决方案1】:

最好的办法是创建一个 netfilter 挂钩。而不是 dev_add_pack,它获取 sk_buff 的副本(从而允许原始 sk_buff 传播到 TCP/IP 堆栈,netfilter 挂钩将在遍历堆栈时为您提供指向原始 sk_buff 的指针,并且您的代码实际执行作为堆栈本身的回调 - 因此您可以选择阻止数据包、声明模块的所有权或做任何您想做的事情。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
相关资源
最近更新 更多