Dans VirtualBox, comment puis-je configurer des machines virtuelles à hôte uniquement pouvant accéder à Internet?

99

Lors de la configuration de machines virtuelles avec VirtualBox, je souhaite souvent les caractéristiques suivantes

  • vm a une adresse IP statique
  • l'hôte peut accéder à vm sans redirection de port
  • vm peut accéder à internet
  • Je peux déplacer mon ordinateur portable d'un réseau à un autre (par exemple de la maison au bureau ou au café) sans me soucier de la sécurité ou de la reconfiguration du vm

Aucune des méthodes de connexion réseau de VirtualBox ne satisfait à ces exigences par elles-mêmes.

  • NAT
    Nécessite un transfert de port si vous souhaitez vous connecter à la machine virtuelle à partir de l'hôte.

  • Hôte uniquement
    La machine virtuelle ne peut pas accéder à Internet, sauf si l'hôte est un routeur.

  • Bridged
    Expose le vm au réseau; pas portable.

Christian Long
la source

Réponses:

110

Je peux obtenir la configuration souhaitée en configurant deux adaptateurs sur la machine virtuelle.

VirtualBox 4.2.12
Ubuntu 12.04 invité

Dans VirtualBox> Préférences> Réseau, configurez un réseau exclusivement hôte.

Le mien s'appelle vboxnet0, il est configuré manuellement:
ip 192.168.56.1
netmask 255.255.255.0
no dhcp

Configuration réseau de VirtualBox Configuration réseau de VirtualBox

Ensuite, dans les paramètres réseau de la machine virtuelle, configurez deux adaptateurs:

Adaptateur 1
hôte uniquement, vboxnet0

Adaptateur2
NAT

Démarrez la machine virtuelle et connectez-vous via la console fournie par VirtualBox.

Exécutez ceci pour voir vos adaptateurs:

ls /sys/class/net

Dans mon cas, les adaptateurs s'appelaient eth1 et eth2 (et lo, l'interface de bouclage).

Ensuite, éditez votre configuration réseau.

sudoedit /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback

# Host-only interface
auto eth1
iface eth1 inet static
        address         192.168.56.20
        netmask         255.255.255.0
        network         192.168.56.0
        broadcast       192.168.56.255

# NAT interface
auto eth2
iface eth2 inet dhcp

Notez eth1qu'aucune passerelle par défaut n'est spécifiée. eth2obtiendra une passerelle par défaut de DHCP.


Mise à jour de mars 2018

Voir cette réponse de @ Hugo14453 pour une version mise à jour qui fonctionne avec Ubuntu 17.10 et plus récent.

Christian Long
la source
1
Mise à jour: VirtualBox 4.3 a mis en place un service NAT qui semble éviter d’avoir besoin de deux interfaces. 6.4. Service de traduction d'adresses réseau
Christian Long le
4
Cela m'a beaucoup aidé, j'utilise Virtualbox pour le développement, et quand je suis chez moi, tout fonctionne correctement puisque j'ai la configuration du réseau à ma guise, le cauchemar commence lorsque je passe à un autre réseau (famille, entreprises ... ), Je dois changer les URL des sites Web, supprimer certains fichiers système, redémarrer, je ne sais pas combien de fois et la liste continue. Cette solution ne s’intéresse pas à votre réseau actuel, c’est pourquoi j’aime bien… Branchez simplement votre PC sur n’importe quel réseau et concentrez-vous sur votre travail.
Nabil Kadimi
1
Merci. Ne pas définir d'adresse de passerelle pour l'interface hôte uniquement a résolu mes problèmes.
Florian
2
Parfait. / etc / network / interfaces config était la clé MERCI !!!!
Byron Whitlock
1
"Notez que eth1 n’a pas de passerelle par défaut spécifiée. Eth2 obtiendra une passerelle par défaut de dhcp." <- CE COMMENTAIRE EST LA CLE.
Pere Pages
16

Je pourrais résoudre mon problème avec un mélange de solution de Christian Long. J'ai ajouté 2 adaptateurs:

Adaptateur 1 - NAT

Adaptateur 2 - hôte uniquement, vboxnet0

La seule différence était dans le fichier d'interface de VM:

sudoedit /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp

Dans la configuration réseau de VirtualBox, j'ai laissé DHCP vérifié.

Après un redémarrage de la VM, tout a bien fonctionné.

