W rzeczywistości istnieje cały szereg dobrych powodów, aby używać NAT na swoich maszynach wirtualnych zamiast mostkowanego interfejsu. (To stare pytanie, ale pojawiło się jako mój pierwszy wynik szukania, jak to zrobić, migrując z VirtualBox tam, gdzie ja to robię to cały czas, więc pomyślałem, że warto dodać)
Tylko kilka powodów, dla których warto korzystać z NAT:
- To łatwe i przenośne
- jeśli korzystasz z sieci LAN klienta, która wymaga znanego adresu MAC, aby uzyskać adres IP (w przeciwnym razie będziesz musiał zgadywać nieużywane i ryzykować konflikt i ogólnie zwracać na siebie uwagę :)),
- rzeczy takie jak zezwalanie maszynom wirtualnym na używanie jednego serwera proxy na hoście (IE, jeśli nie kontrolujesz sieci, w której się znajdujesz) lub możliwość zapory ogniowej / filtrowania ich ruchu emisji (Windows itp.) przy wychodzeniu w jednym Wygodne miejsce.
- możliwość przypisania im stałego lub zarezerwowanego adresu IP, abyś mógł się do nich odwoływać po nazwie / adresie IP spoza hosta (ponownie, jeśli nie możesz uzyskać rezerwacji w sieci za pomocą mostkowego interfejsu)
- ale przede wszystkim pozwala ukryć się za pojedynczą konfiguracją zapory na hoście i dzielić się między sobą rzeczami w bardziej chroniony sposób, zamiast narażać każdą maszynę wirtualną na „dziką” i chroniąc ją indywidualnie itp. .. Tak jak w przypadku modemu / routera internetowego
Tak czy inaczej, w moim przypadku (VMWare Workstation 10, host Linux, OS X Guest) i każdy, kto się na to natknie, oto przegląd tego, co zadziałało dla mnie. Oprócz gofrowania i „co jeśli”, tak naprawdę są tylko 3 główne kroki.
- Najpierw musisz zdecydować, na co chcesz zezwolić swojej maszynie wirtualnej / gościowi „spoza” hosta (zwróć uwagę, jak poniżej, możesz łatwo uzyskać do niego dostęp od samego hosta). Bezpiecznym zakładem byłoby po prostu udostępnienie / zezwolenie tylko SSH (port 22) na maszyny w twojej podsieci. Możesz także zezwolić na port 80/443, jeśli masz serwer WWW na maszynie wirtualnej itp. Możesz także użyć „tunelu”, aby uzyskać dostęp do innych usług za pomocą SSH (podam przykład poniżej), i użyj FUSE / SSHFS, aby dać hostowi dostęp do systemu plików .. (Lub narzędzie do folderów współdzielonych na VMWare, ale jeszcze go nie używałem).
Pomysł jest więc taki: „Pozwól, aby rzeczy w sieci lokalnej mojego hosta (np. 10.1.1.0/24 lub 192.168.1.0/24) łączyły się z portem 22222 na hoście, który przekażemy dalej do portu 22 określony gość ”. Oczywiście musi to być konkretny gość (dzięki temu możliwość skonfigurowania adresów IP jest tym bardziej przydatna, że można je zmienić w jednym miejscu bez otwierania każdej maszyny wirtualnej), podobnie jak w przypadku routera internetowego, aby umożliwić grę przez itp.
Więc kiedy to wszystko zrobisz, możesz być na swoim laptopie lub innym komputerze w sieci LAN, ssh na stacji roboczej (host vmware) 22222, a ty zostaniesz w towarzystwie gościa, któremu kazałeś go przekazać. Jak wspomniano powyżej, jeśli powiesz również, że chciałbyś móc połączyć się z serwerem postgres na gościu (lub z serwerem VNC, który często jest niezaszyfrowany), możesz tunelować to samo polecenie (zamiast dodawać go również do dhcp conf). Na przykład
console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432
i zostaniesz zalogowany do gościa przez ip ip w vmware, i możesz skierować swoje narzędzie pgadmin3 na localhost: 54320 (nieuprzywilejowany) na twoim laptopie, a twój ruch w sieci zostanie zaszyfrowany. (Uwaga „localhost” jest już przesłany do gościa)
Notatki
- Istnieją różne sposoby, aby to zrobić. Po pierwsze, możesz po prostu tunelować hosta i określić adres IP gościa w -L, a on „wybucha” i wskaże ci tam, ale opcja nat.conf jest fajna i wygodne i nie musisz go wpisywać za każdym razem. Istnieją również inne sposoby przekierowania portów
- Widziałem odniesienie do kilku wątków GUI sieci wirtualnej, aby to zrobić (podobnie jak virtualbox ma), ale nie mogłem go znaleźć w tej wersji
- Nie używam systemu Windows, więc nawet jeśli zakładam, że skonfigurowanie go jako hosta byłoby bardzo podobne, nie jestem pewien. Konfiguracje NAT powinny jednak działać dla każdego gościa vmware (chociaż nie korzystałem z żadnych innych wersji VMWare)
VMware ustawia trasę, aby host mógł kontaktować się bezpośrednio z gościem NAT, tj. Z konsoli hosta, mogę bezpośrednio pingować / ssh itp. Gość NAT 192.168.198.10 (zdefiniowany powyżej)
console ~> route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
<snip>
192.168.198.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.233.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
- Z uwagi na Linuksa, jest trochę majstrowania przy vmware przy systemd init, aby ładnie się ładowało`automatycznie, a wraz z tym stwierdziłem, że nie mogę po prostu zrestartować vmware (vmci nie ładuje się ponownie) i muszę zrestartować mój komputer, aby powyższe elementy NAT / DHCP pozostały, ale możesz nie mieć problemu. Istnieje jednak kilka wątków z rozwiązaniami systemowymi