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

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í síťového virtuálního zařízení, které směruje provoz
  • 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 napřed bezplatný účet.

Azure Cloud Shell

Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.

Spuštění služby Azure Cloud Shell:

Možnost Příklad nebo odkaz
Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. Screenshot that shows an example of Try It for Azure Cloud Shell.
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. Button to launch Azure Cloud Shell.
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Screenshot that shows the Cloud Shell button in the Azure portal

Použití Azure Cloud Shellu:

  1. Spusťte Cloud Shell.

  2. Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.

  3. Vložte kód nebo příkaz do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete ctrl+Shift+V nebo vyberete Cmd+Shift+V v macOS.

  4. Stisknutím klávesy Enter spusťte kód nebo příkaz.

Pokud se rozhodnete nainstalovat a používat PowerShell místně, tento článek vyžaduje modul Azure PowerShell verze 1.0.0 nebo novější. Nainstalovanou verzi zjistíte spuštěním příkazu Get-Module -ListAvailable Az. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell. Pokud používáte PowerShell místně, je také potřeba spustit příkaz Connect-AzAccount pro vytvoření připojení k Azure.

Vytvoření směrovací tabulky

Před vytvořením směrovací tabulky vytvořte skupinu prostředků pomocí rutiny New-AzResourceGroup. Následující příklad vytvoří skupinu prostředků myResourceGroup pro všechny prostředky vytvořené v tomto článku.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Vytvořte směrovací tabulku pomocí tabulky New-AzRouteTable. Následující příklad vytvoří směrovací tabulku s názvem myRouteTablePublic.

$routeTablePublic = New-AzRouteTable `
  -Name 'myRouteTablePublic' `
  -ResourceGroupName myResourceGroup `
  -location EastUS

Vytvoření trasy

Vytvořte trasu načtením objektu směrovací tabulky pomocí rutiny Get-AzRouteTable, vytvořte trasu pomocí rutiny Add-AzRouteConfig a pak zapište konfiguraci trasy do směrovací tabulky pomocí Set-AzRouteTable.

Get-AzRouteTable `
  -ResourceGroupName "myResourceGroup" `
  -Name "myRouteTablePublic" `
  | Add-AzRouteConfig `
  -Name "ToPrivateSubnet" `
  -AddressPrefix 10.0.1.0/24 `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress 10.0.2.4 `
 | Set-AzRouteTable

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íť pomocí rutiny New-AzVirtualNetwork. Následující příklad vytvoří virtuální síť s názvem myVirtualNetwork s předponou adresy 10.0.0.0/16.

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

Vytvořte tři podsítě vytvořením tří konfigurací podsítě pomocí rutiny New-AzVirtualNetworkSubnetConfig. Následující příklad vytvoří tři konfigurace podsítě pro veřejné, privátní a DMZ podsítě:

$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig `
  -Name Public `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork

$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig `
  -Name Private `
  -AddressPrefix 10.0.1.0/24 `
  -VirtualNetwork $virtualNetwork

$subnetConfigDmz = Add-AzVirtualNetworkSubnetConfig `
  -Name DMZ `
  -AddressPrefix 10.0.2.0/24 `
  -VirtualNetwork $virtualNetwork

Zapište konfigurace podsítí do virtuální sítě pomocí rutiny Set-AzVirtualNetwork, která vytvoří podsítě ve virtuální síti:

$virtualNetwork | Set-AzVirtualNetwork

Přidružte směrovací tabulku myRouteTablePublic k veřejné podsíti s rutinou Set-AzVirtualNetworkSubnetConfig a pak zapište konfiguraci podsítě do virtuální sítě pomocí rutiny Set-AzVirtualNetwork.

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $virtualNetwork `
  -Name 'Public' `
  -AddressPrefix 10.0.0.0/24 `
  -RouteTable $myRouteTablePublic | `
Set-AzVirtualNetwork

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.

