Почему сетевой интерфейс не работает, если у veths одинаковый сетевой адрес?

Почему сетевой интерфейс не работает, если у veths одинаковый сетевой адрес?

Я создал пару veth в linux. Если я назначаю им 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, и вы хотите достичь чего-то конкретного, пожалуйста, отредактируйте свой вопрос и укажите свою цель. Существуют и другие способы создания сетей в контейнерах (например, macvlan).

Вам не обязательно создавать мост, чтобы обеспечить пересылку данных между различными сегментами сети.

Но это необходимо, если вы хотите иметь одну и ту же подсеть как в пространстве имен, так и в другом пространстве имен. (Или вы используете macvlan).

Пока вы пытаетесь разместить «один и тот же» сетевой адрес где-либо или «одну и ту же» подсеть на разных интерфейсах, ваша маршрутизация работать не будет.

Связанный контент