我想模仿特定接口(例如eth0)上的流量到达。 我有非常严格的要求(很可能这是不可能的):
为了提供一些上下文,我需要我发送的数据包遍历ip链(特别是我对netfilter钩子感兴趣) 就像到达定义的界面一样 例如,如果过滤表的FORWARD链中的iptables中存在规则,其接受规则是' -i eth0', 那么规则应匹配所请求机制发送的任何数据包。
答案 0 :(得分:1)
您需要创建一个内核模块,手动将数据包注入网络堆栈。您需要的基本步骤是:
struct net_device
(请参阅here)skb->dev
设置为步骤3中找到的net_device
netif_rx_ni(skb)
将数据包推入堆栈有一些代码在drivers/ipf/linux/pkt.c
的{{1}}第691行(pkt_tx_rx_eth
函数)执行绝大多数代码。您还可以看到内核TUN驱动程序如何执行它http://cdn.kerio.com/dwn/control/control-9.0.0-442/kerio-control-kipf-9.0.0-442-linux.tgz。
希望这有帮助!祝你好运。