Weiterleiten von Netzwerkdatenverkehr über eine Routingtabelle mithilfe von PowerShell

Standardmäßig leitet Azure automatisch den Datenverkehr aller Subnetze des virtuellen Netzwerks weiter. Sie können eigene Routen erstellen, um das Azure-Standardrouting außer Kraft zu setzen. Die Möglichkeit zum Erstellen von benutzerdefinierten Routen ist beispielsweise hilfreich, wenn Sie über ein virtuelles Netzwerkgerät (Network Virtual Appliance, NVA) Datenverkehr zwischen Subnetzen weiterleiten möchten. In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Erstellen einer Routingtabelle
  • Erstellen einer Route
  • Erstellen eines virtuellen Netzwerks mit mehreren Subnetzen
  • Zuordnen einer Routingtabelle zu einem Subnetz
  • Erstellen eines virtuellen Netzwerkgeräts, das Datenverkehr weiterleitet
  • Bereitstellen von VMs in unterschiedlichen Subnetzen
  • Weiterleiten von Datenverkehr aus einem Subnetz zu einem anderen über ein virtuelles Netzwerkgerät

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.

Starten von Azure Cloud Shell:

Option Beispiel/Link
Wählen Sie rechts oben in einem Code- oder Befehlsblock die Option Ausprobieren aus. Durch die Auswahl von Ausprobieren wird der Code oder Befehl nicht automatisch in Cloud Shell kopiert. Screenshot: Beispiel von „Jetzt testen“ für Azure Cloud Shell.
Rufen Sie https://shell.azure.com auf, oder klicken Sie auf die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen. Schaltfläche zum Starten von Azure Cloud Shell.
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus. Screenshot: Schaltfläche „Cloud Shell“ im Azure-Portal

So verwenden Sie Azure Cloud Shell:

  1. Starten Sie Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren für einen Codeblock (oder Befehlsblock) aus, um den Code oder Befehl zu kopieren.

  3. Fügen Sie den Code oder Befehl mit STRG+UMSCHALT+V unter Windows und Linux oder CMD+UMSCHALT+V unter macOS in die Cloud Shell-Sitzung ein.

  4. Drücken Sie die EINGABETASTE, um den Code oder Befehl auszuführen.

Wenn Sie PowerShell lokal installieren und verwenden möchten, müssen Sie für diesen Artikel mindestens Version 1.0.0 des Azure PowerShell-Moduls verwenden. Führen Sie Get-Module -ListAvailable Az aus, um die installierte Version zu ermitteln. Wenn Sie ein Upgrade ausführen müssen, finden Sie unter Installieren des Azure PowerShell-Moduls Informationen dazu. Wenn Sie PowerShell lokal ausführen, müssen Sie auch Connect-AzAccount ausführen, um eine Verbindung mit Azure herzustellen.

Erstellen einer Routingtabelle

Bevor Sie eine Routingtabelle erstellen können, müssen Sie mit New-AzResourceGroup eine Ressourcengruppe erstellen. Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroup für alle in diesem Artikel erstellten Ressourcen erstellt:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Erstellen Sie eine Routingtabelle mit New-AzRouteTable. Im folgenden Beispiel wird eine Routingtabelle mit dem Namen myRouteTablePublic erstellt.

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

Erstellen einer Route

Erstellen Sie eine Route, indem Sie ein Routingtabellenobjekt mit Get-AzRouteTable abrufen, eine Route mit Add-AzRouteConfig erstellen und dann die Routingkonfiguration mit Set-AzRouteTable in die Routingtabelle schreiben.

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

Zuordnen einer Routingtabelle zu einem Subnetz

Bevor Sie eine Routingtabelle einem Subnetz zuordnen können, müssen Sie ein virtuelles Netzwerk und ein Subnetz erstellen. Erstellen Sie mit New-AzVirtualNetwork ein virtuelles Netzwerk. Im folgenden Beispiel wird ein virtuelles Netzwerk namens myVirtualNetwork mit dem Adresspräfix 10.0.0.0/16 erstellt.

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

Erstellen Sie durch die Erstellung dreier Subnetzkonfigurationen drei Subnetze mit New-AzVirtualNetworkSubnetConfig. Im folgenden Beispiel werden drei Subnetzkonfigurationen für die Subnetze Öffentlich, Privat und DMZ erstellt:

$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

Schreiben Sie die Subnetzkonfiguration mit Set-AzVirtualNetwork in das virtuelle Netzwerk. Dabei werden die Subnetze im virtuellen Netzwerk erstellt:

$virtualNetwork | Set-AzVirtualNetwork

