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
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- 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.