Sdílet prostřednictvím


Směrování síťového provozu pomocí směrovací tabulky pomocí Azure CLI

Azure ve výchozím nastavení automaticky směruje provoz mezi všemi podsítěmi v rámci virtuální sítě. Můžete vytvořit vlastní trasy a přepsat tak výchozí směrování Azure. Možnost vytvářet vlastní trasy je užitečná například v případě, že chcete směrovat provoz mezi podsítěmi přes síťové virtuální zařízení. V tomto článku získáte informace o těchto tématech:

  • Vytvoření směrovací tabulky
  • Vytvoření trasy
  • Vytvoření virtuální sítě s několika podsítěmi
  • Přidružení směrovací tabulky k podsíti
  • Vytvoření základního síťového virtuálního zařízení, které směruje provoz z virtuálního počítače s Ubuntu
  • Nasazení virtuálních počítačů do různých podsítí
  • Směrování provozu z jedné podsítě do jiné přes síťové virtuální zařízení

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Požadavky

  • Tento článek vyžaduje verzi 2.0.28 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

Vytvoření směrovací tabulky

Než budete moct vytvořit směrovací tabulku, vytvořte skupinu prostředků pomocí příkazu az group create pro všechny prostředky vytvořené v tomto článku.

# Create a resource group.
az group create \
  --name test-rg \
  --location westus2

Vytvořte směrovací tabulku pomocí příkazu az network route-table create. Následující příklad vytvoří směrovací tabulku s názvem route-table-public.

# Create a route table
az network route-table create \
  --resource-group test-rg \
  --name route-table-public

Vytvoření trasy

Vytvořte trasu v směrovací tabulce pomocí příkazu az network route-table route create.

az network route-table route create \
  --name to-private-subnet \
  --resource-group test-rg \
  --route-table-name route-table-public \
  --address-prefix 10.0.1.0/24 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address 10.0.2.4

Přidružení směrovací tabulky k podsíti

Než budete moct přidružit směrovací tabulku k podsíti, musíte vytvořit virtuální síť a podsíť. Vytvořte virtuální síť s jednou podsítí pomocí příkazu az network vnet create.

az network vnet create \
  --name vnet-1 \
  --resource-group test-rg \
  --address-prefix 10.0.0.0/16 \
  --subnet-name subnet-public \
  --subnet-prefix 10.0.0.0/24

Vytvořte dvě další podsítě pomocí příkazu az network vnet subnet create.

# Create a private subnet.
az network vnet subnet create \
  --vnet-name vnet-1 \
  --resource-group test-rg \
  --name subnet-private \
  --address-prefix 10.0.1.0/24

# Create a DMZ subnet.
az network vnet subnet create \
  --vnet-name vnet-1 \
  --resource-group test-rg \
  --name subnet-dmz \
  --address-prefix 10.0.2.0/24

Přidružte směrovací tabulku route-table-subnet-public route k veřejné podsíti podsítě az network vnet subnet update.

az network vnet subnet update \
  --vnet-name vnet-1 \
  --name subnet-public \
  --resource-group test-rg \
  --route-table route-table-public

Vytvoření síťového virtuálního zařízení

Síťové virtuální zařízení je virtuální počítač, který provádí síťovou funkci, jako je směrování, brána firewall nebo optimalizace sítě WAN. Pro demonstrační účely vytvoříme základní síťové virtuální zařízení z virtuálního počítače s Ubuntu pro obecné účely.

Vytvořte virtuální počítač, který se použije jako síťové virtuální zařízení v podsíti podsítě subnet-dmz pomocí příkazu az vm create. Když vytvoříte virtuální počítač, Azure ve výchozím nastavení vytvoří a přiřadí síťové rozhraní vm-nvaVMNic a veřejnou IP adresu podsítě k virtuálnímu počítači. Parametr --public-ip-address "" dává Azure pokyn, aby k virtuálnímu počítači nevytvoří a nepřiřadil veřejnou IP adresu podsítě, protože virtuální počítač nemusí být připojený z internetu.

Následující příklad vytvoří virtuální počítač a přidá uživatelský účet. Tento --generate-ssh-keys parametr způsobí, že rozhraní příkazového řádku vyhledá dostupný klíč ssh v ~/.sshsouboru . Pokud se najde, použije se tento klíč. Pokud ne, jeden se vygeneruje a uloží v ~/.ssh. Nakonec nasadíme nejnovější Ubuntu 22.04 image.

az vm create \
  --resource-group test-rg \
  --name vm-nva \
  --image Ubuntu2204 \
  --public-ip-address "" \
  --subnet subnet-dmz \
  --vnet-name vnet-1 \
  --generate-ssh-keys

Vytvoření virtuálního počítače trvá několik minut. Nepokračujte k dalšímu kroku, dokud Azure nedokončí vytvoření virtuálního počítače a nevrátí výstup o virtuálním počítači.

Aby síťová rozhraní vm-nvaVMNic mohla předávat síťový provoz odesílaný do něj, to není určené pro vlastní IP adresu, musí být pro síťové rozhraní povolené předávání IP. Povolte předávání IP pro síťové rozhraní pomocí příkazu az network nic update.

az network nic update \
  --name vm-nvaVMNic \
  --resource-group test-rg \
  --ip-forwarding true

Operační systém nebo aplikace spuštěná v rámci virtuálního počítače musí také být schopné směrovat síťový provoz. Pomocí sysctl příkazu povolíme linuxové jádro předávat pakety. Pokud chcete tento příkaz spustit bez přihlášení k virtuálnímu počítači, použijeme rozšíření vlastních skriptů az vm extension set:

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

Spuštění příkazu může trvat až minutu. Tato změna se po restartování virtuálního počítače neuchová, takže pokud se virtuální počítač síťového virtuálního zařízení z nějakého důvodu restartuje, bude nutné skript opakovat.

Vytvoření virtuálních počítačů

Ve virtuální síti vytvořte dva virtuální počítače, abyste mohli ověřit, že provoz z podsítě veřejné podsítě je směrován do privátní podsítě podsítě podsítě prostřednictvím síťového virtuálního zařízení v pozdějším kroku.

Vytvořte virtuální počítač ve veřejné podsíti podsítě pomocí příkazu az vm create. Tento --no-wait parametr umožňuje Azure spustit příkaz na pozadí, abyste mohli pokračovat k dalšímu příkazu.

Následující příklad vytvoří virtuální počítač a přidá uživatelský účet. Tento --generate-ssh-keys parametr způsobí, že rozhraní příkazového řádku vyhledá dostupný klíč ssh v ~/.sshsouboru . Pokud se najde, použije se tento klíč. Pokud ne, jeden se vygeneruje a uloží v ~/.ssh. Nakonec nasadíme nejnovější Ubuntu 22.04 image.

az vm create \
  --resource-group test-rg \
  --name vm-public \
  --image Ubuntu2204 \
  --vnet-name vnet-1 \
  --subnet subnet-public \
  --admin-username azureuser \
  --generate-ssh-keys \
  --no-wait

Vytvořte virtuální počítač v privátní podsíti podsítě.

az vm create \
  --resource-group test-rg \
  --name vm-private \
  --image Ubuntu2204 \
  --vnet-name vnet-1 \
  --subnet subnet-private \
  --admin-username azureuser \
  --generate-ssh-keys

Vytvoření virtuálního počítače trvá několik minut. Po vytvoření virtuálního počítače se v Azure CLI zobrazí podobné informace jako v následujícím příkladu:

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-private",
  "location": "westus2",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.1.4",
  "publicIpAddress": "203.0.113.24",
  "resourceGroup": "test-rg"
}

Povolení přihlášení Microsoft Entra ID pro virtuální počítače

Následující příklad kódu nainstaluje rozšíření, které povolí přihlášení Microsoft Entra ID pro virtuální počítač s Linuxem. Rozšíření virtuálních počítačů jsou malé aplikace, které poskytují úlohy konfigurace a automatizace po nasazení na virtuálních počítačích Azure.

az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADSSHsign-inForLinux \
    --resource-group test-rg \
    --vm-name vm-private
az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADSSHsign-inForLinux \
    --resource-group test-rg \
    --vm-name vm-public

Směrování provozu přes síťové virtuální zařízení

Pomocí libovolného klienta SSH se připojte k dříve vytvořeným virtuálním počítačům. Například následující příkaz lze použít z rozhraní příkazového řádku, jako je například Subsystém Windows pro Linux k vytvoření relace SSH s virtuálním počítačem vm-private. V předchozích krocích jsme povolili pro virtuální počítače přihlášení k ID Microsoft Entra. K virtuálním počítačům se můžete přihlásit pomocí přihlašovacích údajů Microsoft Entra ID nebo můžete použít klíč SSH, který jste použili k vytvoření virtuálních počítačů. V následujícím příkladu použijeme klíč SSH k přihlášení k virtuálním počítačům.