Před vytvořením virtuálního počítače vytvořte síťové rozhraní.

Vytvoření síťového rozhraní

Před vytvořením síťového rozhraní musíte načíst ID virtuální sítě pomocí rutiny Get-AzVirtualNetwork a pak ID podsítě s rutinou Get-AzVirtualNetworkSubnetConfig. Vytvořte síťové rozhraní s new-AzNetworkInterface v podsíti DMZ s povoleným předáváním IP adres:

# Retrieve the virtual network object into a variable.
$virtualNetwork=Get-AzVirtualNetwork `
  -Name myVirtualNetwork `
  -ResourceGroupName myResourceGroup

# Retrieve the subnet configuration into a variable.
$subnetConfigDmz = Get-AzVirtualNetworkSubnetConfig `
  -Name DMZ `
  -VirtualNetwork $virtualNetwork

# Create the network interface.
$nic = New-AzNetworkInterface `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name 'myVmNva' `
  -SubnetId $subnetConfigDmz.Id `
  -EnableIPForwarding

Vytvoření virtuálního počítače

Pokud chcete vytvořit virtuální počítač a připojit k němu existující síťové rozhraní, musíte nejprve vytvořit konfiguraci virtuálního počítače pomocí rutiny New-AzVMConfig. Konfigurace zahrnuje síťové rozhraní vytvořené v předchozím kroku. Po zobrazení výzvy k zadání uživatelského jména a hesla vyberte uživatelské jméno a heslo, pomocí kterého se chcete k virtuálnímu počítači přihlásit.

# Create a credential object.
$cred = Get-Credential -Message "Enter a username and password for the VM."

# Create a VM configuration.
$vmConfig = New-AzVMConfig `
  -VMName 'myVmNva' `
  -VMSize Standard_DS2 | `
  Set-AzVMOperatingSystem -Windows `
    -ComputerName 'myVmNva' `
    -Credential $cred | `
  Set-AzVMSourceImage `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest | `
  Add-AzVMNetworkInterface -Id $nic.Id

Vytvořte virtuální počítač pomocí konfigurace virtuálního počítače pomocí rutiny New-AzVM. Následující příklad vytvoří virtuální počítač s názvem myVmNva.

$vmNva = New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -VM $vmConfig `
  -AsJob

Tato -AsJob možnost vytvoří virtuální počítač na pozadí, takže můžete pokračovat k dalšímu kroku.

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 veřejné podsítě je směrován do privátní 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 pomocí Rutiny New-AzVM. Následující příklad vytvoří virtuální počítač myVmPublic ve veřejné podsíti virtuální sítě myVirtualNetwork .

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork" `
  -SubnetName "Public" `
  -ImageName "Win2016Datacenter" `
  -Name "myVmPublic" `
  -AsJob

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

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork" `
  -SubnetName "Private" `
  -ImageName "Win2016Datacenter" `
  -Name "myVmPrivate"

Vytvoření virtuálního počítače trvá několik minut. Nepokračujte v dalším kroku, dokud se virtuální počítač nevytvořil, a Azure vrátí výstup do PowerShellu.

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

Pomocí rutiny Get-AzPublicIpAddress vraťte veřejnou IP adresu virtuálního počítače myVmPrivate . Následující příklad vrátí veřejnou IP adresu virtuálního počítače myVmPrivate :

Get-AzPublicIpAddress `
  -Name myVmPrivate `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Pomocí následujícího příkazu vytvořte relaci vzdálené plochy s virtuálním počítačem myVmPrivate z místního počítače. Nahraďte <publicIpAddress> IP adresou vrácenou předchozím příkazem.

mstsc /v:<publicIpAddress>

Otevřete stažený soubor RDP. Pokud se zobrazí výzva, vyberte Připojit.

Zadejte uživatelské jméno a heslo, které jste zadali při vytváření virtuálního počítače (abyste mohli zadat přihlašovací údaje, které jste zadali při vytváření virtuálního počítače, možná budete muset vybrat Další možnosti a pak Použít jiný účet), a pak vyberte OK. Během procesu přihlášení se může zobrazit upozornění certifikátu. Vyberte Ano a pokračujte v připojování.

V pozdějším kroku se tracert.exe příkaz použije k otestování směrování. Tracert používá protokol ICMP (Internet Control Message Protocol), který je odepřen prostřednictvím brány Windows Firewall. Povolte průchod protokolu ICMP bránou Windows Firewall zadáním následujícího příkazu v PowerShellu na virtuálním počítači myVmPrivate:

New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4

I když se trasování používá k otestování směrování v tomto článku, povolení protokolu ICMP přes bránu Windows Firewall pro produkční nasazení se nedoporučuje.

V části Povolení předávání IP jste povolili předávání IP v rámci Azure pro síťové rozhraní virtuálního počítače. 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. Povolte předávání IP v rámci operačního systému myVmNva.

Z příkazového řádku na virtuálním počítači myVmPrivate vzdálená plocha k myVmNva:

mstsc /v:myvmnva

Pokud chcete povolit předávání IP v rámci operačního systému, v PowerShellu na virtuálním počítači myVmNva zadejte následující příkaz:

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -Name IpEnableRouter -Value 1

Restartujte virtuální počítač myVmNva. Tím se také odpojí relace vzdálené plochy.

Zatímco jste stále připojeni k virtuálnímu počítači myVmPrivate, po restartování virtuálního počítače myVmNva vytvořte relaci vzdálené plochy k virtuálnímu počítači myVmPublic:

mstsc /v:myVmPublic

Povolte průchod protokolu ICMP bránou Windows Firewall zadáním následujícího příkazu v PowerShellu na virtuálním počítači myVmPublic:

New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4

Pokud chcete otestovat směrování síťového provozu z virtuálního počítače myVmPublic do virtuálního počítače myVmPrivate, v PowerShellu na virtuálním počítači myVmPublic zadejte následující příkaz:

tracert myVmPrivate

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

Tracing route to myVmPrivate.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.1.4]
over a maximum of 30 hops:

1    <1 ms     *        1 ms  10.0.2.4
2     1 ms     1 ms     1 ms  10.0.1.4

Trace complete.

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, což je privátní IP adresa virtuálního počítače myVmPrivate. Trasa přidaná do směrovací tabulky myRouteTablePublic a přidružená k podsíti Public způsobila, že Azure směruje provoz přes síťové virtuální zařízení, a ne přímo do podsítě Private.

Ukončete relaci vzdálené plochy k virtuálnímu počítači myVmPublic. Stále zůstanete připojeni k virtuální síti myVmPrivate.

Pokud chcete otestovat směrování síťového provozu z virtuálního počítače myVmPrivate do virtuálního počítače myVmPublic, na příkazovém řádku na virtuálním počítači myVmPrivate zadejte následující příkaz:

tracert myVmPublic

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

Tracing route to myVmPublic.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.0.4]
over a maximum of 30 hops:

1     1 ms     1 ms     1 ms  10.0.0.4

Trace complete.

Jak vidíte, provoz se směruje přímo z virtuálního počítače myVmPrivate do virtuálního počítače myVmPublic. Azure ve výchozím nastavení směruje provoz přímo mezi podsítěmi.

Ukončete relaci vzdálené plochy k virtuálnímu počítači myVmPrivate.

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

Pokud už ji nepotřebujete, odeberte skupinu prostředků a všechny prostředky, které obsahuje, pomocí remove-AzResourcegroup .

Remove-AzResourceGroup -Name myResourceGroup -Force

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ě do privátní podsítě. Nasaďte celou řadu předem nakonfigurovaných síťových virtuálních 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.

Přestože v rámci virtuální sítě můžete nasadit řadu prostředků Azure, prostředky některých služeb Azure PaaS do virtuální sítě nasadit nejde. 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.