Jeśli maszyna wirtualna ZimaOS korzystająca z opcji „Bridge to eth0” otrzymuje zwykły adres IP z sieci LAN i może łączyć się z innymi urządzeniami w sieci LAN, ale nie może połączyć się z samym hostem ZimaOS, zachowanie to odpowiada dobrze znanemu wzorcowi izolacji hosta macvtap. W oryginalnym wątku przełączenie maszyny wirtualnej na NAT natychmiast przywróciło komunikację między maszyną wirtualną a hostem.
Wątek nie zawierał jednak potwierdzenia firmy IceWhale, że ZimaOS rzeczywiście implementuje tę opcję za pomocą macvtap libvirt. Dlatego właściwe jest sformułowanie opisujące objawy: zachowanie przypomina izolację macvtap, zamiast twierdzić, że jest to udokumentowany szczegół wewnętrznej implementacji.
Wzorzec objawów jest bardzo charakterystyczny
- Maszyna wirtualna otrzymuje adres DHCP w fizycznej sieci LAN.
- Maszyna wirtualna może łączyć się z routerami i innymi urządzeniami w sieci LAN.
- Maszyna wirtualna nie może uzyskać odpowiedzi ARP od adresu IP hosta ZimaOS ani się z nim połączyć.
- Tryb NAT przywraca dostęp do usług działających na hoście.
Różni się to od sytuacji, w której maszyna wirtualna w ogóle nie ma sieci. Problem dotyczy głównie scenariuszy, w których system gościa musi wywoływać usługę powiązaną bezpośrednio z hostem ZimaOS.
Dlaczego przypomina to macvtap
Przewodnik libvirt dotyczący izolacji hosta macvtap opisuje ten sam wzorzec: gość korzystający z interfejsu bezpośredniego/macvtap może łączyć się z siecią zewnętrzną, ale nie może bezpośrednio komunikować się ze swoim hostem wirtualizacji.
Aktualna dokumentacja formatu sieci libvirt rozróżnia istniejący most sieciowy hosta od bezpośredniego połączenia macvtap i również wskazuje ograniczenie komunikacji host–gość w przypadku macvtap.
Użyj NAT, gdy maszyna wirtualna musi łączyć się z usługami hosta ZimaOS
W teście społecznościowym tryb NAT był sprawdzonym obejściem problemu. Jeśli odwrotny serwer proxy działający wewnątrz maszyny wirtualnej potrzebuje jedynie wychodzącego dostępu do usługi na hoście ZimaOS, NAT może być prostszy niż wymuszanie interfejsu połączonego z siecią LAN.
Jeśli system gościa potrzebuje także pełnoprawnego adresu w sieci LAN, częstym wzorcem libvirt jest drugi interfejs maszyny wirtualnej w wirtualnej sieci z dostępem do hosta, ale to, czy ZVM udostępnia taką konfigurację w wygodny sposób, zależy od bieżącego interfejsu ZimaOS i jego wersji.
Zaprojektuj odwrotny serwer proxy z uwzględnieniem granicy sieci
Jeśli Caddy lub Nginx działa w maszynie wirtualnej, a Home Assistant lub inna usługa działa bezpośrednio na hoście ZimaOS, przed poświęceniem czasu na konfigurację TLS lub proxy sprawdź możliwość komunikacji z hostem. Przewodnik ZimaOS dotyczący odwrotnego serwera proxy będzie przydatny, gdy podstawowa łączność w warstwie 3 będzie już działać.
Informacje na temat ogólnej konfiguracji interfejsów i adresów IP zawiera osobno przewodnik ZimaOS dotyczący łączenia urządzeń.
Podsumowanie
Wątek potwierdza objawy związane z siecią oraz obejście problemu za pomocą NAT. Nie potwierdza natomiast dokładnej implementacji ZimaOS. Traktuj „macvtap” jako najlepsze techniczne wyjaśnienie zaobserwowanej izolacji hosta, chyba że aktualna dokumentacja IceWhale jednoznacznie potwierdza zastosowany backend.
