Bridge ou NAT pour votre Homelab ?
Mise à jour :
Lorsque vous travaillez avec des machines virtuelles, comprendre les modes réseau disponibles est essentiel pour répondre à vos besoins en connectivité. Les deux modes les plus populaires, le bridge et le NAT, offrent des solutions adaptées à différents scénarios.
Dans ce guide, nous allons approfondir ces modes réseau, explorer leurs fonctionnalités, apprendre à les configurer, et déterminer lequel choisir en fonction de vos besoins.
Introduction
Les machines virtuelles (VM) nécessitent une connectivité réseau pour interagir avec le monde extérieur, que ce soit pour accéder à Internet, communiquer avec d’autres machines locales ou être accessibles depuis le réseau. Deux solutions principales s’offrent à vous :
- Le mode bridge : Vos VM obtiennent une adresse IP sur le réseau local, comme si elles étaient des machines physiques connectées directement au réseau.
- Le mode NAT : Vos VM utilisent l’adresse IP de l’hôte pour accéder à Internet, tout en restant isolées du réseau local.
Ces modes réseau sont à la base de toute infrastructure virtuelle bien pensée et sont indispensables pour tout administrateur système souhaitant optimiser la connectivité de ses VM.
Historique
Au début de la virtualisation, les besoins étaient simples : permettre aux VM d’accéder à Internet pour les mises à jour et les téléchargements.
Le NAT (Network Address Translation) suffisait largement. Cependant, avec l’évolution des architectures réseau et l’adoption massive de la virtualisation, les besoins se sont complexifiés. Les entreprises ont commencé à déployer des applications critiques sur des VM, nécessitant une intégration plus étroite avec le réseau local.
C’est là que le bridge est devenu indispensable, permettant aux VM de communiquer directement avec le réseau local, comme si elles étaient des machines physiques.
Comparaison entre Bridge et NAT
Le mode Bridge
- Adresse IP individuelle : Chaque VM reçoit une adresse IP distincte du serveur DHCP du réseau local ou via une configuration statique.
- Communication directe : Les VM peuvent communiquer directement avec toutes les machines du réseau local.
- Accessibilité : Idéal pour les serveurs ou les applications qui doivent être accessibles depuis le réseau local ou Internet.
- Transparence réseau : Les VM apparaissent comme des machines physiques sur le réseau.
Le mode NAT
- Adresse IP masquée : Les VM utilisent l’adresse IP de l’hôte pour accéder à Internet.
- Isolation : Les VM ne sont pas directement accessibles depuis le réseau local.
- Simplicité : Configuration rapide et facile à mettre en place.
- Sécurité par défaut : Moins exposées aux menaces du réseau local.
Caractéristique | Mode Bridge | Mode NAT |
---|---|---|
Adresse IP | Attribuée par le réseau local | Partagée avec l’hôte |
Sécurité | Moins sécurisé (exposé) | Plus sécurisé (isolé) |
Performance | Optimale | Légère surcharge possible |
Complexité | Configuration plus complexe | Configuration simple |
Accessibilité | Directe depuis le réseau | Indirecte (nécessite une redirection de port) |
Configuration avec libvirt/KVM
Par défaut, libvirt (KVM) crée un réseau virtuel
nommé default
qui utilise le mode NAT (Network Address Translation). Ce réseau
permet aux machines virtuelles de partager l’adresse IP de l’hôte pour accéder à
Internet, tout en restant isolées du réseau physique. Le réseau default
utilise généralement la plage d’adresses IP 192.168.122.0/24
.
Vérifier l’état du réseau par défaut
Avant de configurer ou de modifier le réseau par défaut, il est important de vérifier s’il existe et s’il est actif.
La sortie devrait ressembler à ceci :
Pour obtenir les détails du réseau par défaut, utilisez la commande suivante :
Voici une explication des principales sections de la configuration :
-
Nom et UUID :
<name>default</name>
: Le nom du réseau est “default”.<uuid>edfcf52f-0141-4d4f-ba62-ca260aacbdac</uuid>
: Un identifiant unique pour ce réseau, utilisé pour le référencer de manière précise.
-
Mode de transfert :
<forward mode='nat'>
: Le réseau utilise le mode de transfert “nat” (Network Address Translation). Cela permet aux machines virtuelles de partager l’adresse IP publique de l’hôte pour accéder à l’extérieur, tout en gardant leurs adresses privées.
-
Bridge :
<bridge name='virbr0' stp='on' delay='0'/>
: Définit un pont réseau virtuel nommé “virbr0”.stp='on'
: Le protocole STP (Spanning Tree Protocol) est activé pour éviter les boucles réseau.delay='0'
: Le délai STP est défini à 0 secondes (ceci désactive souvent le délai d’écoute et d’apprentissage du port STP).
-
Adresse MAC :
<mac address='52:54:00:d9:f9:85'/>
: L’adresse MAC attribuée au pont “virbr0”.
-
Configuration IP :
<ip address='192.168.122.1' netmask='255.255.255.0'>
: Configure une adresse IP pour le réseau virtuel avec la passerelle à192.168.122.1
et un masque de sous-réseau de255.255.255.0
, couvrant toute la plage d’adresses192.168.122.0/24
.
-
DHCP :
<dhcp>
: La section DHCP configure le service DHCP pour ce réseau.<range start='192.168.122.2' end='192.168.122.254'/>
: Définit la plage d’adresses IP que le serveur DHCP allouera, allant de192.168.122.2
à192.168.122.254
.
Cette configuration permet aux machines virtuelles connectées à ce réseau de recevoir automatiquement des adresses IP dans la plage spécifiée et d’accéder à Internet par le biais de l’hôte via NAT.
Si le réseau default
n’est pas actif, vous pouvez le démarrer avec la commande
suivante :
Pour vous assurer que le réseau démarre automatiquement au démarrage de libvirt, exécutez :
Configurer une machine virtuelle pour utiliser le réseau par défaut
Pour configurer une machine virtuelle pour utiliser le réseau par défaut, vous devez ajouter une interface réseau virtuelle à la machine virtuelle.
Commencez par télécharger l’image ISO :
Ensuite, créez une machine virtuelle avec l’image ISO :
Cettte commande crée une machine virtuelle nommée ubuntu2404
avec 4 Go de RAM,
2 processeurs virtuels et une taille de disque de 20 Go. Elle utilise le système
d’exploitation Ubuntu 24.04. Elle utilise le réseau virtuel default
.
Après avoir configuré la VM pour utiliser le réseau par défaut, démarrez-la et connectez-vous.
Étape 1 : Vérifier l’adresse IP
Dans la VM, exécutez :
Vous devriez voir une interface réseau (par exemple, eth0
ou enp1s0
) avec une
adresse IP dans la plage 192.168.122.0/24
.
Étape 2 : Tester l’accès à Internet
Testez la connectivité Internet en pingant une adresse externe :
Si vous recevez des réponses, la connexion Internet est fonctionnelle.
Étape 3 : Tester la résolution DNS
Vérifiez que la résolution DNS fonctionne :
Si le ping réussit, la résolution DNS est opérationnelle.
Dépannage
Le réseau par défaut n’apparaît pas
Si le réseau default
n’apparaît pas dans la liste des réseaux, vous pouvez le
définir à partir du fichier XML fourni par libvirt :
Les VM ne reçoivent pas d’adresse IP
-
Vérifiez que le service DHCP est actif : libvirt utilise
dnsmasq
pour fournir des adresses IP aux VM. -
Redémarrez le réseau :
-
Vérifiez les règles de pare-feu : Assurez-vous que les règles iptables ou nftables ne bloquent pas le trafic DHCP ou DNS.
Les VM n’ont pas accès à Internet
-
Vérifiez les règles NAT : libvirt doit avoir configuré des règles NAT pour permettre aux VM d’accéder à Internet.
-
Assurez-vous que le module
nf_nat
est chargé :Si le module n’est pas chargé, chargez-le :
-
Vérifiez la configuration réseau de l’hôte : Si l’hôte utilise des configurations réseau complexes, cela peut interférer avec le NAT de libvirt.
Réinitialiser le réseau par défaut
Si vous rencontrez des problèmes persistants, vous pouvez réinitialiser le réseau par défaut.
Redéfinissez le réseau à partir du fichier par défaut :
Le mode Full Bridge
Le réseau par défaut offre un moyen très simple d’obtenir une connectivité lors de la création de machines virtuelles : tout est « prêt » et fonctionne dès la sortie de la boîte. Parfois, cependant, nous souhaitons obtenir une connexion de Full Bridge où les NM sont connectés au réseau local de l’hôte sans utiliser NAT. Voyons comment procéder étape par étape.
Configuration
Pour configurer le mode Full Bridge, vous devez créer un pont virtuel et partager l’une des interfaces Ethernet physiques de l’hôte.
Créer un pont virtuel
Pour configurer le mode Full Bridge, vous devez créer un pont virtuel et partager l’une des interfaces Ethernet physiques de l’hôte.
Créez un pont virtuel nommé br0
.
Attachons-nous à l’interface physique enp3s0
de l’hôte.
Vérifiez que le pont virtuel est bien attaché à l’interface physique :
Créez un fichier XML qui définit le pont virtuel :
Relancez la création de la VM mais en indiquant le réseau bridged-network
:
Et refaites les mêmes tests.
Mon avis : Quel mode choisir ?
Le choix entre le mode bridge et le mode NAT dépend principalement de vos besoins spécifiques en matière de réseau.
- Mode Bridge : Si vos VM doivent être accessibles depuis le réseau local ou si elles doivent communiquer librement avec d’autres machines du réseau, le mode bridge est le plus adapté. C’est le choix idéal pour héberger des serveurs ou des services qui nécessitent une visibilité sur le réseau.
- Mode NAT : Si vous avez besoin d’isoler vos VM du réseau local tout en leur permettant d’accéder à Internet, le mode NAT est préférable. C’est une solution simple et sécurisée pour les environnements de test, de développement ou pour des applications qui n’ont pas besoin d’être accessibles depuis le réseau local.
Personnellement, j’utilise souvent le mode bridge car je veux profiter de mon serveur DHCP défini sur ma machine de rebonds.
Conclusion
La maîtrise des modes réseau bridge et NAT sous KVM est essentielle pour optimiser la connectivité de vos machines virtuelles. En comprenant les différences entre ces modes et en sachant les configurer correctement, vous pouvez adapter votre infrastructure virtuelle à vos besoins spécifiques.
Que vous choisissiez le bridge pour une intégration complète au réseau local ou le NAT pour une isolation sécurisée, KVM offre la flexibilité nécessaire pour gérer efficacement vos réseaux virtuels.