PowerShell kullanarak ağ trafiğini yönlendirme tablosuyla yönlendirme

Azure varsayılan olarak, trafiği otomatik olarak bir sanal ağ içindeki tüm alt ağlara gönderir. Azure'un varsayılan yönlendirmeyi geçersiz kılmak için kendi yönlendirmelerinizi oluşturabilirsiniz. Örneğin, trafiği bir ağ sanal cihazı (NVA) aracılığıyla alt ağlar arasında yönlendirmek istediğiniz durumda, özel yönlendirmeler oluşturabilme özelliği yararlı olur. Bu makalede şunları yapmayı öğrenirsiniz:

  • Yönlendirme tablosu oluşturma
  • Rota oluşturma
  • Birden çok alt ağ ile sanal ağ oluşturma
  • Bir yönlendirme tabloyu alt ağ ile ilişkilendirme
  • Trafiği yönlendiren bir NVA oluşturma
  • Sanal makineleri (VM) farklı alt ağlara dağıtma
  • Trafiği NVA aracılığıyla bir alt ağdan diğerine yönlendirme

Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.

Azure Bulut Kabuğu'nu kullanma

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Bulut Kabuğu'nu barındırmaktadır. Azure hizmetleriyle çalışmak için Bash'i veya Bulut Kabuk ile PowerShell'i kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için önceden yüklenmiş Bulut Kabuğu komutlarını kullanabilirsiniz.

Azure Bulut Kabuğu'nu başlatmak için:

Seçenek Örnek/Bağlantı
Kod bloğunda sağ üst köşedeki Dene'yi seçin. Dene'yi seçmek kodu Bulut Kabuğu'a otomatik olarak kopyalamaz. Azure Bulut Kabuğu için Deneyin örneği
Tarayıcınızda Bulut https://shell.azure.com Kabuğu'nu https://shell.azure.com gidin veya Bulut Kabuğu'nu Başlat düğmesini seçin. Yeni bir pencerede Bulut Kabuğu'nu başlat
Azure portalında sağ üstteki menü çubuğunda Bulut Kabuğu düğmesini seçin. Azure portalında Bulut Kabuğu düğmesi

Azure Bulut Kabuğu'daki bu makaledeki kodu çalıştırmak için:

  1. Bulut Kabuğu'nu Başlat.

  2. Kodu kopyalamak için kod bloğundaki Kopyala düğmesini seçin.

  3. Kodu, Windows ve Linux'ta CtrlShift V'yi seçerek veya macOS üzerinde CmdShift V'yi seçerek Bulut Kabuğu oturumuna yapıştırın.

  4. Kodu çalıştırmak için Enter'ı seçin.

PowerShell'i yerel olarak yükp kullanmayı seçerseniz, bu makale Azure PowerShell 1.0.0 veya sonraki bir sürümünü gerektirir. Yüklü Get-Module -ListAvailable Az sürümü bulmak için çalıştırın. Yükseltmeniz gerekirse bkz. Yükseltme modülünü Azure PowerShell. PowerShell'i yerel olarak çalışıyorsanız, Connect-AzAccount Azure'la bağlantı oluşturmak için de çalıştırmanız gerekir.

Yönlendirme tablosu oluşturma

Yönlendirme tablosu oluşturamadan önce New-AzResourceGroup ile bir kaynak grubu oluşturun. Aşağıdaki örnekte, bu makalede oluşturulan tüm kaynaklar için MyResourceGroup adlı bir kaynak grubu oluşturulur.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

New-AzRouteTable ile bir yönlendirme tablosu oluşturun. Aşağıdaki örnek, MyRouteTablePublicadlı bir yönlendirme tablosu oluşturur.

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

Rota oluşturma

Get-AzRouteTableile yönlendirme tablosu nesnesini alarak bir rota oluşturun, Add-AzRouteConfigile bir rota oluşturun, ardından Set-AzRouteTableile yönlendirme yapılandırmasını rota tablosuna yazın.

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

Bir yönlendirme tabloyu alt ağ ile ilişkilendirme

Yönlendirme tablosuyla alt ağ arasında bağlantı oluşturamadan önce bir sanal ağ ve alt ağ oluşturmanız gerekir. New-AzVirtualNetwork ile sanal ağ oluşturun. Aşağıdaki örnek, adres ön eki 10.0.0.0/16olan myVirtualNetwork adlı sanal bir ağ oluşturur.

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

