Connettersi al computer host da un SO guest VirtualBox?


214

Vorrei essenzialmente accedere al mio computer host dal guest in VirtualBox. È disponibile un indirizzo IP per il mio host che posso utilizzare dal guest? Sono necessari ulteriori passaggi per configurarlo? Vorrei accedere ai servizi Apache, FTP e SSH del mio host.


1
Difficile da risolvere senza alcun indizio su quale configurazione di rete abbia effettivamente il tuo ospite. Alcuni non consentono l'accesso all'host. Prova l'indirizzo gateway predefinito del guest.
Turbo J,

7
Risulta che posso raggiungerlo tramite il mio gateway predefinito in 10.0.2.2.
Naftuli Kay,

Risposte:


258

Questa risposta riguarda praticamente una configurazione del SO guest in VirtualBox; è sufficiente utilizzare l'indirizzo del gateway di rete sul SO guest per connettersi al SO host da un SO guest.

Nella configurazione predefinita di Vagrant, dovresti essere in grado di raggiungere il tuo host tramite il gateway predefinito.

Sui guest basati su Windows, è possibile determinare facilmente questo indirizzo IP eseguendo il comando:

ipconfig

Dovrebbe scaricare qualcosa del genere:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

In questo esempio, il guest può raggiungere la macchina host 10.0.2.2.


Sui guest basati su Unix / Linux, utilizzare il comando:

netstat -rn

Dovrebbe scaricare qualcosa del genere:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

In questo esempio, il guest può raggiungere la macchina host 192.168.1.1.


Qualche idea sul perché la connettività sarebbe tremendamente lenta quando ci si connette usando il gateway predefinito secondo la tua risposta?
Ben Swinburne,

Questo non sembra funzionare per me (Ubuntu 12.04, Vagrant 1.0). Il gateway predefinito all'interno del guest ha mostrato come 10.0.2.2e una nmap di quell'IP non è riuscita. 192.168.33.1 sembra essere l'IP giusto. (Ho avuto config.vm.network :hostonly, "192.168.33.52"nella mia configurazione.)
Ajedi32

In realtà, non importa. Ha funzionato nmap semplicemente non funzionava per qualche motivo; non so perché. Potrei ancora connettermi ai servizi in esecuzione sull'host da quell'IP, anche se nmap non li mostrava.
Ajedi32,

1
netstat -rnsu CentOS 7.2, Docker 1.11 visualizzava un 172.17indirizzo come gateway, ma quell'IP non corrispondeva al mio host. Si scopre che ha 10.0.2.2fatto.
Spencer Williams,

1
Come facciamo a sapere quale di queste voci è il gateway?
Kramer,

36

L'accesso al server Web del computer host dall'ospite è semplice. Questo può essere fatto facilmente usando due metodi. Per prima cosa, procedi come segue

  • Vai a Dispositivi e seleziona Schede di rete ...
  • Nelle impostazioni dell'adattatore, selezionare Allegati a .
  • Se il valore è NAT , procedere come segue

  • Il gateway predefinito quando si configura Virtual box è generalmente 10.0.2.2come valore predefinito. Se non hai cambiato nulla, funzionerà. Ma se è stato modificato e il computer guest in esecuzione è Windows, eseguire il comando seguente e trovare il gateway predefinito

    ipconfig /all

    Se sei su Linux, Unix o Mac OS, esegui il seguente comando per ottenerlo

    netstat -rn | grep 'default' | awk '{print $2}'

  • Vai al browser web e digita questo gateway predefinito e premi invio. È possibile accedere al web server.

  • Se il valore è Bridged Adapter , procedere come segue
    • trova l'indirizzo IP dell'host e dell'ospite
      • se sei su Windows, esegui ipconfige ottieni l'indirizzo IP
      • se sei su Linux, Unix o Mac OS, esegui ifconfig | grep 'inet' e ottieni l'indirizzo IP
      • l'indirizzo IP è come 192.168.1.1
    • se si desidera accedere all'host, eseguire il browser nell'ospite e inserire l'indirizzo IP dell'host
    • se si desidera accedere al guest, eseguire il browser nell'host e inserire l'indirizzo IP del guest

9

Un altro modo per farlo è utilizzare un tipo "Host" di rete virtuale. Ciò fornisce un'interfaccia nel sistema operativo guest con un indirizzo su una sottorete locale diversa dalle sottoreti "mondo esterno" su cui si trova il computer host. Per farlo funzionare, devi assicurarti di alcune cose:

  • La VM ha un adattatore "solo host" configurato;
  • I servizi host devono essere in ascolto su tutti gli adattatori locali, o almeno quelli che si desidera poter contattare;
  • Il tuo host otterrà il suo adattatore virtuale e vorrai capire il suo indirizzo IP e aggiungerlo al file "hosts" nel tuo SO guest (comunque che funzioni per il SO guest; su Windows XP, è solo il " host "file sepolto in C: / WINDOWS / system32 / drivers / ecc.). Dagli un nome che desideri utilizzare come nome host dell'host.

Una volta fatto questo, dovresti essere in grado di "vedere" l'host dalla VM tramite il nome che hai codificato nel file host.

Ad esempio, sul mio host Ubuntu 11.04, ottengo un'interfaccia virtuale "vboxnet0" su 192.168.56.1. Gli adattatori nelle macchine escono con qualcosa come 192.168.56.101. Non ho bisogno di andare in al mio macchine virtuali, ma presumo che sarebbe possibile attraverso una modifica simmetrica per file host dell'host. aggiungo

192.168.56.1 mymachine

ai file host del SO guest e possono (ad esempio) vedere il server web della mia macchina host su

http://mymachine/whatever

Naturalmente è possibile configurare sia adattatori con bridge sia solo host.


0

È possibile creare cartelle condivise in VirtualBox. Ciò creerà automaticamente una "condivisione di rete" all'interno di Virtual Box per accedere alle cartelle nel sistema operativo host.

Ecco un passo passo decente in un sistema operativo guest Windows XP:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/


Quindi posso accedere al mio host su / vboxsvr / ShareName?
Naftuli Kay,

Sì, imposteresti una cartella come C: \ STUFF da condividere con VirtualBox. All'interno del SO guest VirtualBox, puoi andare su quel vboxserver e accedere alle cartelle condivise.
Kobaltz,

In realtà non voglio la cartella condivisa. Voglio un indirizzo IP per la mia macchina host. Quando lo ricevo, vorrei usarlo per utilizzare i servizi sul mio computer host, ovvero: echo "GET /\r\n\r\n" | nc 192.168.100.100 80(invia una richiesta HTTP GET al mio computer host dal guest.)
Naftuli Kay,

1
In tal caso, potrebbe essere necessario impostare la scheda di rete del SO guest su un Bridge. Ciò estrarrà un indirizzo IP dal tuo DHCP o router. Saresti quindi in grado di accedere in modo nativo al tuo computer host tramite l'indirizzo IP anziché la cartella condivisa VBox.
Kobaltz,

0

Ecco un'altra soluzione a questo problema utilizzando un'interfaccia di rete aggiuntiva e impostando il traffico destinato all'host da instradare su un'interfaccia aggiuntiva.


4
Benvenuto in Super User! Sarebbe bello includere qui le parti essenziali della risposta e fornire il link solo per riferimento futuro.
slhck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.