通过虚拟接口发送数据包,该虚拟接口的子网也与另一个接口的子网相同

时间:2019-09-20 15:07:12

标签: networking

我有一台具有两个接口eth0和eth1的Linux机器。 eth0具有192.168.2.30,而eth1具有172.16.30.20。 eth0连接到路由器,该路由器也是WAN的网关。 eth1已连接到LAN。一切正常,直到我必须连接一个  一组IP范围为192.168.2.5-192.168.2.15的设备连接到eth1也连接到的LAN。

我想向这些设备发送多播数据包。由于多播在同一子网中工作,因此我使用以下命令创建了IP别名。

system(“ ifconfig eth1:1 192.168.2.100 netmask 255.255.255.0 up”);

尽管添加了以上内容,但数据包并未通过eth1。发现这是因为eth0也具有与eth1相同的子网:1。

我尝试调用ip route add <多播ip> dev eth1。但是,没有成功。

感谢任何人都可以提出建议。

1 个答案:

答案 0 :(得分:0)

从外观上看,您至少有两个问题,根据解决方案的选择,可能还会出现其他问题。

问题一,子网重叠:解决此问题的绝对100%正确的方法是更改​​子网,使它们不重叠。我很难强调这对您的情况有多重要。如果假设这些位于192.168.2.5-192.168.2.15的计算机与eth0连接到同一网络,则您需要重新考虑您的设置,因为它将永远无法工作,因为这将创建网络环路或错误的路由。

在第一种情况下,192.168.2.5-192.168.2.15和192.168.2.15并未以任何方式物理连接,并且如果您上方的人说您无法执行此操作,则可以尝试在eth1上创建NAT,这样您的系统看到该子网位于其他网络上。但这会使路由变得混乱,并可能干扰多播流量。

完成此操作后,请运行tracerroute以确保流量正确通过。如果没有,请提供输出以及您希望它与当前设置一起使用的路线。

如果多播仍然无法正常工作,那么我建议为其创建另一个问题。