Alan Camillo
la source
Cela fonctionne pour moi, mais je veux que les ordinateurs virtuels aient des adresses IP statiques. Dès que je fais ça, Internet cesse de fonctionner. Si je configure les deux avec DHCP, cela fonctionne bien. Comment faire en sorte que l'interface réservée à l'hôte obtienne une adresse IP statique?
Umar Farooq Khawaja
Un seul qui a fonctionné. Merci. +1
Jorge Campos
14

Il n'y a pas d'autre moyen simple de créer un nouvel adaptateur NAT.

  1. Sur la machine hôte, veuillez ajouter les règles iptables suivantes. Cela transférera les paquets via l'hôte et sur Internet:

    sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT 
    
    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    sudo iptables -A POSTROUTING -t nat -j MASQUERADE
    
  2. Vous devrez également activer le transfert IP sur l'hôte en exécutant la commande suivante:

    sudo sysctl -w net.ipv4.ip_forward=1
    
Long Bui
la source
Cela ne fonctionne que sur un hôte Linux.
Derek Mahar
Nous avons besoin du service "dnsmasq" en cours d'exécution. Dans le lien unix.stackexchange.com/a/384187/61742, nous avons des informations complètes sur ce qui a été suggéré par @Danatela. Merci!
Eduardo Lucio
1
@ EduardoLucio, merci de donner des crédits à Long Bui. Je viens de modifier ce message pour le rendre plus lisible.
Danatela
@ Long Bui Merci pour votre contribution! Up! Up! Up! Up! Up! Up! = D
Eduardo Lucio
12

La configuration du réseau a été modifiée dans Ubuntu 17.10.1. Vous utilisez maintenant la configuration de netplan.

J'ai suivi ce guide ici

En tant que migration de la réponse de Christian, procédez comme suit:

Créez un nouveau fichier de configuration dans / etc / netplan pour contenir la configuration de votre adaptateur pour hôte uniquement.

par exemple sudo nano /etc/netplan/02-netcfg.yaml

Entrez les informations suivantes pour configurer une adresse IP statique de 192.168.56.12 où enp0s3est le nom de votre adaptateur d’hôte uniquement.

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s3:
            addresses:
                - 192.168.56.12/24
            dhcp4: no

Ensuite, exécutez les deux commandes suivantes:

sudo netplan generate
sudo netplan apply

NAT devrait fonctionner sans configuration, lancez ifconfigpour voir le résultat:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.12  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:fe06:6cdd  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:06:6c:dd  txqueuelen 1000  (Ethernet)
        RX packets 252  bytes 23076 (23.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 30015 (30.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.15  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::a00:27ff:fe4d:a6b8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:4d:a6:b8  txqueuelen 1000  (Ethernet)
        RX packets 95  bytes 94894 (94.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85  bytes 7436 (7.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Hugo
la source
1
Merci! J'ai ajouté une section de mise à jour à mon ancienne réponse et lié à cette nouvelle information.
Christian Long
Je vous ai suivi la solution, mais mademoiselle nat support pour enp0s8. J'ai ajouté manuellement enable dhcp4 pour enp0s8 dans netplan et enfin obtenir à la fois enp0s3 et enp0s8. J'espère que cela aidera quelqu'un.
Dzmitry Prakapenka
3

Je viens d'ajouter 2 adaptateurs:

Adaptateur 1 hôte uniquement, vboxnet0

Adaptateur2 NAT

Et cela fonctionne parfaitement, je peux accéder à la machine virtuelle à partir de l'hôte et j'ai Internet sur le vm.

Guillermo Gonzalez
la source
2

Oui j'ai eu ce problème c'était une douleur totale! Mais je l'ai résolu en installant simplement le serveur Squid Cache Proxy sur mon PC physique. Ainsi, mes PC virtualbox hébergés uniquement par l'hôte pouvaient se connecter à Internet!

J'ai fait un guide rapide de 3 minutes ici - pour tous ceux qui veulent comment ça marche! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/

B0zmeister
la source
Cela a bien fonctionné pour moi, merci pour le partage. C'est de loin le moyen le plus simple de tout faire fonctionner.
laurent
Bonjour Laurent - pas de problèmes - content que ça ait aidé! J'adore utiliser les ordinateurs virtuels sur un réseau différent, mais avec une connexion Internet fonctionnelle :)
B0zmeister
Le lien est mort maintenant. Pensez à déplacer les instructions ici.
s3v3n