我希望能够模拟某个物理网络接口上的传入数据包。
具体来说,给定一个字节数组和一个接口名称,我希望能够使该接口认为包含这些字节的数据包是从另一个接口(很可能在另一台机器上)到达的。
我已经实现了准备数据包的代码,但我不确定下一步是什么。
我应该指出,我实际上需要向接口提供字节,而不是使用可能在其他机器上产生类似结果的解决方法(我已经看到了提到环回接口和外部工具的其他问题的答案)。该代码应该模拟一台机器上的流量,该机器期望通过特定接口接收来自某些源的流量。其他任何内容都会被机器忽略。
我将竭尽全力地说,如果不修改内核,甚至可能修改驱动程序,这是不可能的。注意:
有很多方法可以通过特定接口生成出口libpcap数据包,包括. 但您想要生成入口数据包。
有很多方法可以生成不通过物理接口的入口数据包 - 这就是 Tap/tun 设备的用途。
如果修改内核以允许将数据包直接注入设备的接收队列,这可能会产生意想不到的效果,并且仍然不会准确模拟到达硬件的数据包(例如,它们不会受到相同 MTU 的限制) ETC)。也许你可以构建一个 iptables 扩展来欺骗内核,让其认为数据包来自不同的接口;我不确定这是否能满足您的需求。
如果您需要的只是模拟(并且您对完整的模拟感到满意),请构建一个 Tap/tun 驱动程序,并将 Tap 接口重命名为eth0或类似名称。
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |