Acheminer le trafic réseau avec une table de routage à l’aide de PowerShell

Par défaut, Azure achemine automatiquement le trafic entre tous les sous-réseaux au sein d’un réseau virtuel. Vous pouvez créer vos propres itinéraires pour remplacer le routage par défaut d’Azure. La possibilité de créer des itinéraires personnalisés est utile si, par exemple, vous souhaitez router le trafic entre des sous-réseaux via une appliance virtuelle réseau (NVA). Dans cet article, vous apprendrez comment :

  • Créer une table de routage
  • Créer un itinéraire
  • Créer un réseau virtuel comprenant plusieurs sous-réseaux
  • Associer une table de routage à un sous-réseau
  • Créer une appliance NVA qui route le trafic
  • Déployer des machines virtuelles sur différents sous-réseaux
  • Router le trafic d’un sous-réseau vers un autre via une NVA

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Azure Cloud Shell

Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.

Pour démarrer Azure Cloud Shell :

Option Exemple/Lien
Sélectionnez Essayer dans le coin supérieur droite d’un bloc de codes ou de commandes. La sélection de Essayer ne copie pas automatiquement le code ni la commande dans Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. Button to launch Azure Cloud Shell.
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Pour utiliser Azure Cloud Shell :

  1. Démarrez Cloud Shell.

  2. Sélectionnez le bouton Copier sur un bloc de codes (ou un bloc de commandes) pour copier le code ou la commande.

  3. Collez le code ou la commande dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux ou en sélectionnant Cmd+Maj+V sur macOS.

  4. Sélectionnez Entrée pour exécuter le code ou la commande.

Si vous choisissez d’installer et d’utiliser PowerShell en local, vous devez exécuter le module Azure PowerShell version 1.0.0 ou ultérieure pour les besoins de cet article. Exécutez Get-Module -ListAvailable Az pour rechercher la version installée. Si vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell. Si vous exécutez PowerShell en local, vous devez également lancer Connect-AzAccount pour créer une connexion avec Azure.

Créer une table de routage

Avant de pouvoir créer une table de routage, créez un groupe de ressources avec New-AzResourceGroup. L’exemple suivant crée un groupe de ressources nommé myResourceGroup pour toutes les ressources créées dans cet article.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Créez une table de routage avec New-AzRouteTable. L’exemple suivant crée une table de routage nommée myRouteTablePublic.

$routeTablePublic = New-AzRouteTable `
  -Name 'myRouteTablePublic' `
  -ResourceGroupName myResourceGroup `
  -location EastUS

Créer un itinéraire

Créez un itinéraire en récupérant l’objet de table de routage avec Get-AzRouteTable, créez un itinéraire avec Add-AzRouteConfig, puis écrivez la configuration de l’itinéraire dans la table de routage avec Set-AzRouteTable.

Get-AzRouteTable `
  -ResourceGroupName "myResourceGroup" `
  -Name "myRouteTablePublic" `
  | Add-AzRouteConfig `
  -Name "ToPrivateSubnet" `
  -AddressPrefix 10.0.1.0/24 `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress 10.0.2.4 `
 | Set-AzRouteTable

Associer une table de routage à un sous-réseau

Avant de pouvoir associer une table de routage à un sous-réseau, vous devez créer un réseau virtuel et un sous-réseau. Créez un réseau virtuel avec New-AzVirtualNetwork. L’exemple suivant permet de créer un réseau virtuel nommé myVirtualNetwork avec le préfixe d’adresse 10.0.0.0/16.

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

Créez trois sous-réseaux en créant trois configurations de sous-réseau avec New-AzVirtualNetworkSubnetConfig. L’exemple suivant crée trois configurations de sous-réseau pour les sous-réseaux Public, Private et DMZ :

$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig `
  -Name Public `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork

$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig `
  -Name Private `
  -AddressPrefix 10.0.1.0/24 `
  -VirtualNetwork $virtualNetwork

$subnetConfigDmz = Add-AzVirtualNetworkSubnetConfig `
  -Name DMZ `
  -AddressPrefix 10.0.2.0/24 `
  -VirtualNetwork $virtualNetwork

Écrivez les configurations de sous-réseaux dans le réseau virtuel à l’aide de la commande Set-AzVirtualNetwork, ce qui crée les sous-réseaux dans le réseau virtuel :

$virtualNetwork | Set-AzVirtualNetwork

Associez la table de routage myRouteTablePublic au sous-réseau Public avec Set-AzVirtualNetworkSubnetConfig, puis écrivez la configuration du sous-réseau dans le réseau virtuel avec Set-AzVirtualNetwork.

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $virtualNetwork `
  -Name 'Public' `
  -AddressPrefix 10.0.0.0/24 `
  -RouteTable $myRouteTablePublic | `
