10

如果你通常通过一个接口比如eth0发送一个pcap的tcpreplay,数据包是出站的,即会通过网卡出去。有什么方法可以让 pcaps 入站,以便我的系统将其作为入站数据包处理?

可能的情况

我有一个从 eth0 接收数据包的应用程序,从数据包中提取一些详细信息并通过 eth1 发送。现在,如果网络已设置并且真正的数据包实际流入我的系统,情况就很好了。但出于测试目的,我没有任何东西连接到我的 eth0 或 eth1 端口,但我仍然想从 pcap(可能通过脚本)创建类似的流量,这样我就不必依赖外部物理网络连接用于测试应用程序。

4

3 回答 3

7

替换eth0lo

  1. 运行您的应用程序,它接收数据包lo并将数据包发送到eth1
  2. 运行另一个程序(数据包生成器)将数据包发送到lo

每个发送到的数据包lo都将被lo再次接收,因此您的应用程序将从数据包生成器接收数据包。

如果您lo正忙于处理其他数据包,您可以通过内核参数添加更多环回设备max_loop=x

于 2012-08-17T10:35:18.660 回答
5

有几种可能的解决方案:

  • 快速而肮脏的解决方案:由于您有两个物理连接,您是否考虑过使用跳线连接机器上的两个以太网端口?然后,您将能够使用libpcap通过 发送数据包并通过eth1接收它们eth0。当然,此解决方案需要对机器进行物理访问,您也会失去正常使用这些连接的能力。

  • 正确的解决方案:在我看来,您正在寻找的是一种通过物理网络接口模拟流量的方法。在 Linux(可能还有一些其他类 Unix 系统)上执行此操作的典型方法是创建TAP虚拟接口。在这里查看有关 TUN/TAP 接口的简单教程。

    不幸的是,tpcreplay似乎还不支持 TUN/TAP 接口。你也许能够以某种方式使它工作,但我怀疑它会很尴尬。

  • 中间立场:在例如VirtualBox上使用 Linux 虚拟机。我不确定所需的确切网络配置,但据我所知,这应该可行。

于 2012-08-19T08:18:11.980 回答
1

您想通过特定的网卡/接口在同一台计算机上发送和接收数据包吗?
我知道如何做到这一点的唯一方法是设置一个反弹/回声服务器。

于 2012-08-10T12:44:34.323 回答