Hálózati forgalom irányítása útvonaltáblával az Azure CLI használatával

Egy adott virtuális hálózaton belül az Azure alapértelmezés szerint automatikusan elosztja a forgalmat az összes alhálózat között. Az Azure alapértelmezett útválasztását felülírhatja saját maga által létrehozott útvonalakkal. Az egyéni útvonalak létrehozása akkor lehet hasznos, hálózati virtuális berendezésen (NVA) keresztül kívánja irányítani az alhálózatok közötti forgalmat. Ebben a cikkben az alábbiakkal ismerkedhet meg:

  • Útválasztási táblázat létrehozása
  • Útvonal létrehozása
  • Több alhálózattal rendelkező virtuális hálózat létrehozása
  • Útválasztási táblázat társítása alhálózattal
  • Alapszintű NVA létrehozása, amely Ubuntu virtuális gépről irányítja a forgalmat
  • Virtuális gépek (VM) üzembe helyezése különböző alhálózatokban
  • Forgalom irányítása egyik alhálózatról hálózati virtuális berendezésen keresztül

If you don't have an Azure subscription, create an Azure free account before you begin.

Előfeltételek

  • Ez a cikk az Azure CLI 2.0.28-es vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.

Útválasztási táblázat létrehozása

Mielőtt létrehozhat egy útvonaltáblát, hozzon létre egy erőforráscsoportot az az group create használatával a cikkben létrehozott összes erőforráshoz.

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

Hozzon létre egy útvonaltáblát az az network route-table create használatával. Az alábbi példa létrehoz egy myRouteTablePublic nevű útvonaltáblát.

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

Útvonal létrehozása

Hozzon létre egy útvonalat az útvonaltáblában az az network route-table route create használatával.

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

Útválasztási táblázat társítása alhálózattal

Mielőtt hozzárendelhet egy útvonaltáblát egy alhálózathoz, létre kell hoznia egy virtuális hálózatot és alhálózatot. Hozzon létre egy virtuális hálózatot egy alhálózattal az az network vnet create használatával.

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

Hozzon létre két további alhálózatot az az network vnet subnet create használatával.

# 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

Társítsa a myRouteTablePublic útvonaltáblát a Nyilvános alhálózathoz az az network vnet alhálózat frissítésével.

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

NVA létrehozása

Az NVA egy olyan virtuális gép, amely hálózati funkciót tölt be, például útválasztóként, tűzfalként vagy WAN-optimalizálóként működik. Egy általános célú Ubuntu virtuális gépből létrehozunk egy alapszintű NVA-t bemutató célokra.

Hozzon létre egy NVA-ként használandó virtuális gépet a DMZ alhálózatban az az vm create használatával. Virtuális gép létrehozásakor az Azure alapértelmezés szerint létrehoz és hozzárendel egy myVmNvaVMNic hálózati adaptert és egy nyilvános IP-címet a virtuális géphez. A --public-ip-address "" paraméter arra utasítja az Azure-t, hogy ne hozzon létre és rendeljen hozzá nyilvános IP-címet a virtuális géphez, mivel a virtuális gépet nem kell az internetről csatlakoztatni. Ha az SSH-kulcsok még nem léteznek a kulcsok alapértelmezett helyén, a parancs létrehozza őket. Ha konkrét kulcsokat szeretné használni, használja az --ssh-key-value beállítást.

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

A virtuális gép üzembe helyezése néhány percet vesz igénybe. Ne folytassa a következő lépésekkel, amíg az Azure nem fejezi be a virtuális gép létrehozását, és visszaadja a virtuális gép kimenetét.

Ahhoz, hogy a myVmNvaVMNic hálózati adapter továbbíthassa a neki küldött hálózati forgalmat, amely nem a saját IP-címére van szánva, engedélyezni kell az IP-továbbítást a hálózati adapterhez. Engedélyezze az IP-továbbítást a hálózati adapterhez az az network nic frissítéssel.

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

A virtuális gépen, az operációs rendszeren, vagy egy a virtuális gépen futó alkalmazáson belül szintén működnie kell a hálózati forgalom továbbításának. A parancs használatával sysctl engedélyezzük a Linux kernel számára a csomagok továbbítását. A parancs futtatásához a virtuális gépre való bejelentkezés nélkül az egyéni szkriptbővítményaz vm-bővítménykészletet fogjuk használni:

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"}'

A parancs végrehajtása akár egy percet is igénybe vehet. Vegye figyelembe, hogy ez a módosítás nem marad meg a virtuális gép újraindítása után, ezért ha az NVA virtuális gép bármilyen okból újraindul, a szkriptet meg kell ismételni.

Virtuális gépek létrehozása

Hozzon létre két virtuális gépet a virtuális hálózaton, így ellenőrizheti, hogy a nyilvános alhálózatból érkező forgalom az NVA-n keresztül lesz-e átirányítva a privát alhálózatra egy későbbi lépésben.