Další informace o připojení SSH k virtuálnímu počítači s Linuxem a přihlášení pomocí ID Microsoft Entra najdete v tématu Přihlášení k virtuálnímu počítači s Linuxem v Azure pomocí Microsoft Entra ID a OpenSSH.


### Store IP address of VM in order to SSH

Run the following command to store the IP address of the VM as an environment variable:

```bash
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-private --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS

Pomocí následujícího příkazu nainstalujte trasovací trasu na privátní virtuální počítač virtuálního počítače:

sudo apt update
sudo apt install traceroute

Pomocí následujícího příkazu otestujte směrování síťového provozu do veřejného virtuálního počítače z virtuálního počítače vm-private .

traceroute vm-public

Odpověď bude podobná jako v následujícím příkladu:

azureuser@vm-private:~$ traceroute vm-public
traceroute to vm-public (10.0.0.4), 30 hops max, 60 byte packets
 1  vm-public.internal.cloudapp.net (10.0.0.4)  2.613 ms  2.592 ms  2.553 ms

Můžete vidět, že provoz se směruje přímo z privátního virtuálního počítače virtuálního počítače do veřejného virtuálního počítače. Výchozí trasy Azure směrují provoz přímo mezi podsítěmi. Zavřete relaci SSH k virtuálnímu počítači privátnímu virtuálnímu počítači.

Uložení IP adresy virtuálního počítače pro SSH

Spuštěním následujícího příkazu uložte IP adresu virtuálního počítače jako proměnnou prostředí:

export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-public --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS

Pomocí následujícího příkazu nainstalujte trasování na virtuální počítač ve veřejném virtuálním počítači:

sudo apt update
sudo apt install traceroute

Pomocí následujícího příkazu otestujte směrování síťového provozu do privátního virtuálního počítače virtuálního počítače z veřejného virtuálního počítače virtuálního počítače.

traceroute vm-private

Odpověď bude podobná jako v následujícím příkladu:

azureuser@vm-public:~$ traceroute vm-private
traceroute to vm-private (10.0.1.4), 30 hops max, 60 byte packets
 1  vm-nva.internal.cloudapp.net (10.0.2.4)  1.010 ms  1.686 ms  1.144 ms
 2  vm-private.internal.cloudapp.net (10.0.1.4)  1.925 ms  1.911 ms  1.898 ms

Jak vidíte, první segment směrování je 10.0.2.4, což je privátní IP adresa síťového virtuálního zařízení. Druhý segment směrování je 10.0.1.4, privátní IP adresa virtuálního počítače privátního virtuálního počítače. Trasa přidaná do směrovací tabulky –veřejná směrovací tabulka a přidružená k podsíti veřejné podsítě způsobila, že Azure směruje provoz přes síťové virtuální zařízení, a ne přímo do privátní podsítě podsítě.

Ukončete relaci SSH s veřejným virtuálním počítačem.

Vyčištění prostředků

Pokud už ji nepotřebujete, pomocí příkazu az group delete odeberte skupinu prostředků a všechny prostředky, které obsahuje.

az group delete \
    --name test-rg \
    --yes \
    --no-wait

Další kroky

V tomto článku jste vytvořili směrovací tabulku a přidružte ji k podsíti. Vytvořili jste jednoduché síťové virtuální zařízení, které směrovaly provoz z veřejné podsítě podsítě do privátní podsítě. Nasaďte různá předkonfigurovaná síťová virtuální zařízení, která provádějí síťové funkce, jako je brána firewall a optimalizace sítě WAN z Azure Marketplace. Další informace o směrování najdete v tématech Přehled směrování a Správa směrovací tabulky.

I když v rámci virtuální sítě můžete nasadit mnoho prostředků Azure, prostředky pro některé služby Azure PaaS se nedají nasadit do virtuální sítě. Přesto můžete omezit přístup k prostředkům některých služeb Azure PaaS pouze pro provoz z podsítě virtuální sítě. Postup najdete v tématu Omezení síťového přístupu k prostředkům PaaS.