Après avoir évoqué la possibilité d’utiliser les private Vlan pour segmenter les réseaux, voici l’autre solution qui va permettre de traiter la problématique Cloud au sein d’Hyper-V 3.0
Les contraintes du Cloud:
Dans un scenario d’Infrastructure as a service, la première contrainte est l’isolation des différents client sur la même infrastructure virtuelle, ainsi que l’affectation des plans d’adressage IP. Les systèmes de Vlan ne suffisent plus pour prendre en charge plus de 1000 Vlan ID. De plus si l’on déplace une VM d’un internet vers un Cloud, il est souvent nécessaire d’effectuer un réadressage IP de la machine. Généralement, les politiques de sécurité sont aussi affectée par IP, ce qui nécessitera donc des modifications,notamment sur les règles de firewall.
Tout ceci est donc un travail assez complexe.
La Solution: Les LAN Virtuels
La virtualisation de serveurs est un concept qui permet à plusieurs instances de serveur de s’exécuter sur un ordinateur hôte physique unique en même temps, mais isolés les uns des autres avec pour chaque serveur virtuel l’impression qu’il est le seul à s’exécuter sur l’ordinateur physique.
Virtualisation du réseau fournit une fonctionnalité similaire, dans laquelle on peut exécuter plusieurs environnements de réseau virtuel, potentiellement avec des plages d’adresses IP qui se chevauchent, sur le même réseau physique. Avec la virtualisation du réseau, chaque environnement réseau virtuel fonctionne comme si il était unique.
Imaginons le cas suivant: vous hébergez 2 machines virtuelles, VM BLEU et VM ROUGE, sur votre Hyper-V intranet.Ces deux VM ont pour adresse: VM BLEU 172.27.1.5 et VM ROUGE 172.27.1.7. Vous déplacez la VM BLEU ayant l’ip 172.27.1.5 , vers un Hyperviseur dans le Cloud sans pour autant changer d’adresse IP .
L’hyperviseur Cloud est connecté à un réseau physique 92.68.20.0/24 et a pour adresse ip 92.68.20.10
L’hyperviseur de l’intranet est quant a lui connecté au réseau 10.0.0.0/24 et a pour adresse ip 10.0.0.10
Entre les deux hyperviseur, se trouves un certain nombre de routeurs.
Pour Virtualiser un réseau sous Hyper-V 3.0, il est nécessaire d’affecter 2 adresses IP à la machine virtuelle. Un adresse privée (appelée Customer Address ou CA) et une adresse publique (appelée Provider Address ou PA).
L’adresse CA permet de communiquer avec les autres VM de l’entreprise comme si elle n’était pas déplacée dans le Cloud. c’est donc cette adresse qui sera utilisée par le client pour travailler.Dans notre exemple c’est la 172.27.1.5
L’adressePA est l’ip publique qui sera utilisée sur le réseau physique.Cette adresse sera utiliser pour router les paquet de la VM de l’hyperviseur du Cloud vers l’Hyperviseur de l’intranet. Dans notre exemple l’adresse IP de L’hyper-V Cloud est la 92.68.20.10 et l’adresse IP de l’Hyper-V intranet est 10.0.0.10.
Il existe 2 technique pour faire communiquer les VM entre elles:
- La translation d’ip
- L’encapsulation
La technique que nous allons étudier est l’encapsulation.
Un fois la VM déplacé que va t’il se passer quand elle va vouloir communique avec l’autre ?
1. A partir des paramètres de stratégie, l’Hyper-V Cloud transmet le paquet :
- Source: 172.27.1.5 (CA BLEU)
- Destination: 172.27.1.5(CA ROUGE)
2.Hyper-V Cloud translate les adresses :
- Source: 92.68.20.10 (PA Hyper-V Cloud)
- Destination: 10.0.0.20 (PA Hyper-V Intranet)
A la réception du paquet par l’Hyper-V Intranet, et a partir de ses stratégies, il accepte les paquets:
- Source: 92.68.20.10 (PA Hyper-V Cloud)
- Destination: 10.0.0.20 (PA Hyper-V Intranet)
Il translate l’adresse:
- Source: 172.27.1.5 (CA BLEU)
- Destination: 172.27.1.7(CA ROUGE)
La VM Rouge répond alors et le processus inverse s’enclenche.
Pour mettre en œuvre cette configuration voici les commandes a passer sur les deux Hyper-V. Tout n’est pas dit, mais l’essentiel y est !
Il faut cependant nommer l’interface réseau utilisée pour le Vswitch « wnvnic »:
Hyper-V Cloud:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Import-Module NetAdapter Import-Module NetWnv $Hosts = "localhost" $WNVNIC = "WNVNIC" $WNVDRV = "ms_netwnv" #RESET Write-Host "Configuring WNV on", localhost -ForegroundColor Yellow Write-Host " ==> Enable Network Virtualization Module on", $WNVNIC -ForegroundColor Yellow Disable-NetAdapterBinding $WNVNIC -ComponentID $WNVDRV -CimSession localhost Enable-NetAdapterBinding $WNVNIC -ComponentID $WNVDRV -CimSession localhost New-NetVirtualizationLookupRecord -VirtualSubnetID "5001" -CustomerAddress "172.27.1.5" -ProviderAddress "92.68.20.10" -MACAddress "060600000005" -Rule "TranslationMethodEncap" New-NetVirtualizationLookupRecord -VirtualSubnetID "5001" -CustomerAddress "172.27.1.7" -ProviderAddress "10.0.0.20" -MACAddress "060600000007" -Rule "TranslationMethodEncap" New-NetVirtualizationCustomerRoute -RoutingDomainID "{11111111-2222-3333-4444-000000005001}" -VirtualSubnetID "5001" -DestinationPrefix "172.27.1.0/24" -NextHop "0.0.0.0" -Metric 255 $iface = Get-NetAdapter $WNVNIC New-NetVirtualizationProviderAddress -InterfaceIndex $iface.InterfaceIndex -ProviderAddress "92.68.20.10" -PrefixLength 24 New-NetVirtualizationProviderRoute -DestinationPrefix "0.0.0.0/0" -InterfaceIndex $iface.InterfaceIndex -NextHop "92.68.20.1" |
Hyper-V intranet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Import-Module NetAdapter Import-Module NetWnv $Hosts = "localhost" $WNVNIC = "WNVNIC" $WNVDRV = "ms_netwnv" #RESET Write-Host "Configuring WNV on", localhost -ForegroundColor Yellow Write-Host " ==> Enable Network Virtualization Module on", $WNVNIC -ForegroundColor Yellow Disable-NetAdapterBinding $WNVNIC -ComponentID $WNVDRV -CimSession localhost Enable-NetAdapterBinding $WNVNIC -ComponentID $WNVDRV -CimSession localhost New-NetVirtualizationLookupRecord -VirtualSubnetID "5001" -CustomerAddress "172.27.1.5" -ProviderAddress "92.68.20.10" -MACAddress "060600000005" -Rule "TranslationMethodEncap" New-NetVirtualizationLookupRecord -VirtualSubnetID "5001" -CustomerAddress "172.27.1.7" -ProviderAddress "10.0.0.20" -MACAddress "060600000007" -Rule "TranslationMethodEncap" New-NetVirtualizationCustomerRoute -RoutingDomainID "{11111111-2222-3333-4444-000000005001}" -VirtualSubnetID "5001" -DestinationPrefix "172.27.1.0/24" -NextHop "0.0.0.0" -Metric 255 $iface = Get-NetAdapter $WNVNIC New-NetVirtualizationProviderAddress -InterfaceIndex $iface.InterfaceIndex -ProviderAddress "10.0.0.20" -PrefixLength 24 New-NetVirtualizationProviderRoute -DestinationPrefix "0.0.0.0/0" -InterfaceIndex $iface.InterfaceIndex -NextHop "10.0.0.254" |