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
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- 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.