Почему виртуальные машины в одной подсети не могут взаимодействовать друг с другом, кроме как через шлюз?

Я использую AWS Firecracker для создания двух виртуальных машин (обе имеют ОС Ubuntu 22.04) в контейнере с ОС Ubuntu 22.04. Я создаю мост и назначаю ему IP-адрес в качестве шлюза. Затем я создаюtun/tapвиртуальные сетевые интерфейсы для каждой виртуальной машины (tap0иtap1) подключен кbr0и назначить IP-адреса192.168.0.170(ВМ1) и192.168.0.171(ВМ2).

Я могу пинговать шлюз, когда нахожусь на каждой виртуальной машине, и мой хост может пинговать обе виртуальные машины. Даже виртуальные машины имеют доступ к Интернету через сетевой мостовой интерфейс на хосте.

Проблема в том, что я не могу пропинговать VM2, когда нахожусь внутри VM1, пока не удалю192.168.0.0/24автоматически создаваемая маршрутизация ядром. Например, для VM1 мне нужно удалить это:

      192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.170

Используяip r del 192.168.0.0/24, после этого я смогу пропинговать VM2. Обратите внимание, чтоdefaultпуть маршрутизации через шлюз192.168.0.7как в VM1, так и в VM2.

Я думал, что обеих виртуальных машин, находящихся на одном и том же сетевом адаптере, достаточно, чтобы они могли проверять связь друг с другом, и им не нужно проходить через шлюз. Есть идеи, почему это происходит? Спасибо за ваши комментарии и мысли.

0 ответов

Другие вопросы по тегам