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