Rappels et définitions rapides
La virtualisation
La virtualisation est une méthode qui permet de « virtualiser », c’est à dire d’effectuer une couche d’abstraction qui va permettre une émulation physique d’un système afin de pouvoir y installer un système d’opération (OS). Le but final de la virtualisation est de pouvoir à partir d’un seul ordinateur (l’ordinateur host) obtenir plusieurs systèmes (les systèmes guests).
Cette possibilité permet plusieurs avantages :
- réaliser des tests sur un autre système sans avoir à modifier son système d’origine,
- pouvoir créer plusieurs systèmes afin d’essayer une solution client-serveur,
- sauvegarder l’état du système virtualisé pendant des tests à l’aide de « snapshots », ce qui permet de gagner du temps (pas besoin de réinstaller le système, il suffit de revenir au dernier snapshot par exemple)
VirtualBox
Oracle VM VirtualBox (anciemment nommé VirtualBox) est un outil de Virtualisation libre et distribué par Oracle qui est disponible sur plusieurs plateformes (Windows, Linux, MacOS et Solaris).
Il existe plusieurs solutions de virtualisation : Hyper-V (Microsoft), VMware Workstation (VMware), les solutions CITRIX et encore d’autres solutions.
Les types de réseaux
VirtualBox support différents types de réseaux dont notamment :
- le mode bridge : la machine guest est directement connecté sur le réseau local de l’host et peut être contacté depuis les autres machines du même réseau
- le mode NAT : ceci permet une translation d’adresses IP, la machine guest se trouve dans un réseau séparé, les autres machines du réseau local et l’host ne peuvent pas contacter le guest car il ne possède pas d’adresse IP sur ce même réseau. Cependant le guest peut accéder aux autres machines du réseau et à Internet à travers la machine host.
- le mode VirtualBox Host-only : le guest (ou les guests) et l’host peuvent communiquer dans un réseau privé qui est isolé du réseau local de l’host (réseau d’entreprise ou du domicile).
Comment faire maintenant pour créer un réseau NAT et un réseau privé sous VirtualBox?
Avant de regarder comment faire pour créer cette configuration, il peut être utile de se poser la question pourquoi réaliser un réseau NAT et un réseau privé entre un guest et l’host?
Il peut être intéressant pour certains besoins à donner la possibilité au guest de contacter le réseau local, ainsi que d’avoir l’accès à Internet depuis le guest (ceci pourra être possible grâce au mode NAT) et le mode privé donnera la possibilité de créer un réseau privé où plusieurs guests pourront communiquer entre eux, à noter que l’hôte pourra également les contacter. Cette configuration permet de simuler un réseau pour effectuer un prototype de solution informatique (par exemple mettre en place une base de données, un serveur de fichier, un serveur applicatif, etc…)
Mise en place du réseau NAT
Comme pré-requis, il faut créer une machine virtuelle sous VirtualBox (pour mon exemple, j’ai pris une distribution ubuntu server 17.10).
Après cette configuration, nous pouvons vérifier les réglages par défaut de notre machine via la commande ifconfig, dans mon cas la commande affiche le résultat suivant :
On observe bien que le mode NAT, fonctionne car notre machine dispose d’une adresse IP interne et peut se connecter à Internet.
Mise en place du réseau privé
Création du réseau dans VirtualBox
Après avoir essayé votre machine guest en NAT, vous pouvez essayer maintenant de créer un nouveau réseau privé, pour cela vous devez créer un nouveau réseau au sein de VirtualBox, pour ce la il faut se rendre dans Fichier –> Host Network Manager :
Lors de la création du nouveau réseau, nous paramétrons manuellement le réseau :
- IPv4Address : 172.16.0.253 à adresse IP de l’Host qui lance VirtualBox, de cette manière on peut réserver l’IP 172.16.0.1 pour la machine guest
- Mask : 255.255.255.0 à le masque du sous-réseau réseau à appliquer
Configuration de la carte réseau pour la machine guest
Arrêter votre machine guest, puis ensuite nous allons affecter une nouvelle carte réseau depuis VirtualBox qui sera connecté sur ce réseau :
Configuration du réseau privé sous l’OS
Depuis la machine guest (sous Ubuntu 17.10), vous pouvez à nouveau lancer la commande ifconfig, vous ne verrez pour l’instant aucune différence. Avec la commande ifconfig -a, vous verrez qu’une nouvelle interface (enp0s8) est disponible mais non configuré.
Pour configurer le réseau sous Ubuntu 17.10, il faut utiliser l’outil netplan (dans les versions antérieures il fallait modifier le fichier /etc/network/interfaces)
Configuration de la carte réseau avec netplan
Il faut lancer la commande suivante pour éditer la configuration de netplan : sudo nano /etc/netplan/01-netcfg.yaml et vous pouvez y indiquer la configuration de votre nouvelle interface, par exemple voici le contenu que j’ai utilisé :
# This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: yes enp0s8: dhcp4: no addresses: [172.16.0.1/24]
Pour appliquer les modifications de la configuration du réseau, utiliser la commande suivante : sudo netplan apply
Lancer ensuite la commande ifconfig et vous verrez que votre interface a bien l’adresse privée que nous avions précédemment indiqué.
Pour finir le test, essayer de contacter le guest depuis votre host avec l’adresse privée que nous avons configuré, normalement tout devrait être fonctionnel et vous avez correctement configuré votre guest pour qu’il utilise deux réseaux (un NAT et un réseau privé) !
4 commentaires
Yannick · octobre 16, 2019 à 2:37 pm
Bonjour,
Et merci pour ce tuto qui m’a bien aidé pour configurer un cluster de VM sur VirtualBox.
Yannick
Vincent · novembre 20, 2019 à 9:39 pm
Bonjour,
Merci pour le commentaire et bonne suite avec VirtualBox :-).
Vincent.
keri · mars 23, 2020 à 9:32 am
Bonjour,
Merci pour votre tres bon tuto. J’ai reussi à configuré l’ip de ma VM. Par contre je n’arrive pas à acceder a mon serveur appache hebergé sur ma VM ubuntu depuis mon Host Windows 10. Ai-je raté quelque chose ?
Merci beaucoup
Vincent · juin 26, 2020 à 8:25 pm
Bonjour,
Désolé pour la réponse tardive, si jamais vous n’avez pas encore résolu le problème, voici quelques pistes :
les raisons peuvent être multiples, par exemple est-ce que le service Apache est bien up sur le serveur Ubuntu? Est-ce que vous avez un soucis avec un firewall sur votre machine Host Windows? Le serveur Apache est bien configuré et écoute sur le bon port?
Vincent.