Bannière

Configurer un réseau NAT avec VirtualBox sous Linux

  Le 4 décembre 2023     Aurélien Schnoebelen     #réseau-nat#virtualbox  

Dans cet article, nous allons voir comment créer un réseau NAT pour VirtualBox sous linux. Dans un soucis de simplicité, je détaillerai les étapes en ligne de commande car sinon il faudrait alterner entre interface graphique et ligne de commande, car certaines actions peuvent se réaliser des deux manières, d’autres uniquement en ligne de commande.

1. Création et activation du réseau NAT

Tout d’abord il est possible de lister les réseaux NAT existants via la commande vboxmanage list natnetworks :

aurelien@ubuntu:~$ vboxmanage list natnetworks
Name:         Nat P09
Network:      192.168.2.0/24
Gateway:      192.168.2.1
DHCP Server:  No
IPv6:         No
IPv6 Prefix:  fd17:625c:f037:a802::/64
IPv6 Default: No

Pour créer un réseau NAT, on utilise la commande suivante : vboxmanage natnetwork add --netname <nom-du-réseau-NAT> --network "<adresse-IP-réseau>/<masque>" --enable. Par exemple :

aurelien@ubuntu:~$ vboxmanage natnetwork add --netname "LAB Sandbox" --network "192.168.3.0/24" --enable
aurelien@ubuntu:~$ vboxmanage list natnetworks
Name:         Nat P09
Network:      192.168.2.0/24
Gateway:      192.168.2.1
DHCP Server:  No
IPv6:         No
IPv6 Prefix:  fd17:625c:f037:a802::/64
IPv6 Default: No

Name:         LAB Sandbox
Network:      192.168.3.0/24
Gateway:      192.168.3.1
DHCP Server:  Yes
IPv6:         No
IPv6 Prefix:  fd17:625c:f037:2::/64
IPv6 Default: No

On peut activer ou désactiver le DHCP en fonction des besoins via la commande vboxmanage natnetwork modify --netname <nom-du-réseau-NAT> --dhcp [on/off]. Exemple :

aurelien@ubuntu:~$ vboxmanage natnetwork modify --netname "LAB Sandbox" --dhcp off
aurelien@ubuntu:~$ vboxmanage list natnetworks
Name:         Nat P09
Network:      192.168.2.0/24
Gateway:      192.168.2.1
DHCP Server:  No
IPv6:         No
IPv6 Prefix:  fd17:625c:f037:a802::/64
IPv6 Default: No

Name:         LAB Sandbox
Network:      192.168.3.0/24
Gateway:      192.168.3.1
DHCP Server:  No
IPv6:         No
IPv6 Prefix:  fd17:625c:f037:2::/64
IPv6 Default: No

Enfin il est nécessaire d’activer le réseau NAT avec la commande : vboxmanage natnetwork start --netname <nom-du-réseau-NAT>. Exemple :

aurelien@ubuntu:~$ vboxmanage natnetwork start --netname "LAB Sandbox"

2. Consulter la liste des serveurs DHCP et leur état

On peut taper la commande vboxmanage list dhcpservers pour afficher la liste des serveurs DHCP configurés dans VirtualBox, ainsi que leurs adresses IP et états. Exemple :

aurelien@ubuntu:~$ vboxmanage list dhcpservers

NetworkName:    LAB Sandbox
Dhcpd IP:       192.168.3.3
LowerIPAddress: 192.168.3.4
UpperIPAddress: 192.168.3.254
NetworkMask:    255.255.255.0
Enabled:        Yes
Global Configuration:
    minLeaseTime:     default
    defaultLeaseTime: default
    maxLeaseTime:     default
    Forced options:   None
    Suppressed opts.: None
        1/legacy: 255.255.255.0
        3/legacy: 192.168.3.1
        6/legacy: 192.168.3.1
       15/legacy: .
Groups:               None
Individual Configs:   None

Pour supprimer un serveur DHCP on utilise la commande vboxmanage dhcpserver remove --netname <nom-du-réseau>

3. Supprimer un réseau NAT

On utilisera la commande vboxmanage natnetwork remove --netname <nom-du-réseau-NAT> pour supprimer un réseau NAT. Il faudra cependant veiller à ce que le serveur DHCP correspondant soit bien supprimé également (cf le chapitre 2. sur les serveurs DHCP).

4. Paramétrer une redirection NAT

Pour créer une redirection NAT (pour pouvoir se connecter en ssh sur la machine par exemple), on utilisera la commande suivante :

vboxmanage natnetwork modify --netname  --port-forward-4 "nom-de-la-redirection:type-de-connexion:[adresse-ip-locale]:port-local:[adresse-ip-distante]:port-distant

Avec :

  • type-de-connexion = tcp ou udp.
  • –port-forward-4 ou –port-forward-6 pour utiliser l’IPv4 ou l’IPv6.

Par exemple, pour une connexion ssh je souhaite rediriger les connexions locales sur le port 2201 vers le serveur 192.168.3.4 sur le port 22 :

aurelien@ubuntu:~$ vboxmanage natnetwork modify --netname "LAB Sandbox" --port-forward-4 "ssh:tcp:[127.0.0.1]:2201:[192.168.3.4]:22"

5. Configurer un réseau NAT dans VirtualBox

Dans l’interface graphique de VirtualBox (penser à le redémarrer si l’on a effectué les commandes alors qu’il était déjà ouvert), sélectionner la VM que l’on veut ajouter au réseau NAT et cliquer sur « Réseau »

Dans la liste déroulante « Mode d’accès réseau » sélectionner « Réseau NAT », et dans « Name » le nom du réseau dans lequel on souhaite mettre la VM :

Puis on valide avec OK. La machine sera désormais isolée dans le réseau NAT choisi, tout en gardant une connectivité Internet. Exemple pour la machine Debian ajoutée dans le réseau que l’on a configuré :

aurelien@SRV-ANSIBLE:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:6e:9c:9d brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.4/24 brd 192.168.3.255 scope global dynamic enp0s3
       valid_lft 355sec preferred_lft 355sec
    inet6 fe80::a00:27ff:fe6e:9c9d/64 scope link 
       valid_lft forever preferred_lft forever