如果 veth 具有相同的网络地址,为什么网络接口无法工作?

如果 veth 具有相同的网络地址,为什么网络接口无法工作?

我在 Linux 中创建了一对 veth 。如果我为其分配一个 IP 地址,其中网络部分与 eth0 相同,则网络似乎会中断。例如 eth0 192.168.0.3,veth1 192.168.0.100。另一方面,每个指示都ip a/l表明一切正常,但 ping/nc 等在本地和远程主机中不起作用。

是否有关于此的限制?

答案1

有一般的网络原则说不同的子网需要不同的子网IP范围一台特定机器上只有一个子网接口

您可以违反这些原则,但接下来就需要您来完成这项工作(并且需要付出努力,例如将应用程序绑定到特定接口)。

veth 对形成一个子网。如果您将两个 veth 接口放在同一网络命名空间中,并像问题中那样分配 IP 地址,那么您现在就违反了这两个原则。所以那是行不通的。

通常,您将其中一个 veth 对移至不同的网络命名空间(因为这就是 veth 对的用途:连接网络命名空间),然后为可见的一个 veth 指定一个不同的子网,并为该子网中的两个 veth 接口地址分配地址。


但是在主机命名空间中的主机 veth 上拥有相同的网络地址会杀死主接口。

是的。这就是为什么你创建一个不同的veth 对上的子网,并进行路由,就像任何普通子网一样。

如果这是一个XY问题,并且您想要实现特定的目标,请编辑您的问题并说明您的目标。还有其他方法可以在容器中进行网络连接(例如 a macvlan)。

你不一定需要创建一个桥来让不同的网段互相转发,

但是,如果您想在名称命名空间和其他命名空间中拥有相同的子网,则需要这样做。 (或者您使用macvlan)。

只要您尝试将“相同”网络地址放置在某处,或者将“相同”子网放置在不同接口上,您的路由就不会起作用。

相关内容