Dirigera nätverkstrafik med en routningstabell med Hjälp av PowerShell

Azure dirigerar automatiskt trafik mellan alla undernät inom ett virtuella nätverk som standard. Du kan skapa egna vägar för att åsidosätta Azures standardroutning. Möjligheten att skapa anpassade vägar är användbar om du exempelvis vill dirigera trafik mellan undernät via en virtuell nätverksinstallation (NVA). I den här artikeln kan du se hur du:

  • Skapa en routningstabell
  • Skapa en väg
  • Skapa ett virtuellt nätverk med flera undernät
  • Associera en routningstabell till ett undernät
  • Skapa en NVA som dirigerar trafik
  • Distribuera virtuella datorer till olika undernät
  • Dirigera trafik från ett undernät till ett annat via en NVA

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Azure Cloud Shell

Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln, utan att behöva installera något i din lokala miljö.

Så här startar du Azure Cloud Shell:

Alternativ Exempel/länk
Välj Prova i det övre högra hörnet i en kod eller ett kommandoblock. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. Button to launch Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Screenshot that shows the Cloud Shell button in the Azure portal

Så här använder du Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.

  3. Klistra in koden eller kommandot i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.

  4. Välj Retur för att köra koden eller kommandot.

Om du väljer att installera och använda PowerShell lokalt kräver den här artikeln Azure PowerShell-modulen version 1.0.0 eller senare. Kör Get-Module -ListAvailable Az för att hitta den installerade versionen. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul). Om du kör PowerShell lokalt måste du också köra Connect-AzAccount för att skapa en anslutning till Azure.

Skapa en routningstabell

Innan du kan skapa en routningstabell skapar du en resursgrupp med New-AzResourceGroup. I följande exempel skapas en resursgrupp med namnet myResourceGroup för alla resurser som skapats i den här artikeln.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Skapa en routningstabell med New-AzRouteTable. I följande exempel skapas en routningstabell med namnet myRouteTablePublic.

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

Skapa en väg

Skapa en väg genom att hämta routningstabellobjektet med Get-AzRouteTable, skapa en väg med Add-AzRouteConfig och skriv sedan routningskonfigurationen till routningstabellen med 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

Associera en routningstabell till ett undernät

Innan du kan associera en routningstabell till ett undernät måste du skapa ett virtuellt nätverk och ett undernät. Skapa ett virtuellt nätverk med hjälp av New-AzVirtualNetwork. I följande exempel skapas ett virtuellt nätverk med namnet myVirtualNetwork med adressprefixet 10.0.0.0/16.

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

Skapa tre undernät genom att skapa tre undernätskonfigurationer med New-AzVirtualNetworkSubnetConfig. I följande exempel skapas tre undernätskonfigurationer för offentliga, privata och DMZ-undernät :

$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

Skriv undernätskonfigurationerna till det virtuella nätverket med Set-AzVirtualNetwork, som skapar undernäten i det virtuella nätverket:

$virtualNetwork | Set-AzVirtualNetwork

Associera routningstabellen myRouteTablePublic till det offentliga undernätet med Set-AzVirtualNetworkSubnetConfig och skriv sedan undernätskonfigurationen till det virtuella nätverket med Set-AzVirtualNetwork.

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

Skapa en NVA

En NVA är en virtuell dator som utför en nätverksfunktion, som routning, brandvägg eller WAN-optimering.

Skapa ett nätverksgränssnitt innan du skapar en virtuell dator.

Skapa ett nätverksgränssnitt

Innan du skapar ett nätverksgränssnitt måste du hämta det virtuella nätverks-ID:t med Get-AzVirtualNetwork och sedan undernäts-ID:t med Get-AzVirtualNetworkSubnetConfig. Skapa ett nätverksgränssnitt med New-AzNetworkInterface i DMZ-undernätet med IP-vidarebefordran aktiverat:

# 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

Skapa en virtuell dator

Om du vill skapa en virtuell dator och koppla ett befintligt nätverksgränssnitt till den måste du först skapa en VM-konfiguration med New-AzVMConfig. Konfigurationen innehåller nätverksgränssnittet som skapades i föregående steg. När du uppmanas att ange ett användarnamn och lösenord väljer du det användarnamn och lösenord som du vill logga in på den virtuella datorn med.

# 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

Skapa den virtuella datorn med hjälp av VM-konfigurationen med New-AzVM. I följande exempel skapas en virtuell dator med namnet myVmNva.

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

Alternativet -AsJob skapar den virtuella datorn i bakgrunden, så att du kan fortsätta till nästa steg.

Skapa virtuella datorer

Skapa två virtuella datorer i det virtuella nätverket så att du kan verifiera att trafiken från det offentliga undernätet dirigeras till det privata undernätet via den virtuella nätverksinstallationen i ett senare steg.

Skapa en virtuell dator i det offentliga undernätet med New-AzVM. I följande exempel skapas en virtuell dator med namnet myVmPublic i det offentliga undernätet för det virtuella nätverket myVirtualNetwork .

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

Skapa en virtuell dator i det privata undernätet.

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

