Les switchs virtuels avec Hyper-V : NAT
Sommaire
I. Présentation
Le gestionnaire de commutateurs virtuels d'Hyper-V ne permet pas de créer un réseau avec une connexion NAT. Pourtant, il s'agit d'un mode de connexion bien pratique, notamment lorsque nous effectuons des tests dans un Lab, ou sur un environnement de développement. Si vous avez déjà utilisé des hyperviseurs de type 2 comme VirtualBox et VMware Workstation Pro, vous connaissez probablement le principe du réseau NAT virtuel.
Pour atteindre notre objectif, nous allons devoir créer un nouveau commutateur virtuel "Interne" au sein de la console Hyper-V. Ensuite, nous devons associer une adresse IP sur cette interface virtuelle afin qu'elle soit utilisée comme passerelle par les machines présentes dans le réseau virtuel NAT. Puis, nous devons configurer un nouveau réseau NAT sur notre hyperviseur, en l'occurrence, ici le réseau "192.168.76.0/24" sera utilisé pour les machines. Enfin, nous finirons par connecter une VM sur ce nouveau switch virtuel afin de tester la configuration.
Voici un schéma pour représenter cette configuration :
Cette configuration sera réalisée à l'aide de PowerShell.
II. PowerShell : créer un réseau NAT sur Hyper-V
L'intégralité des commandes PowerShell sont à exécuter directement sur l'hôte sur lequel le rôle Hyper-V est installé.
A. Créer un commutateur virtuel
Sur votre hyperviseur, ouvrez une console en PowerShell en tant qu'administrateur. Exécutez la commande suivante :
New-VMSwitch -Name "NAT" -Notes "Interne - NAT 192.168.76.0/24" -SwitchType Internal
Elle va permettre de créer un nouveau commutateur virtuel de type "Interne" nommé "NAT". Dans les notes de ce commutateur virtuel, nous allons indiquer "Interne - NAT 192.168.76.0/24" pour documenter l'objectif de ce switch virtuel.
Une fois que c'est fait, passez à la suite.
B. Configurer la passerelle du réseau NAT
Nous devons attribuer une adresse IP à l'interface réseau associée au nouveau commutateur virtuel que nous venons de créer. Grâce à la commande Get-NetAdapter, nous pouvons lister les interfaces réseau disponibles sur la machine locale.
Get-NetAdapter
# Avec un filtre sur les interfaces Hyper-V
Get-NetAdapter | Where-Object { $_.InterfaceDescription -like "Hyper-V*" }
Ceci nous permet d'identifier l'adaptateur nommé "vEthernet (NAT)" correspondant au vSwitch récemment créé. Nous avons besoin de noter son numéro d'index (ifIndex) pour la suite. Ici, le numéro d'index est 51. L'alternative consiste à utiliser le nom de la carte (et donc le paramètre "-InterfaceAlias" dans la prochaine commande).
Puis, nous allons attribuer une adresse IP sur cette interface réseau : 192.168.76.1/24. Cela signifie que les machines virtuelles connectées au réseau virtuel NAT devront utiliser cette adresse IP en tant que passerelle par défaut. Éventuellement, nous pourrions choisir une autre valeur (".254", par exemple). Vous devez également adapter la commande ci-dessous pour indiquer le numéro d'index correspondant à votre configuration.
New-NetIPAddress -IPAddress 192.168.76.1 -PrefixLength 24 -InterfaceIndex 51
Ce qui donne :
Quand c'est fait, et s'il n'y a pas d'erreur, vous pouvez passer à la suite. En complément, sachez que cette commande va permettre de définir l'adresse IP sur l'adaptateur réseau comme nous aurions pu le faire à partir de l'interface graphique de Windows.
C. Configurer le réseau NAT
Nous devons accomplir une dernière étape : configurer le NAT sur notre nouveau réseau virtuel. La commande New-NetNat va permettre de configurer la traduction d'adresses pour notre réseau "192.168.76.0/24". Sur Hyper-V, vous pouvez avoir seulement un seul réseau NAT.
Voici la commande à exécuter :
New-NetNat -Name NAT-OUT -InternalIPInterfaceAddressPrefix 192.168.76.0/24
Ce qui donne :
Deux autres commandes peuvent s'avérer utile :
- Remove-NetNat pour supprimer le réseau NAT
- Get-NetNat pour obtenir des informations sur le réseau NAT
Voilà, le réseau NAT est prêt à être utilisé !
III. Connecter une VM au réseau NAT
Nous allons voir comment utiliser ce réseau NAT. Ainsi, vous saurez comment faire quand vous serez prêt à connecter une machine virtuelle sur ce réseau.
Tout d'abord, à partir du Gestionnaire Hyper-V, vous devez retrouver votre nouveau vSwitch dans la section "Gestionnaire de commutateur virtuel". Comme ceci :
Pour connecter une VM sur ce réseau, le principe est le même qu'avec un commutateur virtuel Privé, Externe, ou Interne sans NAT. Accédez aux paramètres de la machine virtuelle, cliquez sur "Carte réseau" sur la gauche, puis, sous "Commutateur virtuel" sélectionnez "NAT".
Vous n'avez plus qu'à cliquer sur "OK" pour confirmer.
La dernière étape consiste à configurer la carte réseau de la machine virtuelle. En effet, nous n'avons pas de serveur DHCP sur le réseau NAT (nous pourrions en déployer un, si besoin) donc la configuration réseau doit être définie manuellement. Ce qui est important, c'est d'attribuer une adresse IP correspond au réseau NAT et d'utiliser l'adresse IP de notre réseau "NAT", soit 192.168.76.1, en tant que passerelle par défaut.
Désormais, la machine virtuelle est bien connectée en NAT ! Elle peut accéder à Internet sans être directement connectée au réseau physique comme avec un réseau Externe.
IV. Hyper-V et le NAT : règles de redirection de port
Vous savez probablement que par défaut, un routeur NAT constitue un "rempart" contre les connexions entrantes. Pour accéder à un service, tel qu'un serveur Web, situé du côté "Privé" du réseau virtuel, ou même pour se connecter en RDP (Bureau à distance) à la VM, il est nécessaire de "publier" un port externe grâce à la création de ce que l'on appelle une règle de redirection de port (ou "port forwarding").
Nous allons utiliser PowerShell pour effectuer cette configuration. L'objectif : accéder en RDP, sur le port 3389, à une machine virtuelle avec l'adresse IP "192.168.76.10/24". Le port interne, côté VM sera 3389, tandis que pour le port externe, nous allons utiliser le numéro de port 13389 : le numéro de port 3389 est déjà utilisé par l'accès RDP de notre hyperviseur, donc si nous cherchons à l'utiliser, nous obtiendrons cette erreur :
Add-NetNatStaticMapping : Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus
Ainsi, nous devons exécuter la commande suivante :
Add-NetNatStaticMapping -NatName "NAT-OUT" -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 13389 -InternalIPAddress 192.168.76.10 -InternalPort 3389
Voici quelques explications :
- -NatName : le nom du réseau NAT, c'est-à-dire le nom indiqué dans la commande New-NetNat.
- -Protocol : le type de protocole, TCP ou UDP.
- -ExternalIPAddress : l'adresse IP externe, c'est-à-dire de l'hôte Hyper-V sur laquelle rendre accessible cette règle. Le fait d'indiquer "0.0.0.0" active la règle sur toutes les adresses IP de l'hôte.
- -ExternalPort : le numéro de port externe (côté "public" du réseau NAT).
- -InternalIPAddress : l'adresse IP de la machine virtuelle cible, à laquelle nous souhaitons nous connecter.
- -InternalPort : le numéro de port interne.
Si vous souhaitez accéder à plusieurs VMs en RDP, via des règles de redirection de port, vous pouvez conserver le numéro de port 3389 en interne, mais utiliser des numéros de ports externes différents pour chaque machine (un port externe ne peut être associé qu'à une seule règle).
Puis, vous pouvez lister vos règles de redirection de port avec cette commande :
Get-NetNatStaticMapping
Si vous avez besoin de supprimer une règle, vous pouvez utiliser la commande ci-dessous, en précisant le numéro de règles, c'est-à-dire le "StaticMappingID" que vous pouvez récupérer via la commande précédente. La première règle créée aura l'index 0, et ce numéro sera ensuite toujours incrémenté (même si nous supprimons et recréons la règle).
Remove-NetNatStaticMapping -StaticMappingID 0
Désormais, à partir d'une machine distante, nous pouvons tester de nous connecter en RDP. Pour cela, nous indiquons l'adresse IP de l'Hyper-V, puis le numéro de port "13389" et il va rediriger le flux vers la VM ayant l'adresse IP "192.168.76.10". Si le flux ne fonctionne pas, vérifiez également la configuration du pare-feu Windows.
V. Conclusion
Désormais, vous êtes en mesure de créer et configurer un réseau virtuel NAT avec Hyper-V, en plus d'avoir connaissance des différents types de connexion. Vous pouvez passer à la suite pour effectuer la mise en pratique complète de ces notions : la création d'une machine virtuelle !