我有一些在linux( linux_host)上运行的模拟器软件,其中另一个linux( linux_sim )正在运行。 模拟器使用libpcap访问以太网以在linux_sim上提供networking模拟。 networking是在linux_host和linux_sim中调出的 。 我可以从linux_sim到达局域网中的任何主机(例如使用dhcp来设置IP)。
问题是,从linux_sim发送的数据包没有达到linux_host ,但他们在相反的方向行驶OK。 后者我可以用在linux_host上运行的wiresharkcertificate:如果我在linux_host上ping linux_sim – 我看到ICMP请求和回应(从linux_sim )不能到达linux_host ,反之亦然 – 我只看到ICMP请求(来自linux_sim ) 。
以下大致描述了我拥有的架构:
LAN | linux_host-----[eth0] | libpcap | simulator | linux_sim
PS
linux_host和linux_sim有不同的MAC地址,IP和从LAN看起来像独立的Linux主机。
我尝试了三种不同的Linux机器,结果相同(使用Debian,CentOS和Gentoo)。
那么,在这种情况下,你可以推荐什么来检查/调整/configuration? 正如我所想,在这种情况下, linux_host需要一个不寻常的路由/过滤configuration。
UPDATE
广播stream量确实从linux_sim到达linux_host ,因为我发现IP地址是用ARPparsing的(请求广播被回复)。
我认为一个很好的testing是将linux_host和linux_sim放在不同的子网上。 在这个VLAN上放一个路由器(也许是另外一个linux的盒子),然后在两个子网中给它两个子网接口,让它们在两个子网之间路由。 我认为你遇到了反向path检测的一些问题。 你已经把这个关掉了吗?
您没有关于如何configurationnetworking的很多信息。 如果您的模拟器通过网桥接口访问外部世界,则必须考虑NIC硬件(以及它的驱动程序)在做什么。 例如,在大多数较新的Intel NIC上,您必须禁用GRO才能使TCP与桥接的VM一起工作。 NIC硬件卸载和IO-SRV也经常出现问题。 查看您的驱动程序文档,了解有关桥接的说明。