Lors de la configuration de machines virtuelles avec VirtualBox, je souhaite souvent les caractéristiques suivantes
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 seulement
Le vm ne peut pas accéder à Internet, à moins que l'hôte ne soit un routeur.
Ponté
Expose le vm sur le réseau; pas portable.
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
masque de réseau 255.255.255.0
pas de dhcp
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 que eth1
n'a pas de passerelle par défaut spécifiée. eth2
obtiendra une passerelle par défaut de dhcp.
Voir cette réponse de @ Hugo1445 pour une version mise à jour qui fonctionne avec Ubuntu 17.10 et les versions plus récentes.
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 VM redémarrage, tout a bien fonctionné.
Il existe un autre moyen simple de ne pas créer un nouvel adaptateur NAT
Sur la machine hôte, veuillez ajouter les règles iptables suivantes. Cela fera suivre 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
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
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ù enp0s3
est 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, exécutez ifconfig
pour 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
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.
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/