Dirigera nätverkstrafik med en routningstabell med hjälp av Azure CLI

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 grundläggande NVA som dirigerar trafik från en virtuell Ubuntu-dator
  • Distribuera virtuella datorer till olika undernät
  • Dirigera trafik från ett undernät till ett annat via en NVA

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

Förutsättningar

  • Den här artikeln kräver version 2.0.28 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.

Skapa en routningstabell

Innan du kan skapa en routningstabell skapar du en resursgrupp med az group create för alla resurser som skapats i den här artikeln.

# Create a resource group.
az group create \
  --name myResourceGroup \
  --location eastus

Skapa en routningstabell med az network route-table create. I följande exempel skapas en routningstabell med namnet myRouteTablePublic.

# Create a route table
az network route-table create \
  --resource-group myResourceGroup \
  --name myRouteTablePublic

Skapa en väg

Skapa en väg i routningstabellen med az network route-table route create.

az network route-table route create \
  --name ToPrivateSubnet \
  --resource-group myResourceGroup \
  --route-table-name myRouteTablePublic \
  --address-prefix 10.0.1.0/24 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address 10.0.2.4

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 ett undernät med az network vnet create.

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --address-prefix 10.0.0.0/16 \
  --subnet-name Public \
  --subnet-prefix 10.0.0.0/24

Skapa ytterligare två undernät med az network vnet subnet create.

# Create a private subnet.
az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name Private \
  --address-prefix 10.0.1.0/24

# Create a DMZ subnet.
az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name DMZ \
  --address-prefix 10.0.2.0/24

Associera routningstabellen myRouteTablePublic till det offentliga undernätet med az network vnet subnet update.

az network vnet subnet update \
  --vnet-name myVirtualNetwork \
  --name Public \
  --resource-group myResourceGroup \
  --route-table myRouteTablePublic

Skapa en NVA

En NVA är en virtuell dator som utför en nätverksfunktion, som routning, brandvägg eller WAN-optimering. Vi skapar en grundläggande NVA från en virtuell Ubuntu-dator för generell användning i demonstrationssyfte.

Skapa en virtuell dator som ska användas som NVA i DMZ-undernätet med az vm create. När du skapar en virtuell dator skapar och tilldelar Azure som standard ett nätverksgränssnitt myVmNvaVMNic och en offentlig IP-adress till den virtuella datorn. Parametern --public-ip-address "" instruerar Azure att inte skapa och tilldela en offentlig IP-adress till den virtuella datorn, eftersom den virtuella datorn inte behöver vara ansluten till från Internet. Om det inte redan finns SSH-nycklar på en standardnyckelplats skapar kommandot dem. Om du vill använda en specifik uppsättning nycklar använder du alternativet --ssh-key-value.

az vm create \
  --resource-group myResourceGroup \
  --name myVmNva \
  --image Ubuntu2204 \
  --public-ip-address "" \
  --subnet DMZ \
  --vnet-name myVirtualNetwork \
  --generate-ssh-keys

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

För att ett nätverksgränssnitt myVmNvaVMNic ska kunna vidarebefordra nätverkstrafik som skickas till den, som inte är avsedd för sin egen IP-adress, måste IP-vidarebefordran vara aktiverad för nätverksgränssnittet. Aktivera IP-vidarebefordran för nätverksgränssnittet med az network nic update.

az network nic update \
  --name myVmNvaVMNic \
  --resource-group myResourceGroup \
  --ip-forwarding true

I den virtuella datorn måste operativsystemet, eller ett program som körs i den virtuella datorn, kunna vidarebefordra nätverkstrafik. Vi använder sysctl kommandot för att göra det möjligt för Linux-kerneln att vidarebefordra paket. Om du vill köra det här kommandot utan att logga in på den virtuella datorn använder vi tillägget för anpassat skriptaz vm extension set:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVmNva \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"commandToExecute":"sudo sysctl -w net.ipv4.ip_forward=1"}'

