Netwerkverkeer routeren met een routetabel met behulp van PowerShell

Azure routeert standaard automatisch verkeer tussen alle subnetten in een virtueel netwerk. U kunt uw eigen routes maken om de standaardroutering van Azure te overschrijven. De mogelijkheid voor het maken van aangepaste routes is handig als u bijvoorbeeld verkeer tussen subnetten wilt routeren via een NVA (virtueel netwerkapparaat). In dit artikel leert u het volgende:

  • Een routetabel maken
  • Een route maken
  • Een virtueel netwerk met meerdere subnetten maken
  • Een routetabel aan een subnet koppelen
  • Een NVA maken voor het routeren van verkeer
  • Virtuele machines (VM's) implementeren in verschillende subnetten
  • Verkeer van het ene subnet naar het andere leiden via een NVA

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Azure Cloud Shell

Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde Cloud Shell-opdrachten gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.

Om Azure Cloud Shell op te starten:

Optie Voorbeeld/koppeling
Selecteer Uitproberen in de rechterbovenhoek van een code- of opdrachtblok. Als u Try It selecteert, wordt de code of opdracht niet automatisch gekopieerd naar Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. Button to launch Azure Cloud Shell.
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell gebruiken:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok (of opdrachtblok) om de code of opdracht te kopiëren.

  3. Plak de code of opdracht in de Cloud Shell-sessie door Ctrl+Shift+V in Windows en Linux te selecteren of door Cmd+Shift+V te selecteren in macOS.

  4. Selecteer Enter om de code of opdracht uit te voeren.

Als u PowerShell lokaal wilt installeren en gebruiken, is voor dit artikel versie 1.0.0 of hoger van de Azure PowerShell-module vereist. Voer Get-Module -ListAvailable Az uit om te kijken welke versie is geïnstalleerd. Als u PowerShell wilt upgraden, raadpleegt u De Azure PowerShell-module installeren. Als u PowerShell lokaal uitvoert, moet u ook Connect-AzAccount uitvoeren om verbinding te kunnen maken met Azure.

Een routetabel maken

Voordat u een routetabel kunt maken, maakt u een resourcegroep met New-AzResourceGroup. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt voor alle resources die in dit artikel zijn gemaakt.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Maak een routetabel met New-AzRouteTable. In het volgende voorbeeld wordt een routetabel gemaakt met de naam myRouteTablePublic.

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

Een route maken

Maak een route door het routetabelobject op te halen met Get-AzRouteTable, maak een route met Add-AzRouteConfig en schrijf vervolgens de routeconfiguratie naar de routetabel met 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

Een routetabel aan een subnet koppelen

Voordat u een routetabel aan een subnet kunt koppelen, moet u een virtueel netwerk en subnet maken. Maak een virtueel netwerk met New-AzVirtualNetwork. In het volgende voorbeeld wordt een virtueel netwerk gemaakt met de naam myVirtualNetwork met het adresvoorvoegsel 10.0.0.0/16.

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

Maak drie subnetten door drie subnetconfiguraties te maken met New-AzVirtualNetworkSubnetConfig. In het volgende voorbeeld worden drie subnetconfiguraties gemaakt voor openbare, privé- en DMZ-subnetten :

$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

Schrijf de subnetconfiguraties naar het virtuele netwerk met Set-AzVirtualNetwork, waarmee de subnetten in het virtuele netwerk worden gemaakt:

$virtualNetwork | Set-AzVirtualNetwork

Koppel de routetabel myRouteTablePublic aan het openbare subnet met Set-AzVirtualNetworkSubnetConfig en schrijf vervolgens de subnetconfiguratie naar het virtuele netwerk met Set-AzVirtualNetwork.

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

Een NVA maken

Een NVA is een VM die een netwerkfunctie uitvoert, zoals routering, firewall of WAN-optimalisatie.

Voordat u een virtuele machine maakt, moet u een netwerkinterface maken.

Een netwerkinterface maken

Voordat u een netwerkinterface maakt, moet u de id van het virtuele netwerk ophalen met Get-AzVirtualNetwork en vervolgens de subnet-id met Get-AzVirtualNetworkSubnetConfig. Maak een netwerkinterface met New-AzNetworkInterface in het DMZ-subnet waarvoor doorsturen via IP is ingeschakeld:

# 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

Een VM maken:

Als u een virtuele machine wilt maken en een bestaande netwerkinterface eraan wilt koppelen, moet u eerst een VM-configuratie maken met New-AzVMConfig. De configuratie bevat de netwerkinterface die in de vorige stap is gemaakt. Wanneer u wordt gevraagd om een gebruikersnaam en wachtwoord, selecteert u de gebruikersnaam en het wachtwoord waarmee u zich wilt aanmelden bij de virtuele machine.

# 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

Maak de VM met behulp van de VM-configuratie met New-AzVM. In het volgende voorbeeld wordt een virtuele machine met de naam myVmNva gemaakt.

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

Met -AsJob de optie maakt u de VIRTUELE machine op de achtergrond, zodat u verder kunt gaan met de volgende stap.

Virtuele machines maken

Maak twee VIRTUELE machines in het virtuele netwerk, zodat u in een latere stap kunt valideren dat verkeer van het openbare subnet wordt doorgestuurd naar het privésubnet via het virtuele netwerkapparaat.

Maak een VIRTUELE machine in het openbare subnet met New-AzVM. In het volgende voorbeeld wordt een virtuele machine met de naam myVmPublic gemaakt in het openbare subnet van het virtuele netwerk myVirtualNetwork.

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

Maak een VIRTUELE machine in het privésubnet .

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

Het maken van de virtuele machine duurt een paar minuten. Ga niet verder met de volgende stap totdat de virtuele machine is gemaakt en Azure uitvoer retourneert naar PowerShell.

Verkeer routeren via een NVA

Gebruik Get-AzPublicIpAddress om het openbare IP-adres van de myVmPrivate-VM te retourneren. In het volgende voorbeeld wordt het openbare IP-adres van de myVmPrivate-VM geretourneerd:

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

Gebruik de volgende opdracht om een sessie met extern bureaublad te maken met de myVmPrivate-VM vanaf uw lokale computer. Vervang <publicIpAddress> door het IP-adres dat is geretourneerd met de vorige opdracht.

mstsc /v:<publicIpAddress>

Open het gedownloade RDP-bestand. Selecteer Verbinding maken wanneer hierom wordt gevraagd.

Voer de gebruikersnaam en het wachtwoord in die u bij het maken van de VM hebt opgegeven (mogelijk moet u Meer opties en Een ander account gebruiken selecteren om de aanmeldingsgegevens op te geven die u hebt ingevoerd tijdens het maken van de virtuele machine) en selecteer OK. Er wordt mogelijk een certificaatwaarschuwing weergegeven tijdens het aanmelden. Selecteer Ja om door te gaan met de verbinding.

In een latere stap wordt de tracert.exe opdracht gebruikt om routering te testen. Tracert maakt gebruik van het ICMP (Internet Control Message Protocol), dat wordt geweigerd via De Windows Firewall. Schakel ICMP via de Windows-firewall in met de volgende opdracht vanuit PowerShell op de VM myVmPrivate:

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

Hoewel traceringsroute wordt gebruikt om routering in dit artikel te testen, wordt het toestaan van ICMP via de Windows Firewall voor productie-implementaties niet aanbevolen.

U hebt doorsturen via IP in Azure voor de netwerkinterface van de VM ingeschakeld in Doorsturen via IP inschakelen. In de VM moet het besturingssysteem of een toepassing die wordt uitgevoerd op de virtuele machine, ook netwerkverkeer kunnen doorsturen. Schakel doorsturen via IP in het besturingssysteem van myVmNva in.

Vanaf een opdrachtprompt op de myVmPrivate-VM, extern bureaublad naar myVmNva:

mstsc /v:myvmnva

Om Doorsturen via IP binnen het besturingssysteem in te schakelen, voert u de volgende opdracht in PowerShell in vanaf de VM myVmNva :

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

Start myVmNva opnieuw op. Hierdoor wordt ook de extern-bureaubladsessie verbroken.

Maak terwijl u nog verbinding hebt met de VM myVmPrivate een extern-bureaubladsessie met de VM myVmPublic nadat de VM myVmNva opnieuw is opgestart:

mstsc /v:myVmPublic

Schakel ICMP via de Windows-firewall in met de volgende opdracht vanuit PowerShell op de VM myVmPublic:

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

Om de routering van netwerkverkeer naar de VM myVmPrivate van de VM myVmPublic te testen, voert u op de VM myVmPublic de volgende opdracht van PowerShell uit:

tracert myVmPrivate

Het antwoord is vergelijkbaar met het volgende voorbeeld:

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.

U ziet dat de eerste hop 10.0.2.4 is, het privé IP-adres van het NVA. De tweede hop is 10.0.1.4, het privé- IP-adres van de VM myVmPrivate. Door de route die is toegevoegd aan de routetabel myRouteTablePublic en gekoppeld aan het Openbare subnet leidt Azure het verkeer via het NVA in plaats van rechtstreeks naar het Privé-subnet.

Sluit de externe bureaubladsessie met de VM myVmPublic. U houdt nog verbinding met de VM myVmPrivate.

Om de routering van netwerkverkeer naar de VM myVmPublic van de VM myVmPrivate VM te testen, voert u op de VM myVmPrivate de volgende opdracht uit vanaf een opdrachtprompt:

tracert myVmPublic

Het antwoord is vergelijkbaar met het volgende voorbeeld:

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.

U ziet dat verkeer rechtstreeks vanuit myVmPrivate naar myVmPublic wordt geleid. Standaard routeert Azure verkeer rechtstreeks tussen subnetten.

Sluit de externe bureaubladsessie naar de VM myVmPrivate.

Resources opschonen

Wanneer u deze niet meer nodig hebt, gebruikt u Remove-AzResourcegroup om de resourcegroep en alle resources die deze bevat te verwijderen.

Remove-AzResourceGroup -Name myResourceGroup -Force

Volgende stappen

In dit artikel hebt u een routetabel gemaakt en gekoppeld aan een subnet. U hebt een eenvoudig virtueel netwerkapparaat gemaakt dat verkeer van een openbaar subnet naar een privésubnet heeft gerouteerd. Implementeer een verscheidenheid aan vooraf geconfigureerde virtuele netwerkapparaten die netwerkfuncties uitvoeren, zoals firewall- en WAN-optimalisatie vanuit Azure Marketplace. Zie Routeringoverzicht en Routetabel beheren voor meer informatie over routeren.

Hoewel u veel Azure-resources binnen een virtueel netwerk kunt implementeren, kunnen resources voor sommige Azure PaaS-diensten niet in een virtueel netwerk worden geïmplementeerd. U kunt de toegang tot de resources van sommige Azure PaaS-diensten echter nog steeds beperken tot alleen verkeer vanaf een subnet van een virtueel netwerk. Zie Netwerktoegang tot PaaS-resources beperken voor meer informatie.