Por que a interface de rede não funciona se os veths têm o mesmo endereço de rede?

Por que a interface de rede não funciona se os veths têm o mesmo endereço de rede?

Eu criei um par de veth s no Linux. Se eu atribuir a ele um endereço IP em que a parte da rede seja igual à eth0, a rede parecerá quebrada. Por exemplo, eth0 192.168.0.3, veth1 192.168.0.100. Por outro lado, todas as indicações de ip a/ldizem que tudo está funcionando, mas ping/nc etc, não funcionará no host local e remoto.

Existe uma limitação escrita em algum lugar sobre isso?

Responder1

Existem princípios gerais de rede que dizemsub-redes diferentes precisam de um intervalo de IP de sub-rede diferenteeter apenas uma interface em uma sub-rede em uma máquina específica.

Você pode violar esses princípios, mas cabe a você fazer isso funcionar (e será necessário esforço, como vincular aplicativos a uma interface específica).

O veth par forma uma sub-rede. Se você colocar ambas as interfaces no mesmo namespace de rede e atribuir endereços IP como na pergunta, você violou ambos os princípios. Então isso não está funcionando.

Você normalmente move um dos pares veth para namespaces de rede diferentes (porque é para isso que os pares veth servem: conectar namespaces de rede) e dá ao veth que está visível umdiferentesub-rede e você atribui a ambas as interfaces endereços nessa sub-rede.


Mas ter o mesmo endereço de rede no host e no namespace do host mata a interface principal.

Sim. É por isso que você cria umdiferentesub-rede no par veth e faça o roteamento, como em qualquer sub-rede normal.

E se isso é umProblema XY, e você deseja alcançar algo específico, edite sua pergunta e indique seu objetivo. Existem outras maneiras de fazer networking em containers (por exemplo, um macvlan).

Você não precisa necessariamente criar uma ponte para que diferentes segmentos de rede encaminhem uns aos outros,

Mas você precisa se quiser ter a mesma sub-rede no namespace e no outro namespace. (Ou você usa um macvlan).

Contanto que você tente colocar o "mesmo" endereço de rede em algum lugar ou a "mesma" sub-rede em interfaces diferentes, seu roteamento não funcionará.

informação relacionada