New-AzVirtualNetworkSubnetConfigile üç alt ağ yapılandırma oluşturarak üç alt ağ oluşturun. Aşağıdaki örnek, Genel, Özel ve DMZaltağları için üç alt ağ yapılandırması oluşturur:

$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

Set-AzVirtualNetworkile sanal ağa alt ağ yapılandırmalarını yazın; bu, sanal ağda alt ağları oluşturur:

$virtualNetwork | Set-AzVirtualNetwork

MyRouteTablePublic yönlendirme tabloyu Set-AzVirtualNetworkSubnetConfig ile Ortak alt ağ ile ilişkilendirme ve ardından Set-AzVirtualNetworkile alt ağ yapılandırmasını sanal ağa yazın.

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

NVA oluşturma

NVA, yönlendirme, güvenlik duvarı veya WAN iyileştirme gibi bir ağ işlevi gerçekleştiren bir sanal makinedir.

Sanal makine oluşturmadan önce bir ağ arabirimi oluşturun.

Ağ arabirimi oluşturma

Ağ arabirimi oluşturmadan önce, Get-AzVirtualNetworkile sanal ağ kimliğini, ardından Get-AzVirtualNetworkSubnetConfigile alt ağ Kimliğini alınız. IP iletmenin etkin olduğu DMZ alt ağına New-AzNetworkInterface ile bir ağ arabirimi oluşturun:

# 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

Sanal makine oluşturma

Sanal makine oluşturmak ve buna mevcut bir ağ arabirimini iliştirmek için, önce New-AzVMConfigile bir VM yapılandırması oluşturmanız gerekir. Yapılandırma, önceki adımda oluşturulan ağ arabirimini içerir. Kullanıcı adı ve parola sorulsa, sanal bilgisayarda oturum açmak istediğiniz kullanıcı adını ve parolayı seçin.

# 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

New-AzVMile SANAL MAKINE yapılandırmasını kullanarak sanal makine oluşturun. Aşağıdaki örnekte myVmNvaadlı bir SANAL MAKINE oluşturur.

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

Bu -AsJob seçenek VM'yi arka planda oluşturur, böylece sonraki adıma devam edersiniz.

Sanal makineler oluşturma

Daha sonraki bir adımda Ortak alt ağdan gelen trafiğin Ağ sanal cihazı aracılığıyla Özel alt ağına yönlendirildi doğrulanması için, sanal ağda iki sanal sanal vm oluşturun.

New-AzVMile Genel alt ağda bir SANAL MAKINE oluşturun. Aşağıdaki örnek, myVirtualNetwork sanal ağının Genel alt ağına myVmPublic adlı bir VM oluşturur.

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

Özel alt ağda bir sanal makine oluşturun.

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

Sanal makinenin oluşturması birkaç dakika sürer. Sanal makine oluşturulana ve Azure çıktıyı PowerShell'e döndürene kadar sonraki adıma devam edin.

NVA üzerinden trafiği yönlendirme

myVmPrivate VM'nin genel IP adresini almak için Get-AzPublicIpAddress kullanın. Aşağıdaki örnek myVmPrivate VM'nin genel IP adresini döndürür:

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

Yerel bilgisayarınızdan myVmPrivate VM ile uzak masaüstü oturumu oluşturmak için aşağıdaki komutu kullanın. Önceki <publicIpAddress> komuttan döndürülen IP adresiyle değiştirin.

mstsc /v:<publicIpAddress>

İndirilen RDP dosyasını açın. İstendiğinde, Tamam'ı Bağlan.