Hozzon létre egy virtuális gépet a nyilvános alhálózatban az az vm create használatával. A --no-wait paraméter lehetővé teszi, hogy az Azure végrehajtsa a parancsot a háttérben, hogy továbblépjen a következő parancsra. A cikk egyszerűsítése érdekében a rendszer jelszót használ. A kulcsokat általában éles környezetben használják. Kulcsok használata esetén az SSH-ügynök továbbítását is konfigurálnia kell. További információkért tekintse meg az SSH-ügyfél dokumentációját. Cserélje le <replace-with-your-password> a következő parancsot egy választott jelszóra.

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

Hozzon létre egy virtuális gépet a Privát alhálózatban.

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

A virtuális gép üzembe helyezése néhány percet vesz igénybe. A virtuális gép létrehozása után az Azure CLI az alábbi példához hasonló információkat jelenít meg:

{
  "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"
}

Jegyezze fel a publicIpAddress értékét. Ezzel a címmel érheti el a virtuális gépet az internetről egy későbbi lépésben.

Route traffic through an NVA

Egy tetszőleges SSH-ügyfél használatával csatlakozzon a fent létrehozott virtuális gépekhez. A következő parancs például egy parancssori felületről, például a WSL-ből használható SSH-munkamenet létrehozásához a myVmPrivate virtuális géppel. Cserélje le <a publicIpAddress elemet> a virtuális gép nyilvános IP-címére. A fenti példában az IP-cím 13.90.242.231.

ssh azureuser@<publicIpAddress>

Amikor a rendszer jelszót kér, adja meg a virtuális gépek létrehozása területen kiválasztott jelszót.

A következő paranccsal telepítse a nyomkövetési útvonalat a myVmPrivate virtuális gépen:

sudo apt update
sudo apt install traceroute

Az alábbi paranccsal tesztelje a myVmPublic virtuális gép felé irányuló hálózati forgalom útválasztását a myVmPrivate virtuális gépről.

traceroute myVmPublic

A válasz a következő példához hasonló:

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

Láthatja, hogy a rendszer a myVmPrivate virtuális gépről közvetlenül a myVmPublic virtuális gépre irányítja a forgalmat. Az Azure alapértelmezett útvonalai, amelyek közvetlenül az alhálózatok között irányítják a forgalmat.

A következő paranccsal SSH-t használhat a myVmPublic virtuális géphez a myVmPrivate virtuális gépről:

ssh azureuser@myVmPublic

A következő paranccsal telepítse a nyomkövetési útvonalat a myVmPublic virtuális gépen:

sudo apt-get install traceroute

Az alábbi paranccsal tesztelje a myVmPublic virtuális gépről a myVmPrivate virtuális gép felé irányuló hálózati forgalom útválasztását.

traceroute myVmPrivate

A válasz a következő példához hasonló:

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

Láthatja, hogy az első ugrás a 10.0.2.4 cím, amely az NVA magánhálózati IP-címe. A második ugrás a 10.0.1.4 cím – ez a myVmPrivate virtuális gép magánhálózati IP-címe. AmyRouteTablePublic útválasztási táblázathoz hozzáadott és a Magánjellegű alhálózathoz rendelt útvonal miatt az Azure az NVA-n keresztül továbbította a forgalmat ahelyett, hogy közvetlenül a Privát alhálózatra továbbította volna.

Zárja be az SSH-munkameneteket a myVmPublic és a myVmPrivate virtuális gépeken is.

Clean up resources

Ha már nincs rá szükség, az az group delete használatával távolítsa el az erőforráscsoportot és az összes benne lévő erőforrást.

az group delete --name myResourceGroup --yes

Következő lépések

Ebben a cikkben létrehozott egy útvonaltáblát, és hozzárendelte egy alhálózathoz. Létrehozott egy egyszerű NVA-t, amely átirányította a forgalmat egy nyilvános alhálózatról egy privát alhálózatra. Az Azure Marketplace-ről számos előre konfigurált NVA-t helyezhet üzembe, amelyek olyan hálózati funkciókat végeznek, mint például a tűzfal és a WAN-optimalizálás. További információ az útválasztásról: Az útválasztás áttekintése; Útválasztási táblázat kezelése.

Egy virtuális hálózaton belül több Azure-erőforrást helyezhet üzembe, azonban egyes Azure PaaS-szolgáltatások erőforrásai nem helyezhetők üzembe virtuális hálózatban. Ennek ellenére korlátozhatja az egyes Azure PaaS-szolgáltatások erőforrásaihoz való hozzáférést, hogy csak egyetlen virtuális hálózati alhálózatról legyenek elérhetők. További információ: A PaaS-erőforrásokhoz való hálózati hozzáférés korlátozása.