Det tar några minuter att skapa den virtuella datorn. Fortsätt inte med nästa steg förrän den virtuella datorn har skapats och Azure returnerar utdata till PowerShell.

Dirigera trafik via NVA

Använd Get-AzPublicIpAddress för att returnera den offentliga IP-adressen för den virtuella datorn myVmPrivate . I följande exempel returneras den offentliga IP-adressen för den virtuella datorn myVmPrivate :

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

Använd följande kommando för att skapa en fjärrskrivbordssession med den virtuella datorn myVmPrivate från den lokala datorn. Ersätt <publicIpAddress> med IP-adressen som returnerades från föregående kommando.

mstsc /v:<publicIpAddress>

Öppna den nedladdade RDP-filen. Välj Anslut om du uppmanas att göra det.

Ange användarnamnet och lösenordet du angav när du skapade den virtuella datorn (du kanske måste välja Fler alternativ och sedan Använd ett annat konto för att ange autentiseringsuppgifterna du angav när du skapade den virtuella datorn) och välj OK. Du kan få en certifikatvarning under inloggningen. Välj Ja för att fortsätta med anslutningen.

I ett senare steg tracert.exe används kommandot för att testa routning. Tracert använder ICMP (Internet Control Message Protocol), som nekas via Windows-brandväggen. Aktivera ICMP via Windows-brandväggen genom att ange följande kommando från PowerShell på den virtuella datorn myVmPrivate:

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

Även om spårningsvägen används för att testa routning i den här artikeln rekommenderas inte att tillåta ICMP via Windows-brandväggen för produktionsdistributioner.

Du aktiverade IP-vidarebefordran inom Azure för de virtuella datorernas nätverksgränssnitt i Aktivera IP-vidarebefordran. I den virtuella datorn måste operativsystemet, eller ett program som körs i den virtuella datorn, kunna vidarebefordra nätverkstrafik. Aktivera IP-vidarebefordran i operativsystemet för myVmNva.

Från en kommandotolk på den virtuella datorn myVmPrivate , fjärrskrivbord till myVmNva:

mstsc /v:myvmnva

Om du vill aktivera IP-vidarebefordran inom operativsystemet anger du följande kommando i PowerShell från den virtuella datorn myVmNva:

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

Starta om den virtuella datorn myVmNva, vilket även kopplar från fjärrskrivbordssessionen.

När du fortfarande är ansluten till den virtuella datorn myVmPrivate ska du skapa en fjärrskrivbordssession till myVmPublicnär myVmNva har startats om:

mstsc /v:myVmPublic

Aktivera ICMP via Windows-brandväggen genom att ange följande kommando från PowerShell på den virtuella datorn myVmPublic:

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

Om du vill testa att dirigera nätverkstrafik till den virtuella datorn myVmPrivate från myVmPublic anger du följande kommando från PowerShell på myVmPublic:

tracert myVmPrivate

Svaret liknar följande exempel:

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.

Du kan se att det första hoppet är 10.0.2.4, som är NVA-enhetens privata IP-adress. Det andra hoppet är is 10.0.1.4, som är den privata IP-adressen för den virtuella datorn myVmPrivate. Vägen som har lagts till i routningstabellen myRouteTablePublic och associerats till det offentliga undernätet gjorde så att Azure dirigerade trafiken via NVA istället för direkt till det privata undernätet.

Stäng fjärrskrivbordssession för den virtuella datorn myVmPublic. Du är fortfarande ansluten till myVmPrivate.

Om du vill testa att dirigera nätverkstrafik till den virtuella datorn myVmPublic från myVmPrivate anger du följande kommando från en kommandotolk på myVmPrivate:

tracert myVmPublic

Svaret liknar följande exempel:

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.

Du ser att trafik vidarebefordras direkt från myVmPrivate till the myVmPublic. Som standard dirigerar Azure trafik direkt mellan undernät.

Stäng fjärrskrivbordssessionen för den virtuella datorn myVmPrivate.

Rensa resurser

När den inte längre behövs använder du Remove-AzResourcegroup för att ta bort resursgruppen och alla resurser som den innehåller.

Remove-AzResourceGroup -Name myResourceGroup -Force

Nästa steg

I den här artikeln skapade du en routningstabell och kopplade den till ett undernät. Du har skapat en enkel virtuell nätverksinstallation som dirigerade trafik från ett offentligt undernät till ett privat undernät. Distribuera en mängd förkonfigurerade virtuella nätverksinstallationer som utför nätverksfunktioner som brandvägg och WAN-optimering från Azure Marketplace. Mer information om routning finns i routningsöversikten och Hantera en routningstabell.

Du kan distribuera många Azure-resurser inom ett virtuellt nätverk, men resurser för vissa Azure PaaS-tjänster går inte att distribuera till ett virtuellt nätverk. Du kan fortfarande begränsa åtkomsten för resurserna i vissa Azure PaaS-tjänster till trafik enbart från ett undernät för ett virtuell dator. Mer information finns i Begränsa nätverksåtkomst till PaaS-resurser.