【问题标题】:Sending packets through a virtual interface whose subnet is also same as subnet of another interface通过子网与另一个接口的子网相同的虚拟接口发送数据包
【发布时间】:2019-09-20 15:07:12
【问题描述】:

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

我想向这些设备发送多播数据包。由于多播在同一个子网上工作,我使用以下方法创建了一个 IP 别名。

system("ifconfig eth1:1 192.168.2.100 网络掩码 255.255.255.0 向上");

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

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

如果有人可以提供建议,不胜感激。

【问题讨论】:

    标签: networking


    【解决方案1】:

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

    问题一,重叠子网:解决此问题的绝对 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 以确保流量正确通过。如果不是,请提供输出和您希望它与当前设置一起采用的路线。

    如果多播仍然不起作用,那么我建议为它创建另一个问题。

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 2012-05-03
      • 2015-05-04
      • 2018-06-23
      • 2021-09-16
      相关资源
      最近更新 更多