如果 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)。

只要您嘗試將「相同」網路位址放置在某處,或將「相同」子網路放置在不同介面上,您的路由就不會起作用。

相關內容