Connectez-vous à la machine hôte à partir d'un système d'exploitation invité VirtualBox?

214

J'aimerais essentiellement accéder à mon ordinateur hôte à partir de l'invité de VirtualBox. Existe-t-il une adresse IP pour mon hôte que je peux utiliser à partir de l'invité? Y at-il des étapes supplémentaires nécessaires pour configurer cela? J'aimerais accéder aux services Apache, FTP et SSH de mon hôte.

Naftuli Kay
la source
1
Difficile à résoudre sans aucune indication de la configuration réseau de votre invité. Certains n'autorisent pas l'accès à l'hôte. Essayez l'adresse de passerelle par défaut de l'invité.
Turbo J
7
Il se trouve que je peux y accéder via ma passerelle par défaut à 10.0.2.2.
Naftuli Kay

Réponses:

258

Cette réponse concerne à peu près une configuration d’OS invité dans VirtualBox; il vous suffit d'utiliser l'adresse de la passerelle réseau sur le système d'exploitation invité pour vous connecter au système d'exploitation hôte à partir d'un système d'exploitation invité.

Dans la configuration par défaut Vagrant, vous devriez pouvoir atteindre votre hôte via la passerelle par défaut.

Sur les invités Windows, vous pouvez facilement déterminer cette adresse IP en exécutant la commande suivante:

ipconfig

Cela devrait évacuer quelque chose comme ceci:

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

Dans cet exemple, l'invité peut atteindre la machine hôte 10.0.2.2.


Sur les invités Unix / Linux, utilisez la commande:

netstat -rn

Cela devrait évacuer quelque chose comme ceci:

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

Dans cet exemple, l'invité peut atteindre la machine hôte 192.168.1.1.

