如果您通常通过一个名为eth0的接口发送pcap的tcpreplay,则数据包是出站的,即将通过网卡发送。有什么方法可以让pcaps入站,以便我的系统应该将其作为入站数据包处理?
可能的情景
我有一个从eth0接收数据包的应用程序,从数据包中提取一些细节并通过eth1发送。现在情况很好,如果网络设置和真正的数据包实际流入我的系统。但是出于测试目的,我没有任何连接到我的eth0或eth1端口,但我仍然希望从pcap创建类似的流量(可能通过脚本),这样我就不必依赖外部物理网络连接用于测试应用程序。
答案 0 :(得分:7)
将eth0
替换为lo
lo
接收数据包并将数据包发送到eth1
lo
lo
的每个数据包将再次由lo
接收,因此您的应用程序将从您的数据包生成器接收数据包。
如果你的lo
忙于其他数据包,你可以通过内核参数max_loop=x
添加更多的环回设备
答案 1 :(得分:4)
有几种可能的解决方案:
快速而肮脏的解决方案:由于您有两个物理连接,您是否考虑过使用跳线连接机器上的两个以太网端口?然后,您就可以使用libpcap
通过eth1
发送数据包,并通过eth0
接收数据包。当然,这个解决方案需要物理访问机器,你也会失去正常使用这些连接的能力。
正确的解决方案:在我看来,您正在寻找的是一种通过物理网络接口模拟流量的方法。在Linux(以及可能的其他类Unix系统)上执行此操作的典型方法是创建TAP虚拟接口。有关TUN / TAP接口的简单教程,请查看here。
不幸的是,tpcreplay
似乎还不支持TUN / TAP接口。你可能能够以某种方式使它工作,但我怀疑它会很尴尬。
中间地带:在例如Linux上使用Linux虚拟机VirtualBox。我不确定所需的确切网络配置,但据我所知,这应该有效。
答案 2 :(得分:1)
您是否希望通过特定的网卡/接口在同一台计算机上发送和接收数据包? 我知道如何做到这一点的唯一方法是设置一个反弹/回显服务器。