Ordnen Sie die Routingtabelle myRouteTablePublic mithilfe von Set-AzVirtualNetworkSubnetConfig dem Subnetz Öffentlich zu, und schreiben Sie die Subnetzkonfiguration dann mit Set-AzVirtualNetwork in das virtuelle Netzwerk.

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

Erstellen eines virtuellen Netzwerkgeräts

Ein virtuelles Netzwerkgerät ist eine VM, die eine Netzwerkfunktion wie Routing, Firewall oder WAN-Optimierung ausführt.

Vor dem Erstellen eines virtuellen Computers erstellen Sie eine Netzwerkschnittstelle.

Erstellen einer Netzwerkschnittstelle

Vor dem Erstellen einer Netzwerkschnittstelle müssen Sie mit Get-AzVirtualNetwork die ID des virtuellen Netzwerks und dann mit Get-AzVirtualNetworkSubnetConfig die ID des Subnetzes abrufen. Erstellen Sie mit aktivierter IP-Weiterleitung eine Netzwerkschnittstelle mit New-AzNetworkInterface im Subnetz DMZ:

# 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

Erstellen einer VM

Um einen virtuellen Computer zu erstellen und diesem eine vorhandene Netzwerkschnittstelle anzufügen, müssen Sie mit New-AzVMConfig zuerst die Konfiguration eines virtuellen Computers erstellen. Die Konfiguration beinhaltet die im vorherigen Schritt erstellte Netzwerkschnittstelle. Wählen Sie bei entsprechender Aufforderung den Benutzernamen und das Kennwort aus, mit denen Sie sich beim virtuellen Computer anmelden möchten.

# 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

Erstellen Sie den virtuellen Computer mithilfe der VM-Konfiguration mit New-AzVM. Im folgenden Beispiel wird ein virtueller Computer namens myVmNva erstellt.

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

Mit der Option -AsJob wird der virtuelle Computer im Hintergrund erstellt, sodass Sie mit dem nächsten Schritt fortfahren können.

Erstellen von virtuellen Computern

Erstellen Sie zwei virtuelle Computer im virtuellen Netzwerk, damit Sie in einem späteren Schritt diesen Datenverkehr aus dem Subnetz Public über das virtuelle Netzwerkgerät an das Subnetz Private weiterleiten können.

Erstellen Sie mit New-AzVM eine VM im Subnetz Public. Im folgenden Beispiel wird ein virtueller Computer namens myVmPublic im Subnetz Public des virtuellen Netzwerks myVirtualNetwork erstellt.

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

Erstellen Sie eine VM im Subnetz Private.

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

Die Erstellung des virtuellen Computers dauert einige Minuten. Fahren Sie erst mit dem nächsten Schritt fort, wenn der virtuelle Computer erstellt ist und Azure eine Ausgabe an PowerShell zurückgegeben hat.

Weiterleiten von Datenverkehr über ein virtuelles Netzwerkgerät

Geben Sie mit Get-AzPublicIpAddress die öffentliche IP-Adresse der myVmPrivate-VM zurück. Das folgende Beispiel gibt die öffentliche IP-Adresse der myVmPrivate-VM zurück:

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

Erstellen Sie mit dem folgenden Befehl auf Ihrem lokalen Computer eine Remotedesktopsitzung mit dem virtuellen Computer myVmPrivate. Ersetzen Sie <publicIpAddress> durch die vom vorherigen Befehl zurückgegebene IP-Adresse.

mstsc /v:<publicIpAddress>

Öffnen Sie die heruntergeladene RDP-Datei. Wenn Sie dazu aufgefordert werden, wählen Sie Verbinden aus.

Geben Sie den Benutzernamen und das Kennwort ein, wie beim Erstellen des virtuellen Computers angegeben. (Unter Umständen müssen Sie auf Weitere Optionen und dann auf Anderes Konto verwenden klicken, um die Anmeldeinformationen anzugeben, die Sie beim Erstellen des virtuellen Computers eingegeben haben.) Klicken Sie anschließend auf OK. Während des Anmeldevorgangs wird unter Umständen eine Zertifikatwarnung angezeigt. Wählen Sie Ja aus, um mit dem Herstellen der Verbindung fortzufahren.

In einem späteren Schritt wird das Routing mithilfe des Befehls tracert.exe getestet. Tracert verwendet das Internet Control Message-Protokoll (ICMP), das über die Windows-Firewall verweigert wird. Geben Sie auf der VM myVmPrivate in PowerShell den folgenden Befehl ein, um ICMP in der Windows-Firewall zuzulassen:

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

In diesem Artikel wird zwar die Routenverfolgung zum Testen des Routings verwendet, das Zulassen des ICMP-Datenverkehrs durch die Windows-Firewall wird jedoch nicht für Produktionsbereitstellungen empfohlen.

