Виртуальная машина KVM не видна/не пингуется из локальной сети

Виртуальная машина KVM не видна/не пингуется из локальной сети

Я запускаю виртуальную машину на хосте, который жестко подключен к моей локальной сети. Хост отображается в моей локальной сети (как и другие хосты, подключенные по Wi-Fi), а гостевая виртуальная машина — нет. Изначально это было связано с тем, что гостевая виртуальная машина была NAT-зашифрована с хоста. Гостевая виртуальная машина могла получить доступ к Интернету и другим серверам в моей локальной сети, но другие серверы не могли получить к ней доступ. Это имеет смысл. Я хочу, чтобы гостевая виртуальная машина отображалась в сети, как если бы она была жестко подключена к ней напрямую, как хост. Хоть убей, я не могу понять, что я упускаю.

У меня есть базовая настройка домашней сети. Она выглядит как на следующем изображении:

введите описание изображения здесь

  • Netgear Nighthawk Wi-Fi/роутер
  • Хост Intel NUC, подключенный к маршрутизатору
    • ОС Ubuntu Server
    • Виртуализация KVM/QEMU

Первоначально я настроил виртуальную машину с конфигурацией NAT следующим образом (сеть по умолчанию — это мостовая сеть NAT):

введите описание изображения здесь

Вышеуказанное сработало отлично, но я снова не смог подключиться к виртуальным машинам с других устройств в локальной сети (потому что эти виртуальные машины были зашифрованы с помощью NAT).

Затем я попытался настроить маршрутизируемую конфигурацию, чтобы каждая виртуальная машина получила свой собственный IP-адрес и могла:

  • выйти в интернет
  • быть доступным с других хостов в локальной сети

Я пытался сделать что-то вроде этого: введите описание изображения здесь

Я создал новую виртуальную сеть следующим образом: введите описание изображения здесь

Однако с указанной выше настройкой виртуальная машина не может выйти в интернет и недоступна с других хостов в сети. Это почти так, как если бы я каким-то образом настроил все в DMZ позади хоста.

Из всего, что я прочитал, настройка конфигурации Routed (через virbr3, как на изображении выше) должна создать виртуальную сеть на хосте, которая имеет тип «Routed», что заставит хост просто пройти. Я вижу в таблице ARP хоста, что он знает о гостевой виртуальной машине: введите описание изображения здесь

Что я ожидал бы увидеть, когда вхожу в свой маршрутизатор Netgear, так это то, что гостевая виртуальная машина указана как проводное соединение, но ее там нет. Я попытался войти в маршрутизатор и вручную добавить зарезервированный IP-адрес для IP гостевой виртуальной машины (и MAC-адрес гостевой виртуальной машины), думая, что сетевые запросы для этого IP будут маршрутизироваться соответствующим образом, но этого не произошло. Это почти как если бы хост знал о виртуальной машине, но не объявлял маршруты правильно, а маршрутизатор не знал о гостевой виртуальной машине, поэтому, когда я пытаюсь пинговать IP гостевой машины с другого хоста в локальной сети, маршрутизатор не знает, куда его отправить? Есть ли какие-нибудь предложения по исправлению этой проблемы?

РЕДАКТИРОВАТЬ

Я понял, что не хватает одного шага — добавления статического маршрута в мой маршрутизатор NetGear, чтобы он знал, куда пересылать запросы на IP-адреса, связанные с виртуальными машинами (через шлюз eth0). Теперь я могу пинговать виртуальные машины с других хостов в сети, так что это огромный шаг вперед. Единственная оставшаяся проблема — теперь виртуальные машины не могут получить доступ к интернету (например, google.com).

ПРАВКА 2

Вывод traceroute google.comна гостевой виртуальной машине выглядит следующим образом: введите описание изображения здесь

192.168.100.1 — это локальный шлюз.
192.168.1.1 — это мой беспроводной шлюз, я полагаю. Я делаю этот вызов, потому что он отображается как шлюз по умолчанию на хосте и на моем Mac, который также подключен к локальной сети.

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