Naftuli Kay
la source
Avez-vous une idée de la raison pour laquelle la connectivité serait terriblement lente lors de la connexion à l'aide de la passerelle par défaut, conformément à votre réponse?
Ben Swinburne
Cela ne semblait pas fonctionner pour moi (Ubuntu 12.04, Vagrant 1.0). La passerelle par défaut à l'intérieur de l'invité était représentée par 10.0.2.2et un nmap de cette adresse IP a échoué. 192.168.33.1 semble être la bonne adresse IP. (J'ai eu config.vm.network :hostonly, "192.168.33.52"dans ma config.)
Ajedi32
En fait, tant pis. Cela a fonctionné. nmap ne fonctionnait tout simplement pas pour une raison quelconque; pas certain de pourquoi. Je pouvais toujours me connecter aux services fonctionnant sur l'hôte à partir de cette adresse IP, même si nmap ne les montrait pas.
Ajedi32
1
netstat -rnsur CentOS 7.2, Docker 1.11 affichait une 172.17adresse comme passerelle, mais cette adresse IP ne correspondait pas à celle de mon hôte. Il s'avère que c'est ce qui 10.0.2.2s'est passé.
Spencer Williams
1
Comment savons-nous laquelle de ces entrées est la passerelle?
Kramer
36

L'accès au serveur Web de l'ordinateur hôte à partir de l'invité est facile. Cela peut être fait facilement en utilisant deux méthodes. D'abord faire ce qui suit

  • Allez sur Périphériques et sélectionnez Cartes réseau ...
  • Dans les paramètres de l’adaptateur, cochez la case Connecté à .
  • Si la valeur est NAT , procédez comme suit

  • La passerelle par défaut lorsque vous configurez la boîte virtuelle est généralement la 10.0.2.2valeur par défaut. Si vous n'avez rien changé, cela fonctionnera. Mais si vous l'avez changé et que l'ordinateur invité que vous utilisez est Windows, exécutez la commande suivante et trouvez la passerelle par défaut

    ipconfig /all

    Si vous êtes sous Linux, Unix ou Mac OS, exécutez la commande suivante pour l'obtenir

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

  • Accédez au navigateur Web, tapez cette passerelle par défaut et appuyez sur Entrée. Le serveur Web est accessible.

  • Si la valeur est Bridged Adapter , procédez comme suit.
    • trouver l'adresse IP de l'hôte et de l'invité
      • si vous êtes sur Windows, lancez ipconfiget obtenez l'adresse IP
      • si vous êtes sous Linux, Unix ou Mac OS, lancez ifconfig | grep 'inet' et obtenez l'adresse IP
      • l'adresse IP est comme 192.168.1.1
    • si vous voulez accéder à l'hôte, lancez le navigateur dans guest et entrez l'adresse IP de l'hôte
    • si vous voulez accéder à l'invité, lancez le navigateur dans l'hôte et entrez l'adresse IP de l'invité.
Prabhu
la source
9

Une autre façon de faire consiste à utiliser un réseau virtuel de type "hôte". Cela vous donne une interface dans l'OS invité avec une adresse sur un sous-réseau local différente du ou des sous-réseaux "extérieur" sur lequel votre ordinateur hôte est allumé. Pour que cela fonctionne, vous devez vous assurer de quelques choses:

  • Votre machine virtuelle a un adaptateur "hôte uniquement" configuré;
  • Vos services hôtes doivent être à l'écoute de tous les adaptateurs locaux, ou du moins de ceux que vous souhaitez pouvoir contacter.
  • Votre hôte obtiendra son propre adaptateur virtuel et vous voudrez trouver son adresse IP et l'ajouter au fichier "hosts" de votre OS invité (bien que cela fonctionne pour l'OS invité; sous Windows XP, c'est simplement le " "hôtes" dans le fichier C: / WINDOWS / system32 / drivers / etc). Donnez-lui le nom que vous souhaitez utiliser pour le nom d'hôte de l'hôte.

Une fois que cela est fait, vous devriez pouvoir "voir" l'hôte à partir de la VM via le nom que vous avez codé dans le fichier hôte.

Par exemple, sur mon hôte Ubuntu 11.04, je reçois une interface virtuelle "vboxnet0" sur 192.168.56.1. Les adaptateurs des machines proposent quelque chose comme 192.168.56.101. Je ne ai pas besoin d'aller dans ma VMs, mais je suppose que ce serait possible via un changement symétrique au fichier hôte de l'hôte. J'ajoute

192.168.56.1 mymachine

fichiers hôtes de l'OS invité, et ils peuvent (par exemple) voir le serveur Web de ma machine hôte à l'adresse

http://mymachine/whatever

Vous pouvez bien entendu configurer des adaptateurs pontés et des adaptateurs hôtes uniquement.

Pointu
la source
0

Vous pouvez créer des dossiers partagés dans VirtualBox. Cela créera automatiquement un «partage réseau» dans Virtual Box pour accéder aux dossiers de votre système d'exploitation hôte.

Voici une étape décente dans un OS invité Windows XP:

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

kobaltz
la source
Donc, je peux accéder à mon hôte à / vboxsvr / ShareName?
Naftuli Kay
Oui, vous définiriez un dossier tel que C: \ STUFF à partager avec VirtualBox. Dans l'OS invité de VirtualBox, vous pouvez accéder à ce vboxserver et accéder aux dossiers partagés.
Kobaltz
En fait, je ne veux pas le dossier partagé. Je veux une adresse IP pour ma machine hôte. Lorsque je le reçois, j'aimerais l'utiliser pour utiliser des services sur ma machine hôte, c'est-à-dire: echo "GET /\r\n\r\n" | nc 192.168.100.100 80(envoyer une demande HTTP GET à ma machine hôte depuis l'invité.)
Naftuli Kay
1
Dans ce cas, vous devrez peut-être configurer votre adaptateur réseau du système d'exploitation invité sur un pont. Cela va tirer une adresse IP de votre DHCP ou routeur. Vous pourrez alors accéder en mode natif à votre ordinateur hôte via l'adresse IP au lieu du dossier partagé de la VBox.
Kobaltz
0

Voici une autre solution à ce problème en utilisant une interface réseau supplémentaire et en configurant le trafic destiné à l'hôte pour le router sur une interface supplémentaire.

programmer101
la source
4
Bienvenue sur Super User! Il serait bien d’inclure ici les éléments essentiels de la réponse et de ne fournir le lien que pour référence future.
Slhck