Sie haben die IP-Weiterleitung innerhalb von Azure für die Netzwerkschnittstelle der VM unter „Enable IP forwarding“ (IP-Weiterleitung aktivieren) aktiviert. Das Betriebssystem der VM oder eine Anwendung, die auf der VM ausgeführt wird, muss ebenfalls Netzwerkdatenverkehr weiterleiten können. Aktivieren Sie die IP-Weiterleitung innerhalb des Betriebssystems von myVmNva.

Stellen Sie über eine Eingabeaufforderung auf der VM myVmPrivate eine Remotedesktopverbindung mit der VM myVmNva her:

mstsc /v:myvmnva

Geben Sie auf der VM myVmNva in PowerShell den folgenden Befehl ein, um im Betriebssystem die IP-Weiterleitung zu aktivieren:

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

Starten Sie die VM myVmNva neu. Dadurch wird auch die Remotedesktopsitzung getrennt.

Erstellen Sie nach dem Neustart der VM myVmNva bei bestehender Verbindung mit der VM myVmPrivate eine Remotedesktopsitzung mit der VM myVmPublic:

mstsc /v:myVmPublic

Geben Sie auf der VM myVmPublic in PowerShell den folgenden Befehl ein, um ICMP-Datenverkehr in der Windows-Firewall zuzulassen:

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

Um die Weiterleitung des Netzwerkverkehrs an die myVmPrivate VM von der myVmPublic VM zu testen, geben Sie den folgenden Befehl von PowerShell auf der myVmPublic VM EIN:

tracert myVmPrivate

Die Antwort ähnelt dem folgenden Beispiel:

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.

Wie Sie sehen können, ist der erste Hop 10.0.2.4, die private IP-Adresse des virtuellen Netzwerksgeräts. Der zweite Hop ist 10.0.1.4, die private IP-Adresse der VM myVmPrivate. Die Route, die der Routingtabelle myRouteTablePublic hinzugefügt und dem Subnetz Public zugeordnet wurde, hat bewirkt, dass Azure Datenverkehr über das virtuelle Netzwerkgerät weiterleitet und nicht direkt an das Subnetz Private.

Schließen Sie die Remotedesktopsitzung mit der VM myVmPublic, sodass Sie nur noch mit der VM myVmPrivate verbunden sind.

Geben Sie auf der VM myVmPrivate an einer Eingabeaufforderung den folgenden Befehl ein, um die Weiterleitung von Netzwerkdatenverkehr der VM myVmPrivate an der VM myVmPublic zu testen:

tracert myVmPublic

Die Antwort ähnelt dem folgenden Beispiel:

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.

Wie Sie sehen, wird Datenverkehr direkt von der VM myVmPrivate zur VM myVmPublic weitergeleitet. Azure-Routen leiten standardmäßig Datenverkehr direkt durch Subnetze weiter.

Schließen Sie die Remotedesktopsitzung mit der VM myVmPrivate.

Bereinigen von Ressourcen

Wenn Sie die Ressourcengruppe und alle darin enthaltenen Ressourcen nicht mehr benötigen, entfernen Sie sie mit dem Befehl Remove-AzResourcegroup.

Remove-AzResourceGroup -Name myResourceGroup -Force

Nächste Schritte

In diesem Artikel haben Sie eine Routingtabelle erstellt und einem Subnetz zugeordnet. Sie haben ein einfaches virtuelles Netzwerkgerät erstellt, das Datenverkehr von einem öffentlichen Subnetz an ein privates Subnetz weiterleitet. Stellen Sie eine Vielzahl von vorkonfigurierten virtuellen Netzwerkgeräten, die Netzwerkfunktionen wie z.B. Firewall- und WAN-Optimierung ausführen, vom Azure Marketplace aus bereit. Weitere Informationen zum Routing finden Sie unter Routing von Datenverkehr für virtuelle Netzwerke und Erstellen, Ändern oder Löschen einer Routingtabelle.

Sie können zwar in einem virtuellen Netzwerk viele Azure-Ressourcen bereitstellen, für einige Azure-PaaS-Dienste können jedoch keine Ressourcen in einem virtuellen Netzwerk bereitgestellt werden. Allerdings können Sie den Zugriff auf die Ressourcen einiger Azure-PaaS-Dienste nach wie vor auf den Datenverkehr nur eines Subnetzes eines virtuellen Netzwerks beschränken. Weitere Informationen finden Sie unter Einschränken des Netzwerkzugriffs auf PaaS-Ressourcen mit virtuellen Netzwerkdienstendpunkten mithilfe der Azure CLI.