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

Azure varsayılan olarak bir sanal ağ içindeki tüm alt ağlar arasında gerçekleşen trafiği otomatik olarak yönlendirir. Azure’ın varsayılan yönlendirmesini geçersiz kılmak için kendi yönlendirmelerinizi oluşturabilirsiniz. Örneğin, bir ağ sanal gereci üzerinden alt ağlar arasındaki trafiği yönlendirmek isteyebilirsiniz. Bu makalede şunları öğreneceksiniz:

  • Yönlendirme tablosu oluşturma
  • Yönlendirme oluşturma
  • Birden fazla alt ağa sahip bir sanal ağ oluşturma
  • Yönlendirme tablosunu bir alt ağ ile ilişkilendirme
  • Trafiği yönlendiren bir NVA oluşturma
  • Sanal makineleri (VM) farklı alt ağlara dağıtma
  • NVA aracılığıyla trafiği bir alt ağdan başka birine yönlendirme

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

Azure Cloud Shell

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

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Button to launch Azure Cloud Shell.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.

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

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

Yönlendirme tablosu oluşturma

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

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

New-AzRouteTable ile bir yol tablosu oluşturun. Aşağıdaki örnek, myRouteTablePublic adlı bir yol tablosu oluşturur.

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

Yönlendirme oluşturma

Get-AzRouteTable ile yol tablosu nesnesini alarak bir yol oluşturun, Add-AzRouteConfig ile bir yol oluşturun, ardından Rota yapılandırmasını Set-AzRouteTable ile yol 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

Yönlendirme tablosunu bir alt ağ ile ilişkilendirme

Yönlendirme tablosunu bir alt ağ ile ilişkilendirebilmeniz için önce bir sanal ağ ve alt ağ oluşturmanız gerekir. New-AzVirtualNetwork ile bir sanal ağ oluşturun. Aşağıdaki örnek, 10.0.0.0/16 adres ön ekiyle myVirtualNetwork adlı bir sanal ağ oluşturur.

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

New-AzVirtualNetworkSubnetConfig ile üç alt ağ yapılandırması oluşturarak üç alt ağ oluşturun. Aşağıdaki örnek Genel, Özel ve DMZ alt ağ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

Alt ağ yapılandırmalarını, sanal ağda alt ağları oluşturan Set-AzVirtualNetwork ile sanal ağa yazın:

$virtualNetwork | Set-AzVirtualNetwork

myRouteTablePublic yol tablosunu Set-AzVirtualNetworkSubnetConfig ile Ortak alt ağ ile ilişkilendirin ve ardından alt ağ yapılandırmasını Set-AzVirtualNetwork ile 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ı oluşturma veya WAN iyileştirmesi gibi ağ işlevlerini gerçekleştiren bir VM'dir.

VM oluşturmadan önce bir ağ arabirimi oluşturun.

Ağ arabirimi oluşturma

Ağ arabirimi oluşturmadan önce Get-AzVirtualNetwork ile sanal ağ kimliğini, ardından Get-AzVirtualNetworkSubnetConfig ile alt ağ kimliğini almanız gerekir. IP iletmenin etkinleştirildiği DMZ alt ağında 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

VM oluşturma

Vm oluşturmak ve var olan bir ağ arabirimini buna eklemek için önce New-AzVMConfig ile 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 istendiğinde VM'de 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-AzVM ile VM yapılandırmasını kullanarak VM'yi oluşturun. Aşağıdaki örnek myVmNva adlı bir VM oluşturur.

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

seçeneği -AsJob vm'yi arka planda oluşturur, böylece sonraki adıma devam edebilirsiniz.

Sanal makineleri oluşturma

Sonraki bir adımda Genel alt ağdan gelen trafiğin ağ sanal gereci aracılığıyla Özel alt ağa yönlendirildiğini doğrulayabileceğiniz iki SANAL makine oluşturun.

New-AzVM ile Genel alt ağda bir VM oluşturun. Aşağıdaki örnek, myVirtualNetwork sanal ağının Genel alt ağında 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 VM oluşturun.

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

Sanal makinenin oluşturulması birkaç dakika sürer. VM oluşturulana ve Azure PowerShell'e çıkış döndürene kadar sonraki adıma devam etmeyin.

Trafiği NVA üzerinden yönlendirme

myVmPrivate VM'sinin genel IP adresini döndürmek için Get-AzPublicIpAddress komutunu kullanın. Aşağıdaki örnek, myVmPrivate VM'sinin 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. <publicIpAddress> değerini önceki komutta döndürülen IP adresi ile değiştirin.

mstsc /v:<publicIpAddress>

İndirilen RDP dosyasını açın. İstendiğinde Bağlan’ı seçin.

