Przekierowanie portu Virtualbox z gościa do hosta [zamknięte]

162

Oto moja konfiguracja:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

Ustawiam serwer WWW Apache na Gość, ale chcę mieć możliwość zrobienia tego na komputerze z systemem Windows:

- go to the browser, type http://localhost:8000

Próbowałem także zmienić sieć na most i otrzymałem nowy adres IP. Ale kiedy próbowałem zrobić http: //: 8000, mówi, że nie może się połączyć.

Carmen
źródło
1
Miałem ten sam problem. Okazało się, że system gościa miał aktywną zaporę ogniową, która blokowała port 80.
Nicholas Shanks,
149
Jako programista internetowy, który używa VirtualBox jako części mojego codziennego przepływu pracy, nie zgadzam się z oznaczeniem tego jako nie na temat. Rozważ ponowne otwarcie.
cykl zapasowy
1
1. Przejdź do maszyny wirtualnej 2. ifconfig (pobierz lokalny adres IP - powinno być 10.0.2.X) 3. ssh 10.0.2.2, aby dostać się do komputera głównego
Mark Roberts
@deeperDATA Może to należeć do zakresu pracy programisty internetowego, ale przepełnienie stosu nie ma na celu hermetyzowania każdej części zadania. Świadectwem złożoności naszej profesji jest to, że jej wymagania obejmują wiele witryn wymiany stosów.
Kevin Lawrence,
1
Zajęło mi dużo czasu, zanim to zadziałało. Naszym problemem było powiązanie IP aplikacji w systemie gościa, które było powiązane z nazwą komputera, czyli 127.0.1.1 w systemie ubuntu. Zmieniliśmy wiązanie na 0.0.0.0. Ustawienia przekierowania portów: Host IP = DNS Host IP, Host Port = 8080, Guest IP = IP of eth0, Guest Port = 8080.
powolny

Odpowiedzi:

222

Host komunikacji sieciowej -> Gość

Połącz się z Gośćem i znajdź adres IP:

ifconfig 

przykład wyniku (adres IP to 10.0.2.15):

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

Przejdź do okna instancji Vbox -> Menu -> Karty sieciowe:

  • adapter powinien być NAT
  • kliknij „przekierowanie portów”
  • wstaw nowy rekord (+ ikona)
    • dla adresu IP hosta wprowadź 127.0.0.1, a dla adresu IP gościa uzyskanego z poprzedniego. krok (w moim przypadku jest to 10.0.2.15)
    • w twoim przypadku port to 8000 - umieść go na obu, ale możesz zmienić port hosta, jeśli wolisz

Przejdź do systemu hosta i wypróbuj w przeglądarce:

http://127.0.0.1:8000

lub sieciowy adres IP (sprawdź na komputerze hosta, uruchamiając: ipconfig).

Komunikacja sieciowa Gość -> Host

W takim przypadku przekierowanie portów nie jest potrzebne, komunikacja przechodzi przez sieć LAN z powrotem do hosta.

Na komputerze-hoście - znajdź swój sieciowy adres IP:

ipconfig

przykład wyniku:

IP Address. . . . . . . . . . . . : 192.168.5.1

Na komputerze gościa możesz komunikować się bezpośrednio z hostem, np. Sprawdź to za pomocą polecenia ping:

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...
Robert Lujo
źródło
11
oba porty nie będą 8000. Port hosta będzie 8000 lub jakikolwiek inny, ale port gościa powinien mieć 80
Yasin
5
W tym przypadku przejście z maszyny wirtualnej do hosta powinno być możliwe, przechodząc do maszyny wirtualnej i uzyskując adres IP ITS (10.0.2.15, jak poniżej). Aby dostać się do maszyny hosta z maszyny wirtualnej, adres IP to 10.0.2.2 (zgodnie z konwencją).
Mark Roberts
5
Jeśli używasz NAT dla gościa ... Jeśli usługa uruchomiona na hoście jest powiązana tylko z adresem 127.0.0.1, gość nie może użyć publicznego adresu IP hosta, aby połączyć się z tą usługą (na przykład usługa: privoxy). Zamiast tego musisz użyć 10.0.2.2, jak wspomniał Mark, lub cokolwiek 'route -n' (uruchom na gościu) pokazuje jako bramę domyślną.
desm
4
W przypadku CentOS być może będziemy musieli wyłączyć zaporę ogniową lub edytować określone reguły w iptable
Reddy
2
Odkryłem, że nie jest konieczne określanie adresów IP hosta lub gościa i możesz po prostu pozostawić puste pola. Chociaż jeśli chcesz łączyć się tylko z lokalnego hosta, prawdopodobnie dobrym pomysłem jest ustawienie 127.0.0.1 jako hosta.
mwfearnley
14

To nie jest możliwe. localhostzawsze domyślnie jest to urządzenie sprzężenia zwrotnego w lokalnym systemie operacyjnym.
Ponieważ twoja maszyna wirtualna działa we własnym systemie operacyjnym, ma własne urządzenie sprzężenia zwrotnego, do którego nie masz dostępu z zewnątrz.

Jeśli chcesz uzyskać do niego dostęp np. W przeglądarce, połącz się z nim za pomocą lokalnego adresu IP:

http://192.168.180.1:8000

To jest oczywiście tylko przykład. Rzeczywisty adres IP można znaleźć, wydając ifconfigpolecenie w powłoce w systemie operacyjnym gościa.

Chris
źródło
Próbowałem tego również, ale nie działało zarówno dla NAT, jak i mostu. Logi Apache w gościu nie powodują żadnych błędów, a apache jest uruchomiony w gościu.
Carmen
Czy na pewno używasz prawidłowego adresu IP? Możesz to sprawdzić, próbując uzyskać dostęp do adresu z wnętrza maszyny wirtualnej. Jeśli to się nie powiedzie, albo używasz złego adresu IP, albo twój apache nie jest skonfigurowany do nasłuchiwania na porcie 8080.
Chris
Pracował dla mnie - dzięki!
Matt Frear,
U mnie też zadziałało. Przed zastąpieniem „localhost” adresem IP systemu operacyjnego hosta zawsze otrzymywałem „Serwer odmówił dostępu do klucza” i „Odmowa dostępu” bez wyjaśnienia w /var/log/auth.log pomimo LogLevel DEBUG3 w / etc / ssh / sshd_config
VR
@Chris czy to oznacza, że ​​na hoście, z wpisami hosta wirtualnego, takimi jak mysite.localhost, nie będą dostępne dla maszyny gościa, ponieważ muszę odwoływać się do hosta tylko przy użyciu adresu IP?
danjah