Я запускаю віртуальну машину на хості, яка закріплена в моїй локальній мережі. Хост відображається на моїй локальній мережі (як і інші хости, підключені по Wifi), але VM Guest не працює. Спочатку це було тому, що гостьовий вісник був створений з хоста. Відвідувач VM міг досягти Інтернету та інших серверів у моїй локальній мережі, але інші сервери не могли його досягти. Це має сенс. Те, що я хочу мати, - це гостьова віртуальна машина, що з'являється в мережі, як якщо б вони були безпосередньо підключені до неї, як хост. На все життя я не можу зрозуміти, чого мені не вистачає.
У мене є базові налаштування домашньої мережі. Це виглядає так:
- Wi-Fi / маршрутизатор Netgear Nighthawk
- Intel NUC хост з'єднаний з маршрутизатором
- ОС Ubuntu Server
- Віртуалізація KVM / QEMU
Я спочатку налаштував віртуальну машину з налаштованою конфігурацією NAT (мережа за промовчанням - це мережа, що перекривається за допомогою NAT):
Вище працював чудово, але знову ж таки, я не міг дістатися до віртуальних машин з інших пристроїв у локальній мережі (тому що вони мали NAT).
Потім я спробував налаштувати маршрутизовану конфігурацію таким чином, щоб кожна віртуальна машина отримала власну IP-адресу і могла:
- дістатися до Інтернету
- бути доступними з інших хостів у локальній мережі
Що я намагався зробити, це щось подібне:
Я створив нову віртуальну мережу таким чином:
Проте вищезгадана установка не може отримати доступ до Інтернету і недоступна для інших хостів у мережі. Це майже в тому випадку, якщо я якось встановлюю речі в DMZ за хостом.
З усього, що я прочитав, налаштування маршрутизованої конфігурації (через virbr3, як на зображенні вище) має створити віртуальну мережу на вузлі типу "Routed", яка призведе до того, що хост просто пройде. Я бачу на таблиці ARP хоста, що він знає про гостя VM:
Що я очікую побачити, коли я увійти в свій Netgear маршрутизатор VM Гість зазначені як дротове з'єднання, але це не в списку. Я спробував зайти в маршрутизатор і вручну і додати зарезервовану IP-адресу для IP VM Guest (і MAC-адреса VM Guest), думаючи, що мережеві запити для цього IP будуть маршрутизовані належним чином, але вони не є. Це майже так само, як якщо хост знає про VM, але не рекламує маршрути правильно, а маршрутизатор не знає про VM для гостей, так що, коли я намагаюся переписати IP-адресу гостя з іншого хоста в локальній мережі, маршрутизатор робить не знаю, куди його відправити? Будь-які пропозиції про те, як це виправити?
EDIT
Я зрозумів, що на одному кроці відсутній додавання статичного маршруту в маршрутизаторі NetGear, щоб він знав, куди слід пересилати запити до IP-адрес, пов'язаних з віртуальними машинами (через gateway eth0). Тепер я можу пінгувати віртуальні машини від інших хостів у мережі, так що це величезний крок вперед. Єдиною проблемою є те, що тепер віртуальні машини не можуть отримати доступ до Інтернету (наприклад, google.com).
EDIT 2
Вихід з traceroute google.com
на гостьовій віртуальній машині:
192.168.100.1 - локальний шлюз.
Я вважаю, що це 192.168.1.1 мій бездротовий шлюз. Я роблю цей виклик, оскільки він відображається як шлюз за промовчанням на хості та на моєму Mac, який також підключений до локальної мережі.
nslookup google.com
але я не можу пінгувати IP-адресу. Крім того, оскільки traceroute не інстальовано на моєму VM, я не можу встановити його, оскільки VM не може досягти репо. :(
traceroute google.com
. Схоже, мій запит робить це через локальний / за замовчуванням шлюз, але потім ніколи не робить це минуле 192.168.1.1, який є моїм бездротовим шлюзом?
tracepath 8.8.8.8
з цих ВМ?