Aller au contenu

VirtualBox : réseau

Chaque machine dispose de plusieurs cartes réseau (--nic1 à --nic8), chacune dans un mode.

Mode Option Invité vers Internet Hôte vers invité Autres machines du réseau vers l’invité
NAT --nic1 nat Oui Seulement avec redirection de port Non
Réseau par pont --nic1 bridged Oui Oui Oui (adresse du réseau local)
Hôte uniquement --nic1 hostonly Non Oui Non
Réseau interne --nic1 intnet Non Non Entre machines du même réseau interne
NAT Network --nic1 natnetwork Oui Avec redirection Entre machines du même réseau NAT

Le NAT est le défaut. Pour joindre l’invité depuis l’hôte, rediriger des ports :

Fenêtre de terminal
VBoxManage modifyvm srv1 --natpf1 "ssh,tcp,127.0.0.1,2222,,22"
VBoxManage modifyvm srv1 --natpf1 "web,tcp,127.0.0.1,8080,,80"
VBoxManage showvminfo srv1 | grep -i "NIC 1 Rule"
VBoxManage modifyvm srv1 --natpf1 delete web

Format : nom,protocole,adresse-hôte,port-hôte,adresse-invité,port-invité.

Fenêtre de terminal
ssh -p 2222 admin@127.0.0.1

Avec 127.0.0.1 comme adresse de l’hôte, le port n’est joignable que depuis l’hôte lui-même. Sans adresse (champ vide), il écoute sur toutes les interfaces : n’ouvrir ainsi un service que volontairement et le filtrer avec UFW.

Si la machine tourne déjà, utiliser VBoxManage controlvm srv1 natpf1 "ssh,tcp,127.0.0.1,2222,,22" pour modifier la redirection à chaud.

L’invité obtient une adresse du réseau local, comme une machine physique.

Fenêtre de terminal
VBoxManage list bridgedifs | grep -E "^(Name|Status)"
VBoxManage modifyvm srv1 --nic1 bridged --bridgeadapter1 enp3s0

Le pont fonctionne avec une interface filaire ; la plupart des interfaces Wi-Fi et de nombreux réseaux de fournisseurs (VPS) refusent plusieurs adresses MAC sur un même port : dans ce cas, utiliser NAT ou hôte uniquement.

Réseau privé entre l’hôte et les machines, sans accès extérieur :

Fenêtre de terminal
VBoxManage hostonlyif create
VBoxManage list hostonlyifs
VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
VBoxManage modifyvm srv1 --nic2 hostonly --hostonlyadapter2 vboxnet0

Une machine peut avoir deux cartes : nic1 en NAT pour sortir sur Internet, nic2 en hôte uniquement pour s’y connecter depuis l’hôte.

Depuis VirtualBox 6.1.28, les plages d’adresses utilisables sont limitées par /etc/vbox/networks.conf :

Fenêtre de terminal
sudo mkdir -p /etc/vbox
echo '* 192.168.56.0/21' | sudo tee /etc/vbox/networks.conf

Sans cette autorisation, la création de l’interface échoue (VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl ou erreur de plage). La plage 192.168.56.0/21 correspond à la valeur par défaut.

Configuration d’une adresse fixe dans l’invité Ubuntu (Netplan, /etc/netplan/60-hostonly.yaml) :

network:
version: 2
ethernets:
enp0s8:
addresses: [192.168.56.10/24]
Fenêtre de terminal
sudo chmod 600 /etc/netplan/60-hostonly.yaml
sudo netplan apply

Réseau fermé entre machines, sans l’hôte :

Fenêtre de terminal
VBoxManage modifyvm srv1 --nic2 intnet --intnet2 reseau-prive
VBoxManage modifyvm srv2 --nic2 intnet --intnet2 reseau-prive

Aucun serveur DHCP : configurer des adresses fixes dans les invités, ou ajouter un serveur DHCP (VBoxManage dhcpserver add --network=reseau-prive …).

Plusieurs machines dans un même réseau NAT, avec accès à Internet :

Fenêtre de terminal
VBoxManage natnetwork add --netname reseau-nat --network "10.0.2.0/24" --enable --dhcp on
VBoxManage modifyvm srv1 --nic1 natnetwork --nat-network1 reseau-nat
VBoxManage natnetwork modify --netname reseau-nat --port-forward-4 "ssh:tcp:[]:2223:[10.0.2.15]:22"
Fenêtre de terminal
VBoxManage modifyvm srv1 --nic1 nat --nic-type1 virtio
VBoxManage modifyvm srv1 --macaddress1 080027AABBCC
VBoxManage modifyvm srv1 --cable-connected1 on

--nic-type1 virtio offre de meilleures performances pour un invité Linux (Ubuntu reconnaît le pilote).

Les ports redirigés en NAT sont servis par le processus de VirtualBox sur l’hôte : UFW les filtre comme tout port en écoute.

Fenêtre de terminal
sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp comment 'SSH vers srv1'

Voir UFW : écrire des règles. Un redirection sur 127.0.0.1 n’a pas besoin de règle : elle n’est pas joignable de l’extérieur.

Symptôme Piste
L’invité n’a pas d’adresse DHCP du NAT non joignable : vérifier --nic1 nat et --cable-connected1 on ; relancer l’interface dans l’invité
Connexion à 127.0.0.1:2222 refusée Redirection absente (showvminfo), SSH non installé dans l’invité, pare-feu de l’invité
VERR_INTNET_FLT_IF_NOT_FOUND / bridged ne marche pas Interface physique incorrecte, ou module vboxnetflt absent
Création de vboxnet0 refusée /etc/vbox/networks.conf : autoriser la plage
L’invité est joignable en pont mais sans Internet Passerelle ou DNS de l’invité (Netplan)
Deux machines avec la même adresse Adresses MAC identiques après un clonage : --macaddress1 auto ou clonevm sans keepallmacs

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Les modes réseau sont les mêmes ; les options hôte uniquement et NAT Network ont changé de forme en VirtualBox 7.0 (--nic1 hostonlynet est une alternative à hostonly depuis 7.0). La configuration réseau de l’invité Ubuntu utilise Netplan sur les deux versions.