Sanal makineyi oluştururken belirttiğiniz kullanıcı adını ve parolayı girin (sanal makineyi oluştururken girdiğiniz kimlik bilgilerini belirtmek için Diğer seçenekler’i ve sonra Farklı bir hesap kullan’ı seçmeniz gerekebilir), ardından Tamam’ı seçin. Oturum açma işlemi sırasında bir sertifika uyarısı alabilirsiniz. Bağlantıya devam etmek için Evet’i seçin.

Sonraki bir adımda, yönlendirmeyi tracert.exe test etmek için komutu kullanılır. Tracert, Windows Güvenlik Duvarı aracılığıyla reddedilen İnternet Denetim İletisi Protokolü'ni (ICMP) kullanır. PowerShell’den myVmPrivate sanal makinesinde aşağıdaki komutu girerek Windows güvenlik duvarı üzerinden ICMP’yi etkinleştirin:

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

Bu makalede yönlendirmeyi test etmek için izleme yolu kullanılsa da, üretim dağıtımları için Windows Güvenlik Duvarı üzerinden ICMP'ye izin vermek önerilmez.

IP iletmeyi etkinleştirme bölümünde, VM'nin ağ arabirimi için Azure’da IP iletimini etkinleştirdiniz. VM içindeki işletim sistemi veya VM içinde çalışan bir uygulama da ağ trafiğini iletebilmelidir. myVmNva işletim sistemi içinde IP iletmeyi etkinleştirin.

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

mstsc /v:myvmnva

İşletim sistemi içinde IP iletmeyi etkinleştirmek için myVmNva sanal makinesinden PowerShell’de aşağıdaki komutu girin:

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

myVmNva sanal makinesini yeniden başlatarak uzak masaüstü oturumunun bağlantısını da kesin.

myVmPrivate VM bağlantısı devam ederken, myVmNva VM yeniden başlatıldıktan sonra myVmPublic VM ile bir uzak masaüstü oturumu oluşturun:

mstsc /v:myVmPublic

PowerShell’den myVmPublic sanal makinesinde aşağıdaki komutu girerek Windows güvenlik duvarı üzerinden ICMP’yi etkinleştirin:

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

Ağ trafiğinin myVmPrivate sanal makinesinden myVmPublic sanal makinesine yönlendirilmesini test etmek için myVmPublic sanal makinesinde PowerShell’den aşağıdaki komutu girin:

tracert myVmPrivate

Yanıt aşağıdaki örneğe 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 özel IP adresi olan 10.0.2.4 olduğunu görebilirsiniz. İkinci atlama ise myVmPrivate sanal makinesinin özel IP adresi olan 10.0.1.4’tür. myRouteTablePublic yönlendirme tablosuna eklenip Genel alt ağ ile ilişkilendirilen yönlendirme, Azure’un trafiği doğrudan Özel alt ağına yönlendirmek yerine NVA aracılığıyla yönlendirmesine neden olmuştur.

myVmPublic VM ile uzak masaüstü oturumunu kapatın. myVmPrivate VM bağlantınız hala açıktır.

Ağ trafiğinin myVmPublic sanal makinesinden myVmPrivate sanal makinesine yönlendirilmesini test etmek için myVmPrivate sanal makinesinde bir komut isteminden aşağıdaki komutu girin:

tracert myVmPublic

Yanıt aşağıdaki örneğe 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 myVmPrivate sanal makinesinden myVmPublic sanal makinesine doğrudan yönlendirildiğini görebilirsiniz. Varsayılan olarak Azure, trafiği doğrudan alt ağlar arasında yönlendirir.

myVmPrivate VM ile uzak masaüstü oturumunu kapatın.

Kaynakları temizleme

Artık gerekli olmadığında Remove-AzResourcegroup komutunu 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şturdunuz ve bunu bir alt ağ ile ilişkilendirin. Trafiği genel alt ağdan özel bir alt ağa yönlendiren basit bir ağ sanal gereci oluşturdunuz. Azure Market güvenlik duvarı ve WAN iyileştirmesi gibi ağ işlevlerini gerçekleştiren önceden yapılandırılmış çeşitli ağ sanal gereçleri dağıtın. Yönlendirme hakkında daha fazla bilgi için bkz. Yönlendirmeye genel bakış ve Yönlendirme tablosunu yönetme.

Bir sanal ağ içinde çok sayıda Azure kaynağına dağıtabilmenize karşın, bazı Azure PaaS hizmetlerinin kaynakları bir sanal ağa dağıtılamaz. Yine de, bazı Azure PaaS hizmetlerinin kaynaklarına erişimi yalnızca bir sanal ağ alt ağından gelecek trafikle kısıtlayabilirsiniz. Nasıl yapılacağını öğrenmek için bkz . PaaS kaynaklarına ağ erişimini kısıtlama.