Set-AzVirtualNetwork

Créer une NVA

Une NVA est une machine virtuelle qui exécute une fonction réseau, telle que le routage, la fonction de pare-feu ou l’optimisation WAN.

Avant de créer une machine virtuelle, créez une interface réseau.

Créer une interface réseau

Avant de créer une interface réseau, vous devez récupérer l’ID de réseau virtuel avec Get-AzVirtualNetwork, puis l’ID de sous-réseau avec Get-AzVirtualNetworkSubnetConfig. Créez une interface réseau avec New-AzNetworkInterface dans le sous-réseau DMZ avec le transfert IP activé :

# Retrieve the virtual network object into a variable.
$virtualNetwork=Get-AzVirtualNetwork `
  -Name myVirtualNetwork `
  -ResourceGroupName myResourceGroup

# Retrieve the subnet configuration into a variable.
$subnetConfigDmz = Get-AzVirtualNetworkSubnetConfig `
  -Name DMZ `
  -VirtualNetwork $virtualNetwork

# Create the network interface.
$nic = New-AzNetworkInterface `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name 'myVmNva' `
  -SubnetId $subnetConfigDmz.Id `
  -EnableIPForwarding

Créer une machine virtuelle

Pour créer une machine virtuelle et lui attacher une interface réseau existante, vous devez d’abord créer une configuration de machine virtuelle avec New-AzVMConfig. La configuration inclut l’interface réseau créée à l’étape précédente. Quand vous êtes invité à indiquer un nom d’utilisateur et un mot de passe, sélectionnez ceux qui vous permettront de vous connecter à la machine virtuelle.

# Create a credential object.
$cred = Get-Credential -Message "Enter a username and password for the VM."

# Create a VM configuration.
$vmConfig = New-AzVMConfig `
  -VMName 'myVmNva' `
  -VMSize Standard_DS2 | `
  Set-AzVMOperatingSystem -Windows `
    -ComputerName 'myVmNva' `
    -Credential $cred | `
  Set-AzVMSourceImage `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest | `
  Add-AzVMNetworkInterface -Id $nic.Id

Créez la machine virtuelle avec la configuration de la machine virtuelle et New-AzVM. L’exemple suivant crée une machine virtuelle nommée myVmNva.

$vmNva = New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -VM $vmConfig `
  -AsJob

L’option -AsJob crée la machine virtuelle en arrière-plan. Vous pouvez donc passer à l’étape suivante.

Créer des machines virtuelles

Créez deux machines virtuelles dans le réseau virtuel pour vérifier que le trafic provenant du sous-réseau Public est acheminé vers le sous-réseau Private via l’appliance virtuelle réseau lors d’une étape ultérieure.

Créez une machine virtuelle dans le sous-réseau Public avec New-AzVM. L’exemple suivant crée une machine virtuelle nommée myVmPublic dans le sous-réseau Public du réseau virtuel myVirtualNetwork.

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork" `
  -SubnetName "Public" `
  -ImageName "Win2016Datacenter" `
  -Name "myVmPublic" `
  -AsJob

Créez une machine virtuelle dans le sous-réseau Private.

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork" `
  -SubnetName "Private" `
  -ImageName "Win2016Datacenter" `
  -Name "myVmPrivate"

La création de la machine virtuelle ne nécessite que quelques minutes. Attendez que la machine virtuelle ait été créée et qu’Azure ait retourné la sortie à PowerShell pour passer à l’étape suivante.

Router le trafic via une NVA

Utilisez Get-AzPublicIpAddress pour retourner l’adresse IP publique de la machine virtuelle myVmPrivate. L’exemple suivant retourne l’adresse IP publique de la machine virtuelle myVmPrivate :

Get-AzPublicIpAddress `
  -Name myVmPrivate `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Utilisez la commande suivante pour créer une session Bureau à distance avec la machine virtuelle myVmPrivate à partir de votre ordinateur local. Remplacez <publicIpAddress> par l’adresse IP retournée par la commande précédente.

mstsc /v:<publicIpAddress>

Ouvrez le fichier .rdp téléchargé. Si vous y êtes invité, sélectionnez Connexion.

Entrez le nom d’utilisateur et le mot de passe spécifiés lors de la création de la machine virtuelle (il se peut que vous deviez choisir Plus de choix, puis Utiliser un compte différent pour spécifier les informations d’identification que vous avez entrées lors de la création de la machine virtuelle), puis sélectionnez OK. Un avertissement de certificat peut s’afficher pendant le processus de connexion. SélectionnezOui pour poursuivre le processus de connexion.

À une étape ultérieure, la commande tracert.exe est utilisée pour tester le routage. Tracert utilise le protocole ICMP (Internet Control Message Protocol), qui est refusé via le Pare-feu Windows. Autorisez le protocole ICMP dans le pare-feu Windows en entrant la commande suivante de PowerShell sur la machine virtuelle myVmPrivate :