Sanal makineyi oluştururken belirttiğiniz kullanıcı adını ve parolayı girin (Diğer seçenekler'i seçmeniz gerekebilir,ardından VM'yi oluştururken girdiğiniz kimlik bilgilerini belirtmek için farklı bir hesap kullan'ı seçin), ardından Tamam'ı seçin. Oturum açma işlemi sırasında bir sertifika uyarısı alsanız bile. Bağlantıyla devam etmek için Evet'i seçin.

Sonraki bir adımda, komut tracert.exe yönlendirmeyi test etmek için kullanılır. Tracert, Güvenlik Duvarı üzerinden reddedilen İnternet Denetim İleti Protokolü'Windows kullanır. myVmPrivate VM'de PowerShell'den aşağıdaki komutu girerek ICMP'yi Windows güvenlik duvarı üzerinden etkinleştirin:

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

bu makalede yönlendirmeyi test etmek için izleme yolu kullanılmış olsa da, üretim dağıtımları için ICMP'nin Windows Güvenlik Duvarı üzerinden kullanılmasına izin vermemektedir.

IP iletmeyi etkinleştir'de VM'nin ağ arabirimi için Azure'da IP iletmeyi etkinleştirmişsiniz. SANAL MAKINE'nin içinde, işletim sistemi veya SANAL MAKINE içinde çalışan bir uygulama, ağ trafiğini iletebilir. myVmNvaişletim sistemi içinde IP iletmeyi etkinleştirin.

myVmPrivate VM'de bir komut isteminden, uzak masaüstünden myVmNva'ya:

mstsc /v:myvmnva

İşletim sistemi içinde IP iletmeyi etkinleştirmek için, myVmNva VM'den PowerShell'de aşağıdaki komutu girin:

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

Uzak masaüstü oturumunun bağlantısını da kesen myVmNva VM'yi yeniden başlatın.

myVmPrivate VM'ye bağlıyken, myVmNva VM yeniden başlatıldıktan sonra myVmPublic VM'de bir uzak masaüstü oturumu oluşturun:

mstsc /v:myVmPublic

myVmPublic VM'de PowerShell'den aşağıdaki komutu girerek ICMP'yi Windows güvenlik duvarı üzerinden etkinleştirin:

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

myVmPublic VM'den ağ trafiğinin myVmPrivate VM'ye yönlendirilme testini yapmak için, myVmPublic VM'de PowerShell'den aşağıdaki komutu girin:

tracert myVmPrivate

Yanıt aşağıdaki örnektekine benzer:

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.

İlk atlamanın NVA'nın özel IP adresi olan 10.0.2.4 olduğunu görüyorsunuz. İkinci atlama, myVmPrivate VM'nin özel IP adresi olan 10.0.1.4'tir. myRouteTablePublic yönlendirme tablosuna eklenen ve Genel alt ağla ilişkilendirilmiş rota, Azure'un trafiği doğrudan Özel alt ağ yerine NVA üzerinden yönlendirmesini sağlar.

Uzak masaüstü oturumunu myVmPublic VM'de kapatın; bu da sizi myVmPrivate VM'ye bağlı bırakır.

myVmPrivate VM'den ağ trafiğinin myVmPublic VM'ye yönlendirilme testini yapmak için, myVmPrivate VM'de komut isteminden aşağıdaki komutu girin:

tracert myVmPublic

Yanıt aşağıdaki örnektekine benzer:

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.

Trafiğin doğrudan myVmPrivate VM'den myVmPublicVM'ye yönlendirildiklerini görüyorsunuz. Varsayılan olarak, Azure trafiği doğrudan alt ağların arasında gönderir.

Uzak masaüstü oturumunu myVmPrivate VM'de kapatın.

Kaynakları temizleme

Artık gerek kalmaması için Remove-AzResourcegroup'ı kullanarak kaynak grubunu ve içerdiği tüm kaynakları kaldırın.

Remove-AzResourceGroup -Name myResourceGroup -Force

Sonraki adımlar

Bu makalede, bir yönlendirme tablosu oluşturdunız ve bunu bir alt ağ ile ilişkilendirildi. Trafiği ortak alt ağdan özel alt ağa yönlendiren basit bir ağ sanal cihazı oluşturdunız. Azure Marketi'nden güvenlik duvarı ve WAN iyileştirmesi gibi ağ işlevlerini gerçekleştirmek için önceden yapılandırılmış çeşitli ağ sanal cihazları dağıtın. Yönlendirme hakkında daha fazla bilgi edinmek için bkz. Yönlendirmeye genel bakış ve Yönlendirme tablosunu yönetme.

Sanal ağ içinde birçok Azure kaynaklarını dağıtabilirsiniz, ancak bazı Azure PaaS hizmetleri için kaynaklar sanal ağa dağıtamaz. Yine de bazı Azure PaaS hizmetlerinin kaynaklarına erişimi yalnızca sanal ağ alt ağına gelen trafikle kısıtabilirsiniz. Nasıl olduğunu öğrenmek için bkz. PaaS kaynaklarına ağ erişimini kısıtlama.