模拟流量到达特定接口
Emulate arrival of traffic on specific interface
我想模拟特定接口(例如 eth0)上的流量到达。
我有非常严格的要求(很可能这是不可能的):
- 我需要在特定界面上模拟到达。例如。在 eth0 上。在另一个接口(例如 tap0)上发送数据包并不能解决我的问题。
- 解决方案必须是独立的,即不涉及另一台机器,不需要在接口之间连接电缆或
任何其他 'external' 解决方案。
为了提供一些上下文,我需要我发送的数据包来遍历 ip 链(特别是我对 netfilter 挂钩感兴趣)
就像到达定义的界面一样。
例如,如果过滤器 table 的 FORWARD 链中的 iptables 中存在规则,其接受规则为 '-i eth0',
那么该规则应该匹配所请求机制发送的任何数据包。
您需要创建一个内核模块来手动将您的数据包注入网络堆栈。您需要的基本步骤是:
- 创建一个 SKB
- 设置headers和数据
- 找到您要欺骗的设备的
struct net_device
(参见 here)
- 将
skb->dev
设置为在步骤 3 中找到的 net_device
- 调用
netif_rx_ni(skb)
将数据包推入堆栈
在 http://cdn.kerio.com/dwn/control/control-9.0.0-442/kerio-control-kipf-9.0.0-442-linux.tgz in drivers/ipf/linux/pkt.c
at line 691 (the pkt_tx_rx_eth
function). You can also see how the kernel TUN driver does it here.
中有一些代码可以完成大部分工作
希望对您有所帮助!祝你好运。
我想模拟特定接口(例如 eth0)上的流量到达。 我有非常严格的要求(很可能这是不可能的):
- 我需要在特定界面上模拟到达。例如。在 eth0 上。在另一个接口(例如 tap0)上发送数据包并不能解决我的问题。
- 解决方案必须是独立的,即不涉及另一台机器,不需要在接口之间连接电缆或 任何其他 'external' 解决方案。
为了提供一些上下文,我需要我发送的数据包来遍历 ip 链(特别是我对 netfilter 挂钩感兴趣) 就像到达定义的界面一样。 例如,如果过滤器 table 的 FORWARD 链中的 iptables 中存在规则,其接受规则为 '-i eth0', 那么该规则应该匹配所请求机制发送的任何数据包。
您需要创建一个内核模块来手动将您的数据包注入网络堆栈。您需要的基本步骤是:
- 创建一个 SKB
- 设置headers和数据
- 找到您要欺骗的设备的
struct net_device
(参见 here) - 将
skb->dev
设置为在步骤 3 中找到的 - 调用
netif_rx_ni(skb)
将数据包推入堆栈
net_device
在 http://cdn.kerio.com/dwn/control/control-9.0.0-442/kerio-control-kipf-9.0.0-442-linux.tgz in drivers/ipf/linux/pkt.c
at line 691 (the pkt_tx_rx_eth
function). You can also see how the kernel TUN driver does it here.
希望对您有所帮助!祝你好运。