Jak uzyskać dostęp do serwera działającego w VirtualBox z hosta?

4

Korzystam z aplikacji sieci web na maszynie wirtualnej.

Widzę aplikację za localhost:8888pośrednictwem przeglądarki z poziomu maszyny wirtualnej.

Nie widzę aplikacji z hosta pod tym samym adresem URL. To jest cel.

Próbowałem, VBoxManage modifyvm "VM name" --natdnshostresolver1 onale nie miało to wpływu.

Moja konfiguracja to:

  • Host: Windows 7
  • Gość: Ubuntu 16.04.1 LTS
  • VirtualBox: 5.1.4r110228

Konfiguracja gościa

(Gość) ifconfigna NAT

kirkland@GC:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:d0:fc:0e  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4c67:70b5:c37b:8fa8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3587 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7444830 (7.4 MB)  TX bytes:731870 (731.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1566 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:655936 (655.9 KB)  TX bytes:655936 (655.9 KB)

(Gość) / etc / hosts

127.0.0.1   localhost
127.0.1.1   GC

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Kirkland
źródło
Oznacziłem to jako „dupe”, ponieważ problem ten został w zasadzie rozwiązany przez skonfigurowanie adaptera „Tylko host” w VirtualBox. Jeśli uważasz, że to nie jest dupek, to fair, ale rozwiązanie, które zamieściłem na to pytanie, jest dokładnie tą samą rzeczą, która rozwiązałaby dla ciebie ten problem.
JakeGould,
Postępowałem zgodnie z instrukcjami w „rozwiązaniu, które zamieściłeś na inne pytanie” aż do polecenia włącznie sudo ifconfig eth1 192.168.56.10 netmask 255.255.255.0 up, ale to nie zadziałało. To powiedziawszy, był IPv4 Network Maskliterówką, ponieważ nie pasuje do dołączonego zrzutu ekranu.
Kirkland
Tak, maska ​​sieci IPv4 to literówka; powinno być 255.255.255.0i naprawiłem to na swoim poście. To powinno działać. Jeśli nie, może istnieć coś innego, na przykład aplikacja na maszynie wirtualnej, która jest jawnie podłączona, localhosta nie skonfigurowana do używania adresu IP. Ale pomogłem jak najlepiej; nie mogę dalej pomóc. Powodzenia w rozwiązaniu tego problemu.
JakeGould,

Odpowiedzi:

4

localhost:8888URL jest jedynie poprawny adres URL wewnątrz VM. Poza tą maszyną wirtualną będziesz musiał użyć ip.ad.dr.ess:8888lub hostname:8888. W tym drugim przypadku wprowadzono zależność od rozpoznawania nazwy hosta ip.ad.dr.essw sieci.

Domyślnie podczas tworzenia maszyny wirtualnej w VirtualBox karta sieciowa 1 jest ustawiona na NAT. To da maszynie wirtualnej adres IP 10.0.2.15/24i domyślną trasę 10.0.2.2(która powinna być twoim hostem). Krótko mówiąc, okna nie będą kierować do adresu, dla którego zapewnia NAT, bez wcześniejszego przeskakiwania przez więcej obręczy.

Wyłączenie maszyny wirtualnej i zmiana ustawienia adaptera sieciowego maszyny wirtualnej 1 na „zmostkowaną” pozwoli Twojemu hostowi (i dowolnemu hostowi w sieci lokalnej) na komunikowanie się z tą maszyną wirtualną bez dodawania żadnych specjalnych tras lub obręczy.

Uruchom ponownie maszynę wirtualną. Sprawdź swoją łączność z localhost:8888. Sprawdź także swoją łączność z hostname:8888(zakładając, że nazwa hosta została notdodana do adresu pętli zwrotnej / localhost w pliku / etc / hosts) i ip-address:8888. EDYCJA: Na podstawie opublikowanych szczegółów / etc / hosts łączysz aremaszynę wirtualną, a zatem aplikację internetową z siecią pętli zwrotnej. Ta konfiguracja w ogóle nie nadaje się do użytku poza maszyną wirtualną.

Jeśli Twój serwer WWW i aplikacja nie są zależne od adresu IP, na którym został najpierw skonfigurowany / zainstalowany, a masz serwer DHCP w sieci LAN, jedyną inną informacją, której potrzebujesz, aby połączyć się z maszyną wirtualną, jest adres IP, który był przypisany do niego przez DHCP.

Aby znaleźć adres IP maszyny wirtualnej: Otwórz okno terminala / konsoli z pulpitu Ubuntu (ctrl-alt-T), używamy /etc/hostspoleceń hostname, ifconfig i grep , aby poskładać elementy i znaleźć twój adres. W otwartym terminalu wpisz, hostnamea następnie naciśnij klawisz Enter. To prawdopodobnie gc. W tym samym terminalu pisanie ifconfig eth0 | awk '/Bcast/{print $2}'spowoduje wyświetlenie adresu. Powinieneś mieć linię w / etc / hosts z adresem i nazwą hosta. grep [hostname] /etc/hostslub grep [address] /etc/hostspowinien znaleźć potrzebną linię. Jeśli wpiszesz coś innego niż aktualny adres, a po nim nazwę hosta, musisz zmodyfikować plik / etc / hosts, aby dodać poprawne informacje.

Hosty w sieci LAN powinny teraz móc łączyć się z adresem IP maszyny wirtualnej na porcie 8888. Aby uzyskać dostęp do aplikacji przez hosty / klientów, hostname:8888zależy od plików hostów klienta, lokalnego DNS, a nawet usług mDNS, które mogą być dostarczone na serwerze DHCP .

Daniel Liston
źródło
Próbowałem Bridged Adapter(3 opcje) i Host-only Adapter(1 opcja). Nie działało Nie jestem pewien, co masz na myśli hostname:8888. Na maszynie wirtualnej mogę uzyskać dostęp do aplikacji internetowej za pomocą localhost:8888i 127.0.0.1:888. Nie mogę uzyskać dostępu do aplikacji na maszynie wirtualnej w 10.0.2.15:8888lub 10.0.2.255:8888. W ogóle nie mogę się do niego dostać z hosta. Dodałem więcej informacji o mojej konfiguracji do oryginalnego postu. Jeśli jest jeszcze coś, co powinienem opublikować, co może wyjaśnić sytuację, daj mi znać. Dziękuję za pomoc!
Kirkland
Zdjęcia są warte tysiąca słów. Nazwa hosta: 8888, o której mówiłem, to nazwa nadana maszynie w systemie operacyjnym Ubuntu. W twoim przypadku „GC”. Oto pocieranie. Ta nazwa jest powiązana z siecią sprzężenia zwrotnego w wersji 127.0.1.1 i nigdy nie będzie widoczna dla niczego poza maszyną wirtualną, bez względu na wszystko. Nawet nie widzi / nie używa adresu 10.0.2.15 na podstawie informacji o / etc / hosts. Spróbuj dodać tę linię do / etc / hosts: 10.0.2.15 gci sprawdź, czy możesz uzyskać dostęp do aplikacji za pomocą 10.0.2.15:8888 i gc: 8888. Jeśli możesz, robimy postępy.
Daniel Liston
Biorąc pod uwagę, że Twoim ostatecznym celem jest dotarcie do maszyny wirtualnej GC z innych hostów w sieci, NAT i tylko host dla karty VM nie są prawidłową odpowiedzią, chyba że lubisz konfigurować przekierowanie portów i specjalne trasy w systemie operacyjnym hosta. Naprawdę musisz współpracować z Bridged, jeśli chcesz dostać się tam, gdzie planujesz.
Daniel Liston
Dodałem 10.0.2.15 GCponiżej 127.0.1.1 GCw hostspliku mojego gościa . W ramach gość widzę aplikację za pośrednictwem localhost:8888, ale 10.0.2.15:8888daje mi ... ERR_CONNECTION_REFUSED.
Kirkland,
1
Potwierdza to moje podejrzenie, że nawet jeśli masz prawidłowy routing sieciowy do maszyny wirtualnej, nie będziesz w stanie korzystać z „aplikacji”, dopóki nie rozwiążesz problemu adresu, którego słucha. Twoja aplikacja jest powiązana z siecią pętli zwrotnej (127.xxx) i nie reaguje na adres przypisany do urządzenia eth0. Należy to poprawić, zanim przejdziemy do następnego kroku połączenia z hostem.
Daniel Liston
0

Aby to osiągnąć, myślę, że lepiej byłoby użyć trybu pomostowego. Jeśli nie jest to możliwe lub pożądane, będziesz potrzebować statycznej trasy na swoim hoście.

Aby dodać trasę statyczną, wykonaj następujące czynności: Sprawdź właściwości sieciowe swojego hosta. Powinieneś znaleźć adapter o nazwie VirtualBox Host-Only Network. Znajdź jego adres IP. Prawdopodobnie jest to 192.168.56.1, które moim zdaniem jest domyślne, ale może być czymś innym. Zadzwoń do abcd Następnie uzyskaj adres IP swojego gościa. Nazwij to wxyz (pierwsze 3 oktety powinny być takie same w obu adresach). Gdy to zrobisz, otwórz monit DOS na hoście i wpisz następujące polecenie:

route add w.x.y.z mask 255.255.255.0 a.b.c.d

Jeśli to zadziała, możesz uruchomić to samo polecenie z przełącznikiem -p, aby ustawić je na stałe (w przeciwnym razie zniknie przy następnym uruchomieniu hosta).

Charles Burge
źródło
Co rozumiesz przez „statyczną trasę na swoim hoście”?
Kirkland,
Twój host ma domyślną bramę, przez którą cały ruch jest kierowany, jeśli nie jest kierowany do innego hosta w tej samej podsieci. Ale ruch wychodzący nie może dostać się do gościa VM przez domyślną bramę, więc musisz powiedzieć mu, jak się tam dostać.
Charles Burge,
Zaktualizowałem swoją pierwotną odpowiedź, aby uzyskać instrukcje dotyczące tworzenia trasy statycznej.
Charles Burge
To odrobina przesady. Rozwiązaniem zalecanym przez VirtualBox i innych jest po prostu skonfigurowanie „adaptera samego hosta” jako drugiego połączenia sieciowego.
JakeGould,
Tak, zgadzam się, że to przesada. O wiele lepiej byłoby po prostu użyć połączenia mostkowego. To sprawia, że ​​gospodarz i gość są równi pod względem sieci.
Charles Burge,