Det kan ta upp till en minut att köra kommandot. Observera att den här ändringen inte sparas efter en omstart av den virtuella datorn, så om den virtuella NVA-datorn startas om av någon anledning måste skriptet upprepas.

Skapa virtuella datorer

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

Skapa en virtuell dator i det offentliga undernätet med az vm create. Parametern --no-wait gör att Azure kan köra kommandot i bakgrunden så att du kan fortsätta till nästa kommando. För att effektivisera den här artikeln används ett lösenord. Nycklar används vanligtvis i produktionsdistributioner. Om du använder nycklar måste du även konfigurera SSH-agentvidarebefordring. Mer information finns i dokumentationen för din SSH-klient. Ersätt <replace-with-your-password> i följande kommando med ett lösenord som du väljer.

adminPassword="<replace-with-your-password>"

az vm create \
  --resource-group myResourceGroup \
  --name myVmPublic \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet Public \
  --admin-username azureuser \
  --admin-password $adminPassword \
  --no-wait

Skapa en virtuell dator i det privata undernätet.

az vm create \
  --resource-group myResourceGroup \
  --name myVmPrivate \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet Private \
  --admin-username azureuser \
  --admin-password $adminPassword

Det tar några minuter att skapa den virtuella datorn. När den virtuella datorn har skapats visar Azure CLI information som liknar följande exempel:

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVmPrivate",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.1.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "myResourceGroup"
}

Anteckna publicIpAddress. Den här adressen används för att komma åt den virtuella datorn från Internet i ett senare steg.

Dirigera trafik via NVA

Anslut till de virtuella datorer som skapades ovan med valfri SSH-klient. Följande kommando kan till exempel användas från ett kommandoradsgränssnitt, till exempel WSL , för att skapa en SSH-session med den virtuella datorn myVmPrivate . Ersätt <publicIpAddress> med den offentliga IP-adressen för den virtuella datorn. I exemplet ovan är IP-adressen 13.90.242.231.

ssh azureuser@<publicIpAddress>

När du uppmanas att ange ett lösenord anger du det lösenord som du valde i Skapa virtuella datorer.

Använd följande kommando för att installera spårningsvägen på den virtuella datorn myVmPrivate :

sudo apt update
sudo apt install traceroute

Använd följande kommando för att testa routning för nätverkstrafik till den virtuella datorn myVmPublic från den virtuella datorn myVmPrivate .

traceroute myVmPublic

Svaret liknar följande exempel:

traceroute to myVmPublic (10.0.0.4), 30 hops max, 60 byte packets
1  10.0.0.4 (10.0.0.4)  1.404 ms  1.403 ms  1.398 ms

Du ser att trafik vidarebefordras direkt från myVmPrivate till the myVmPublic. Azures standardvägar dirigerar trafik direkt mellan undernät.

Använd följande kommando för att SSH till den virtuella datorn myVmPublic från den virtuella datorn myVmPrivate :

ssh azureuser@myVmPublic

Använd följande kommando för att installera spårningsvägen på den virtuella datorn myVmPublic :

sudo apt-get install traceroute

Använd följande kommando för att testa routning för nätverkstrafik till den virtuella datorn myVmPrivate från den virtuella datorn myVmPublic .

traceroute myVmPrivate

Svaret liknar följande exempel:

traceroute to myVmPrivate (10.0.1.4), 30 hops max, 60 byte packets
1  10.0.2.4 (10.0.2.4)  0.781 ms  0.780 ms  0.775 ms
2  10.0.1.4 (10.0.0.4)  1.404 ms  1.403 ms  1.398 ms

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 SSH-sessionerna till både de virtuella datorerna myVmPublic och myVmPrivate .

Rensa resurser

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

az group delete --name myResourceGroup --yes

Nästa steg

I den här artikeln skapade du en routningstabell och kopplade den till ett undernät. Du har skapat en enkel NVA som dirigerade trafik från ett offentligt till ett privat undernät. Distribuera en mängd olika förkonfigurerade NVA-enheter 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.