Używam maszyny wirtualnej na hoście, który jest podłączony do mojej sieci LAN. Host pojawia się w mojej sieci lokalnej (podobnie jak inne hosty połączone przez Wi-Fi), ale gość VM nie. Początkowo było tak, ponieważ gość VM był NATed z hosta. Gość VM może uzyskać dostęp do Internetu i innych serwerów w mojej sieci LAN, ale inne serwery nie mogą do niego dotrzeć. To ma sens. To, co chcę, aby się stało, to wyświetlenie gościnnej maszyny wirtualnej w sieci, tak jakby były podłączone bezpośrednio do niej jak host. Przez całe moje życie nie mogę zrozumieć, czego mi brakuje.
Mam podstawową konfigurację sieci domowej. Wygląda jak następujący obraz:
- Netgear Nighthawk wifi / router
- Host Intel NUC podłączony do routera
- System operacyjny Ubuntu Server
- Wirtualizacja KVM / QEMU
Początkowo konfigurowałem maszynę wirtualną z taką konfiguracją NATed (domyślną siecią jest mostkowana sieć NATed):
Powyższe działało świetnie, ale znowu nie mogłem dotrzeć do maszyn wirtualnych z innych urządzeń w sieci LAN (ponieważ były one maszynami NAT).
Następnie próbowałem skonfigurować konfigurację routingu, aby każda maszyna wirtualna otrzymała własny adres IP i mogła:
- dotrzeć do internetu
- być dostępne z innych hostów w sieci LAN
Próbowałem zrobić coś podobnego do tego:
Utworzyłem nową sieć wirtualną w następujący sposób:
Przy powyższej konfiguracji maszyna wirtualna nie może uzyskać dostępu do Internetu i nie jest dostępna z innych hostów w sieci. To prawie tak, jeśli jakoś skonfiguruję rzeczy w strefie DMZ za Hostem.
Ze wszystkiego, co przeczytałem, konfiguracja konfiguracji routingu (poprzez virbr3 jak na powyższym obrazku) powinna stworzyć na hoście sieć wirtualną typu „routed”, co spowoduje, że host po prostu przejdzie. Widzę w tabeli ARP hosta, że wie o gościu VM:
Po zalogowaniu się do routera Netgear spodziewałbym się, że gość VM będzie wymieniony jako połączenie przewodowe, ale nie ma go na liście. Próbowałem wejść do routera i ręcznie i dodać zarezerwowany adres IP dla adresu IP gościa VM (i adresu MAC gościa VM), myśląc, że żądania sieciowe dla tego adresu IP będą odpowiednio kierowane, ale tak nie jest. To prawie tak, jakby Host wiedział o maszynie wirtualnej, ale nie reklamuje tras poprawnie, a router nie wie o maszynie wirtualnej gościa, więc kiedy próbuję pingować adres IP gościa z innego hosta w sieci LAN, router nie „ wiesz, gdzie to wysłać? Wszelkie sugestie, jak to naprawić?
EDYTOWAĆ
Zdałem sobie sprawę, że jednym krokiem było dodanie trasy statycznej do mojego routera NetGear, aby wiedział, gdzie przesyłać żądania na adresy IP powiązane z maszynami wirtualnymi (przez bramę eth0). Teraz mogę pingować maszyny wirtualne z innych hostów w sieci, co stanowi ogromny krok naprzód. Pozostaje tylko problem, że teraz maszyny wirtualne nie mogą uzyskać dostępu do Internetu (tj. Google.com).
EDYCJA 2
Dane wyjściowe z traceroute google.com
maszyny Wirtualnej gościa są następujące:
192.168.100.1 jest bramą lokalną.
Wierzę, że 192.168.1.1 to moja bezprzewodowa brama. Wywołuję to połączenie, ponieważ pokazuje się ono jako domyślna brama na hoście i na moim komputerze Mac, który jest również podłączony do sieci LAN.
nslookup google.com
ale nie mogę pingować zwróconego adresu IP. Ponadto, ponieważ traceroute nie jest zainstalowany na mojej maszynie wirtualnej, nie mogę go zainstalować, ponieważ maszyna wirtualna nie może dotrzeć do repozytoriów. :(
traceroute google.com
. Wygląda na to, że moje żądanie przechodzi przez bramę lokalną / domyślną, ale nigdy nie przekracza 192.168.1.1, która jest moją bramą bezprzewodową?
tracepath 8.8.8.8
tych maszyn wirtualnych?