在linux中模拟网络接口上的传入数据包
如果您通常通过接口(如eth0)发送pcap的tcpreplay,则数据包将出站,即通过网卡出站。是否有任何方法可以使PCAP入站,以便我的系统将其作为入站数据包进行处理 可能的情景在linux中模拟网络接口上的传入数据包,linux,networking,network-programming,Linux,Networking,Network Programming,如果您通常通过接口(如eth0)发送pcap的tcpreplay,则数据包将出站,即通过网卡出站。是否有任何方法可以使PCAP入站,以便我的系统将其作为入站数据包进行处理 可能的情景 我有一个应用程序,它从eth0接收数据包,从数据包中提取一些细节并通过eth1发送。现在,如果网络已经建立,真正的数据包实际流入我的系统,情况就好了。但出于测试目的,我没有任何东西连接到我的eth0或eth1端口,但我仍然希望从pcap(可能通过脚本)创建类似类型的流量这样我就不必依赖外部物理网络连接来测试应用程序
我有一个应用程序,它从eth0接收数据包,从数据包中提取一些细节并通过eth1发送。现在,如果网络已经建立,真正的数据包实际流入我的系统,情况就好了。但出于测试目的,我没有任何东西连接到我的eth0或eth1端口,但我仍然希望从pcap(可能通过脚本)创建类似类型的流量这样我就不必依赖外部物理网络连接来测试应用程序。是否要在同一台计算机上通过特定的网卡/接口发送和接收数据包?
我知道的唯一方法就是设置一个跳出/回送服务器。将
eth0
替换为lo
lo
接收数据包并将数据包发送到eth1
lo
lo
的每个数据包都将被lo
再次接收,因此您的应用程序将从数据包生成器接收数据包
如果您的
lo
正忙于处理其他数据包,您可以通过内核参数max\u loop=x
添加更多环回设备。有几种可能的解决方案:
- 快速而肮脏的解决方案:由于您有两个物理连接,您是否考虑过使用配线架电缆连接机器上的两个以太网端口?然后,您可以使用
通过libpcap
发送数据包,并通过eth1
接收数据包。当然,此解决方案需要物理访问计算机,并且您也将失去正常使用这些连接的能力eth0
- 正确的解决方案:在我看来,您正在寻找的是一种通过物理网络接口模拟流量的方法。在Linux(可能还有其他类似Unix的系统)上实现这一点的典型方法是创建一个虚拟接口。查看有关TUN/TAP接口的简单教程
不幸的是,
似乎还不支持TUN/TAP接口。你也许能以某种方式使它工作,但我怀疑这会很尴尬tpcreplay
- 中间立场:在例如上使用Linux虚拟机。我不确定所需的确切网络配置,但据我所知,这应该是可行的
lo
不是以太网接口,因此在某种程度上可能存在问题。事实上,tcpreplay
在很长一段时间内都不能与环回接口一起工作,即使现在输出一个警告…@user956030,你能举个例子吗?