New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4

Bien que tracert soit utilisé pour tester le routage dans cet article, il n’est pas recommandé d’autoriser le protocole IMCP dans le pare-feu Windows lors de déploiements en production.

Vous avez activé le transfert d’IP dans Azure pour l’interface réseau de la machine virtuelle dans Activer le transfert IP. Sur la machine virtuelle, le système d’exploitation ou une application exécutée dans la machine virtuelle, doit également pouvoir transférer le trafic réseau. Activez le transfert IP au sein du système d’exploitation de la machine virtuelle myVmNva.

À partir d’une invite de commandes sur la machine virtuelle myVmPrivate, connectez le Bureau à distance à la machine virtuelle myVmNva :

mstsc /v:myvmnva

Pour activer le transfert d’adresse IP au sein du système d’exploitation, entrez la commande suivante dans PowerShell à partir de la machine virtuelle myVmNva :

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -Name IpEnableRouter -Value 1

Redémarrez la machine virtuelle myVmNva, ce qui va également déconnecter la session Bureau à distance.

Tout en conservant la connexion à la machine virtuelle myVmPrivate, créez une session Bureau à distance sur la machine virtuelle myVmPublic, une fois la machine virtuelle myVmNva redémarrée :

mstsc /v:myVmPublic

Autorisez le protocole ICMP dans le pare-feu Windows en entrant la commande suivante de PowerShell sur la machine virtuelle myVmPublic :

New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4

Pour tester le routage du trafic réseau vers la machine virtuelle myVmPrivate à partir de la machine virtuelle myVmPublic, entrez la commande suivante de PowerShell sur la machine virtuelle myVmPublic :

tracert myVmPrivate

La réponse ressemble à ce qui suit :

Tracing route to myVmPrivate.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.1.4]
over a maximum of 30 hops:

1    <1 ms     *        1 ms  10.0.2.4
2     1 ms     1 ms     1 ms  10.0.1.4

Trace complete.

Vous voyez que le premier tronçon est 10.0.2.4, ce qui correspond à l’adresse IP privée de l’appliance virtuelle réseau (NVA). Le second tronçon est 10.0.1.4, ce qui correspond à l’adresse IP privée de la machine virtuelle myVmPrivate. L’itinéraire ajouté à la table de routage myRouteTablePublic et associé au sous-réseau Public a contraint Azure à acheminer le trafic via l’appliance virtuelle réseau et non directement au sous-réseau Private.

Fermez la session Bureau à distance sur la machine virtuelle myVmPublic. Cela n’interrompt pas la connexion à la machine virtuelle myVmPrivate.

Pour tester le routage du trafic réseau vers la machine virtuelle myVmPublic à partir de la machine virtuelle myVmPrivate, entrez la commande suivante à l’invite de commandes sur la machine virtuelle myVmPrivate :

tracert myVmPublic

La réponse ressemble à ce qui suit :

Tracing route to myVmPublic.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.0.4]
over a maximum of 30 hops:

1     1 ms     1 ms     1 ms  10.0.0.4

Trace complete.

Vous pouvez voir que le trafic est routé directement de la machine virtuelle myVmPrivate vers la machine virtuelle myVmPublic. Par défaut, Azure achemine directement le trafic entre les sous-réseaux.

Fermez les sessions Bureau à distance sur la machine virtuelle myVmPrivate.

Nettoyer les ressources

Lorsque vous n’avez plus besoin d’un groupe de ressources, utilisez Remove-AzResourcegroup pour le supprimer, ainsi que toutes les ressources qu’il contient.

Remove-AzResourceGroup -Name myResourceGroup -Force

Étapes suivantes

Dans cet article, vous avez créé une table de routage que vous avez associée à un sous-réseau. Vous avez créé une appliance virtuelle réseau qui a acheminé le trafic d’un sous-réseau public vers un sous-réseau privé. Vous pouvez déployer différentes appliances virtuelles réseau préconfigurées ayant des fonctions de réseau, telles que la fonction de pare-feu ou l’optimisation WAN, à partir de la Place de marché Microsoft Azure. Pour en savoir plus sur le routage, consultez Routage du trafic de réseau virtuel et Créer, modifier ou supprimer une table de routage.

Alors que vous pouvez déployer de nombreuses ressources Azure dans un réseau virtuel, les ressources pour certains services Azure PaaS ne peuvent pas être déployées dans un réseau virtuel. Cependant, vous pouvez toujours restreindre l’accès aux ressources de certains services Azure PaaS au trafic provenant uniquement d’un sous-réseau de réseau virtuel. Pour connaître la marche à suivre, consultez Restreindre l’accès réseau aux ressources PaaS.