Azure CLI kullanarak bir yönlendirme 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
  • Ubuntu VM'sinden gelen trafiği yönlendiren temel 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 birücretsiz Azure hesabı oluşturun.

Ön koşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Bu makale, Azure CLI'nın 2.0.28 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.

Yönlendirme tablosu oluşturma

Yol tablosu oluşturabilmeniz için önce bu makalede oluşturulan tüm kaynaklar için az group create ile bir kaynak grubu oluşturun.

# Create a resource group.
az group create \
  --name myResourceGroup \
  --location eastus

az network route-table create ile bir yol tablosu oluşturun. Aşağıdaki örnek, myRouteTablePublic adlı bir yol tablosu oluşturur.

# Create a route table
az network route-table create \
  --resource-group myResourceGroup \
  --name myRouteTablePublic

Yönlendirme oluşturma

az network route-table route create komutuyla rota tablosunda bir yol oluşturun.

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

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. az network vnet create ile bir alt ağ ile bir sanal ağ oluşturun.

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

az network vnet subnet create ile iki ek alt ağ oluşturun.

# 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

myRouteTablePublic yol tablosunu az network vnet subnet update ile Ortak alt ağ ile ilişkilendirin.

az network vnet subnet update \
  --vnet-name myVirtualNetwork \
  --name Public \
  --resource-group myResourceGroup \
  --route-table myRouteTablePublic

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. Tanıtım amacıyla genel amaçlı bir Ubuntu VM'den temel bir NVA oluşturacağız.

az vm create ile DMZ alt ağına NVA olarak kullanılacak bir VM oluşturun. Vm oluşturduğunuzda, Azure varsayılan olarak myVmNvaVMNic adlı bir ağ arabirimi ve bir genel IP adresi oluşturur ve vm'ye atar. parametresi, --public-ip-address "" Vm'nin İnternet'ten bağlanması gerekmediğinden Azure'a vm'ye genel IP adresi oluşturmamasını ve atamamasını belirtir. SSH anahtarları, varsayılan anahtar konumunda zaten mevcut değilse komut bunları oluşturur. Belirli bir anahtar kümesini kullanmak için --ssh-key-value seçeneğini kullanın.

az vm create \
  --resource-group myResourceGroup \
  --name myVmNva \
  --image Ubuntu2204 \
  --public-ip-address "" \
  --subnet DMZ \
  --vnet-name myVirtualNetwork \
  --generate-ssh-keys

Sanal makinenin oluşturulması birkaç dakika sürer. Azure VM'yi oluşturmayı bitirip VM hakkında çıkış döndürene kadar sonraki adıma devam etmeyin.

myVmNvaVMNic adlı ağ arabiriminin, kendi IP adresini hedefleyen bir ağ trafiğini ona iletebilmesi için, ağ arabirimi için IP iletmenin etkinleştirilmesi gerekir. az network nic update ile ağ arabirimi için IP iletmeyi etkinleştirin.

az network nic update \
  --name myVmNvaVMNic \
  --resource-group myResourceGroup \
  --ip-forwarding true

VM içindeki işletim sistemi veya VM içinde çalışan bir uygulama da ağ trafiğini iletebilmelidir. Linux çekirdeğinin sysctl paketleri iletmesini sağlamak için komutunu kullanacağız. Bu komutu VM'de oturum açmadan çalıştırmak için az vm extension set Özel Betik uzantısını kullanacağız:

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"}'

Komutun yürütülmesi bir dakika kadar sürebilir. Vm yeniden başlatıldıktan sonra bu değişikliğin devam etmediğini unutmayın. Bu nedenle NVA VM herhangi bir nedenle yeniden başlatılırsa betiğin yinelenmeleri gerekir.

Sanal makineleri oluşturma

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

Az vm create ile Ortak alt ağda bir VM oluşturun. parametresi Azure'ın --no-wait komutu arka planda yürütmesini sağlar, böylece sonraki komuta devam edebilirsiniz. Bu makaleyi kolaylaştırmak için bir parola kullanılır. Anahtarlar genellikle üretim dağıtımlarında kullanılır. Anahtarları kullanıyorsanız, SSH aracısı iletmeyi de yapılandırmanız gerekir. Daha fazla bilgi için SSH istemcinizin belgelerine bakın. Aşağıdaki komutta öğesini seçtiğiniz bir parolayla değiştirin <replace-with-your-password> .

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

Özel alt ağda bir VM oluşturun.

az vm create \
  --resource-group myResourceGroup \
  --name myVmPrivate \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet Private \
  --admin-username azureuser \
  --admin-password $adminPassword

Sanal makinenin oluşturulması birkaç dakika sürer. VM oluşturulduktan sonra Azure CLI aşağıdaki örneğe benzer bilgileri gösterir:

{
  "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"
}

publicIpAddress değerini not alın. Bu adres, sonraki bir adımda sanal makineye İnternet'ten erişmek için kullanılır.

Trafiği NVA üzerinden yönlendirme

Seçtiğiniz bir SSH istemcisini kullanarak yukarıda oluşturulan VM'lere bağlanın. Örneğin, aşağıdaki komut, myVmPrivate VM ile SSH oturumu oluşturmak için WSL gibi bir komut satırı arabiriminden kullanılabilir. publicIpAddress değerini VM'nizin genel IP adresiyle değiştirin<.> Yukarıdaki örnekte IP adresi 13.90.242.231'dir.

ssh azureuser@<publicIpAddress>

Parola istendiğinde Sanal makine oluşturma bölümünde seçtiğiniz parolayı girin.

myVmPrivate VM'sine izleme yolu yüklemek için aşağıdaki komutu kullanın:

sudo apt update
sudo apt install traceroute

Aşağıdaki komutu kullanarak myVmPrivate VM'sinden myVmPublic VM'ye ağ trafiği yönlendirmesini test edin.

traceroute myVmPublic

Yanıt aşağıdaki örneğe benzer:

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

Trafiğin myVmPrivate sanal makinesinden myVmPublic sanal makinesine doğrudan yönlendirildiğini görebilirsiniz. Azure'ın varsayılan yolları, trafiği doğrudan alt ağlar arasında yönlendirir.

myVmPrivate VM'sinden myVmPublic VM'ye SSH yapmak için aşağıdaki komutu kullanın:

ssh azureuser@myVmPublic

myVmPublic VM'sine izleme yolu yüklemek için aşağıdaki komutu kullanın:

sudo apt-get install traceroute

aşağıdaki komutu kullanarak myVmPublic VM'den myVmPrivate VM'sine ağ trafiği yönlendirmesini test edin.

traceroute myVmPrivate

Yanıt aşağıdaki örneğe benzer:

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

İ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.

SSH oturumlarını hem myVmPublic hem de myVmPrivate VM'lerine kapatın.

Kaynakları temizleme

Artık gerekli olmadığında az group delete komutunu kullanarak kaynak grubunu ve içerdiği tüm kaynakları kaldırın.

az group delete --name myResourceGroup --yes

Sonraki adımlar

Bu makalede, bir yönlendirme tablosu oluşturdunuz ve bunu bir alt ağ ile ilişkilendirin. Bir genel alt ağdan özel alt ağa trafiği yönlendiren basit bir NVA oluşturdunuz. Azure Market’ten güvenlik duvarı ve WAN iyileştirme gibi ağ işlevleri gerçekleştiren, önceden yapılandırılmış çeşitli NVA’lar 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.