Aracılığıyla paylaş


Sanal makine ağ trafiği filtreleme sorununu tanılama

Bu makalede, bir sanal makine (VM) için etkili olan ağ güvenlik grubu (NSG) güvenlik kurallarını görüntüleyerek ağ trafiği filtresi sorununu tanılamayı öğreneceksiniz.

NSG'ler, vm'ye gelen ve giden trafik türlerini denetlemenizi sağlar. Bir NSG'yi Azure sanal ağındaki bir alt ağ, vm'ye bağlı bir ağ arabirimi veya her ikisini birden ilişkilendirebilirsiniz. Bir ağ arabirimine uygulanan etkili güvenlik kuralları, ağ arabirimiyle ilişkili NSG'de bulunan kuralların ve ağ arabiriminin bulunduğu alt ağın bir toplamıdır. Farklı NSG'lerdeki kurallar bazen birbiriyle çakışabilir ve vm'nin ağ bağlantısını etkileyebilir. VM'nizin ağ arabirimlerine uygulanan NSG'lerden tüm etkili güvenlik kurallarını görüntüleyebilirsiniz. Sanal ağ, ağ arabirimi veya NSG kavramları hakkında bilginiz yoksa bkz . Sanal ağa genel bakış, Ağ arabirimi ve Ağ güvenlik gruplarına genel bakış.

Senaryo

İnternet'ten 80 numaralı bağlantı noktası üzerinden bir VM'ye bağlanmayı denersiniz, ancak bağlantı başarısız olur. 80 numaralı bağlantı noktasına neden İnternet'ten erişemediğini belirlemek için Azure portalını, PowerShell'i veya Azure CLI'yı kullanarak ağ arabirimi için geçerli güvenlik kurallarını görüntüleyebilirsiniz.

Aşağıdaki adımlarda, geçerli güvenlik kurallarını görüntülemek için mevcut bir VM'niz olduğu varsayılır. Mevcut bir VM'niz yoksa, bu makaledeki görevleri tamamlamak için önce bir Linux veya Windows VM dağıtın. Bu makaledeki örnekler, myVMVMNic adlı ağ arabirimine sahip myVM adlı bir VM'ye yöneliktir. VM ve ağ arabirimi myResourceGroup adlı bir kaynak grubundadır ve Doğu ABD bölgesindedir. Sorunu tanılamak istediğiniz VM için adımlardaki değerleri uygun şekilde değiştirin.

Azure portalını kullanarak tanılama

  1. Gerekli izinlere sahip bir Azure hesabıyla Azure portalında oturum açın.

  2. Azure portalının üst kısmında, arama kutusuna VM'nin adını girin. Arama sonuçlarında VM'nin adı göründüğünde seçin.

  3. Ayarlar'ın altında, aşağıdaki resimde gösterildiği gibi Ağ'ı seçin:

    V M V M Nic'im için Ağ ayarlarını içeren Azure portalını gösteren ekran görüntüsü.

    Önceki resimde listelenen kurallar myVMVMNic adlı bir ağ arabirimine yöneliktir. ağ arabirimi için iki farklı ağ güvenlik grubundan GELEN BAĞLANTI NOKTASI KURALLARI olduğunu görürsünüz:

    • mySubnetNSG: Ağ arabiriminin içinde olduğu alt ağ ile ilişkilendirilir.
    • myVMNSG: myVMVMNic adlı VM'deki ağ arabirimiyle ilişkilendirilir.

    DenyAllInBound adlı kural, senaryoda açıklandığı gibi sanal makineye 80 numaralı bağlantı noktası üzerinden İnternet'ten gelen iletişimi engelleyen kuraldır. Kural, İnternet'i içeren SOURCE için 0.0.0.0/0'ı listeler. Daha yüksek önceliğe (daha düşük sayıya) sahip başka hiçbir kural 80 numaralı gelen bağlantı noktasına izin verir. İnternet'ten VM'ye gelen 80 numaralı bağlantı noktasına izin vermek için bkz . Sorunu çözme. Güvenlik kuralları ve Azure'ın bunları nasıl uyguladığı hakkında daha fazla bilgi edinmek için bkz . Ağ güvenlik grupları.

    Resmin alt kısmında GIDEN BAĞLANTI NOKTASI KURALLARINI da görürsünüz. Bunun altında, ağ arabirimi için giden bağlantı noktası kuralları bulunur. Resimde her NSG için yalnızca dört gelen kuralı gösterse de, NSG'lerinizin dörtten fazla kuralı olabilir. Resimde, SOURCE ve DESTINATION altında VirtualNetwork ve SOURCE altında AzureLoadBalancer görürsünüz. VirtualNetwork ve AzureLoadBalancer hizmet etiketleridir. Hizmet etiketleri, güvenlik kuralı oluşturma karmaşıklığını en aza indirmeye yardımcı olmak için bir ip adresi ön ekleri grubunu temsil eder.

  4. Vm'nin çalışır durumda olduğundan emin olun ve aşağıdaki resimde gösterilen etkin güvenlik kurallarını görmek için önceki resimde gösterildiği gibi Geçerli güvenlik kuralları'nı seçin:

    İndir ve AllowAzureLoadBalancerInbound Inbound kuralının seçili olduğu Etkin güvenlik kuralları bölmesini gösteren ekran görüntüsü.

    Listelenen kurallar, 3. adımda gördüğünüz kurallarla aynıdır, ancak ağ arabirimi ve alt ağ ile ilişkili NSG için farklı sekmeler vardır. Resimde görebileceğiniz gibi, yalnızca ilk 50 kural gösterilir. Tüm kuralları içeren bir .csv dosyası indirmek için İndir'i seçin.

    Her hizmet etiketinin hangi ön ekleri temsil ettiğini görmek için AllowAzureLoadBalancerInbound adlı kural gibi bir kural seçin. Aşağıdaki resimde AzureLoadBalancer hizmet etiketinin ön ekleri gösterilmektedir:

    Girilen AllowAzureLoadBalancerInbound için Adres ön eklerini gösteren ekran görüntüsü.

    AzureLoadBalancer hizmet etiketi yalnızca bir ön eki temsil etse de, diğer hizmet etiketleri birkaç ön eki temsil eder.

  5. Önceki adımlarda myVMVMNic adlı bir ağ arabiriminin güvenlik kuralları gösterildi, ancak önceki resimlerin bazılarında myVMVMNic2 adlı bir ağ arabirimi de gördünüz. Bu örnekteki VM'ye bağlı iki ağ arabirimi vardır. Etkili güvenlik kuralları her ağ arabirimi için farklı olabilir.

    myVMVMNic2 ağ arabiriminin kurallarını görmek için seçin. Aşağıdaki resimde gösterildiği gibi, her iki ağ arabirimi de aynı alt ağda olduğundan ağ arabirimi, myVMVMNic ağ arabirimiyle kendi alt ağıyla ilişkilendirilmiş aynı kurallara sahiptir. Bir NSG'yi bir alt ağ ile ilişkilendirdiğinizde, kuralları alt ağdaki tüm ağ arabirimlerine uygulanır.

    V M V M Nic 2'm için Ağ ayarlarını içeren Azure portalını gösteren ekran görüntüsü.

    myVMVMNic ağ arabiriminden farklı olarak, myVMVMNic2 ağ arabiriminin kendisiyle ilişkilendirilmiş bir ağ güvenlik grubu yoktur. Her ağ arabirimi ve alt ağın kendisiyle ilişkilendirilmiş sıfır veya bir NSG olabilir. Her ağ arabirimi veya alt ağıyla ilişkili NSG aynı veya farklı olabilir. Aynı ağ güvenlik grubunu, seçtiğiniz sayıda ağ arabirimi ve alt ağıyla ilişkilendirebilirsiniz.

Etkin güvenlik kuralları VM aracılığıyla görüntülense de, etkin güvenlik kurallarını bir kişi aracılığıyla da görüntüleyebilirsiniz:

PowerShell kullanarak tanılama

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Azure Cloud Shell'de veya bilgisayarınızdan PowerShell'i çalıştırarak aşağıdaki komutları çalıştırabilirsiniz. Azure Cloud Shell ücretsiz bir etkileşimli kabuk. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır. PowerShell'i bilgisayarınızdan çalıştırıyorsanız Azure PowerShell modülü, sürüm 1.0.0 veya üzeri gerekir. Yüklü sürümü bulmak için bilgisayarınızda komutunu çalıştırın Get-Module -ListAvailable Az . Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız, Azure'da gerekli izinlere sahip bir hesapla oturum açmak için de komutunu çalıştırmanız Connect-AzAccount gerekir].

Get-AzEffectiveNetworkSecurityGroup ile bir ağ arabirimi için etkili güvenlik kurallarını alın. Aşağıdaki örnek, myResourceGroup adlı bir kaynak grubunda yer alan myVMVMNic adlı ağ arabirimi için geçerli güvenlik kurallarını alır:

Get-AzEffectiveNetworkSecurityGroup `
  -NetworkInterfaceName myVMVMNic `
  -ResourceGroupName myResourceGroup

Çıkış json biçiminde döndürülür. Çıkışı anlamak için bkz . komut çıkışını yorumlama. Çıkış yalnızca bir NSG ağ arabirimi, ağ arabiriminin içinde olduğu alt ağ veya her ikisi ile ilişkiliyse döndürülür. VM çalışıyor durumda olmalıdır. Vm'de farklı NSG'ler uygulanmış birden çok ağ arabirimi olabilir. Sorun giderme sırasında, her ağ arabirimi için komutunu çalıştırın.

Bağlantı sorunu yaşamaya devam ediyorsanız ek tanılama ve dikkat edilmesi gerekenler bölümüne bakın.

Ağ arabiriminin adını bilmiyorsanız ancak ağ arabiriminin bağlı olduğu VM'nin adını biliyorsanız, aşağıdaki komutlar bir VM'ye eklenmiş tüm ağ arabirimlerinin kimliklerini döndürür:

$VM = Get-AzVM -Name myVM -ResourceGroupName myResourceGroup
$VM.NetworkProfile

Aşağıdaki örneğe benzer bir çıktı alırsınız:

NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic

Önceki çıkışta ağ arabirimi adı myVMVMNic'tir.

Azure CLI kullanarak tanılama

Bu makaledeki görevleri tamamlamak için Azure CLI komutlarını kullanıyorsanız, komutları Azure Cloud Shell'de veya Azure CLI'yi bilgisayarınızdan çalıştırarak çalıştırın. Bu makale, Azure CLI 2.0.32 veya sonraki bir sürümünü gerektirir. Yüklü sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme. Azure CLI'yi yerel olarak çalıştırıyorsanız, gerekli izinlere sahip bir hesapla Azure'da da çalıştırmanız az login ve oturum açmanız gerekir.

az network nic list-effective-nsg ile bir ağ arabirimi için etkili güvenlik kurallarını alın. Aşağıdaki örnek, myResourceGroup adlı bir kaynak grubunda yer alan myVMVMNic adlı ağ arabirimi için geçerli güvenlik kurallarını alır:

az network nic list-effective-nsg \
  --name myVMVMNic \
  --resource-group myResourceGroup

Çıkış json biçiminde döndürülür. Çıkışı anlamak için bkz . komut çıkışını yorumlama. Çıkış yalnızca bir NSG ağ arabirimi, ağ arabiriminin içinde olduğu alt ağ veya her ikisi ile ilişkiliyse döndürülür. VM çalışıyor durumda olmalıdır. Vm'de farklı NSG'ler uygulanmış birden çok ağ arabirimi olabilir. Sorun giderme sırasında, her ağ arabirimi için komutunu çalıştırın.

Bağlantı sorunu yaşamaya devam ediyorsanız ek tanılama ve dikkat edilmesi gerekenler bölümüne bakın.

Ağ arabiriminin adını bilmiyorsanız ancak ağ arabiriminin bağlı olduğu VM'nin adını biliyorsanız, aşağıdaki komutlar bir VM'ye eklenmiş tüm ağ arabirimlerinin kimliklerini döndürür:

az vm show \
  --name myVM \
  --resource-group myResourceGroup

Döndürülen çıktıda aşağıdaki örneğe benzer bilgiler görürsünüz:

"networkProfile": {
    "additionalProperties": {},
    "networkInterfaces": [
      {
        "additionalProperties": {},
        "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      },

Önceki çıkışta ağ arabirimi adı myVMVMNic arabirimidir.

Komut çıkışını yorumlama

Sorunu tanılamak için PowerShell'i veya Azure CLI'yı kullanıp kullanmadığınıza bakılmaksızın, aşağıdaki bilgileri içeren bir çıktı alırsınız:

  • NetworkSecurityGroup: Ağ güvenlik grubunun kimliği.
  • İlişkilendirme: Ağ güvenlik grubunun bir NetworkInterface veya Alt Ağ ile ilişkili olup olmadığı. Bir NSG her ikisiyle de ilişkiliyse, her NSG için NetworkSecurityGroup, Association ve EffectiveSecurityRules ile çıkış döndürülür. Etkili güvenlik kurallarını görüntülemek için komutu çalıştırmadan hemen önce NSG ilişkilendirilir veya ilişkisi kaldırılırsa, değişikliğin komut çıkışına yansıtılması için birkaç saniye beklemeniz gerekebilir.
  • EffectiveSecurityRules: Güvenlik kuralı oluşturma bölümünde her özelliğin açıklaması ayrıntılı olarak açıklandı. DefaultSecurityRules/ ile önceden oluşturulmuş kural adları, her NSG'de var olan varsayılan güvenlik kurallarıdır. SecurityRules/ ile önceden oluşturulmuş kural adları, oluşturduğunuz kurallardır. destinationAddressPrefix veya sourceAddressPrefix özellikleri için İnternet, VirtualNetwork ve AzureLoadBalancer gibi bir hizmet etiketi belirten kurallar, expandedDestinationAddressPrefix özelliği için de değerlere sahiptir. expandedDestinationAddressPrefix özelliği, hizmet etiketiyle temsil edilen tüm adres ön eklerini listeler.

Çıktıda yinelenen kuralların listelendiğini görüyorsanız bunun nedeni NSG'nin hem ağ arabirimi hem de alt ağ ile ilişkili olmasıdır. Her iki NSG'de de aynı olan kendi kurallarınızı oluşturduysanız, her iki NSG de aynı varsayılan kurallara sahiptir ve ek yinelenen kurallara sahip olabilir.

DefaultSecurityRules/DenyAllInBound adlı kural, senaryoda açıklandığı gibi sanal makineye 80 numaralı bağlantı noktası üzerinden İnternet üzerinden gelen iletişimi engelleyen kuraldır. Daha yüksek önceliğe (daha düşük sayıya) sahip başka bir kural İnternet'ten gelen 80 numaralı bağlantı noktasına izin verir.

Sorunu çözme

Bu makaledeki senaryoda sunulan sorunu tanılamak için Azure portalını, PowerShell'i veya Azure CLI'yı kullanmanız farketmeksizin, çözüm aşağıdaki özelliklere sahip bir ağ güvenlik kuralı oluşturmaktır:

Özellik Değer
Source Tümü
Kaynak bağlantı noktası aralıkları Tümü
Hedef VM'nin IP adresi, bir IP adresi aralığı veya alt ağdaki tüm adresler.
Hedef bağlantı noktası aralıkları 80
Protokol TCP
Eylem İzin Ver
Öncelik 100
Veri Akışı Adı Http Tümüne İzin Ver

Kuralı oluşturduktan sonra, kuralın önceliği DenyAllInBound adlı varsayılan güvenlik kuralından yüksek olduğundan trafiği reddeden 80 numaralı bağlantı noktasına İnternet'ten gelen bağlantı noktasına izin verilir. Güvenlik kuralı oluşturmayı öğrenin. Hem ağ arabirimi hem de alt ağ ile farklı NSG'ler ilişkiliyse, her iki NSG'de de aynı kuralı oluşturmanız gerekir.

Azure gelen trafiği işlediğinde, alt ağ ile ilişkili NSG'deki kuralları işler (ilişkili bir NSG varsa) ve ardından ağ arabirimiyle ilişkili NSG'deki kuralları işler. Ağ arabirimi ve alt ağ ile ilişkilendirilmiş bir NSG varsa, trafiğin VM'ye ulaşması için bağlantı noktasının her iki NSG'de de açık olması gerekir. Yönetim ve iletişim sorunlarını kolaylaştırmak için bir NSG'yi tek tek ağ arabirimleri yerine bir alt ağ ile ilişkilendirmenizi öneririz. Alt ağ içindeki VM'ler farklı güvenlik kurallarına ihtiyaç duyuyorsa, ağ arabirimlerini bir uygulama güvenlik grubunun (ASG) üyeleri yapabilir ve güvenlik kuralının kaynağı ve hedefi olarak bir ASG belirtebilirsiniz. Uygulama güvenlik grupları hakkında daha fazla bilgi edinin.

İletişim sorunları yaşamaya devam ediyorsanız bkz . Önemli noktalar ve Ek tanılama.

Dikkat edilmesi gereken noktalar

Bağlantı sorunlarını giderirken aşağıdaki noktaları göz önünde bulundurun:

  • Varsayılan güvenlik kuralları İnternet'ten gelen erişimi engeller ve yalnızca sanal ağdan gelen trafiğe izin verir. İnternet'ten gelen trafiğe izin vermek için, varsayılan kurallardan daha yüksek önceliğe sahip güvenlik kuralları ekleyin. Varsayılan güvenlik kuralları veya güvenlik kuralı ekleme hakkında daha fazla bilgi edinin.
  • Eşlenmiş sanal ağlarınız varsa, VIRTUAL_NETWORK hizmet etiketi varsayılan olarak eşlenmiş sanal ağlar için ön ekleri içerecek şekilde otomatik olarak genişletilir. Sanal ağ eşlemeyle ilgili sorunları gidermek için, önekleri ExpandedAddressPrefix listesinde görüntüleyebilirsiniz. Sanal ağ eşlemesi ve hizmet etiketleri hakkında daha fazla bilgi edinin.
  • Etkin güvenlik kuralları yalnızca VM'nin ağ arabirimi ve veya alt ağıyla ilişkilendirilmiş bir NSG varsa ve VM çalışıyor durumdaysa ağ arabirimi için gösterilir.
  • Ağ arabirimi veya alt ağ ile ilişkilendirilmiş NSG'ler yoksa ve vm'ye atanmış bir genel IP adresiniz varsa, tüm bağlantı noktaları her yerden gelen ve giden erişim için açıktır. VM'nin genel IP adresi varsa, ağ arabirimi alt ağına bir NSG uygulamanızı öneririz.

Ek tanılama

  • Vm'ye giden veya vm'den gelen trafiğe izin verilip verilmediğini belirlemek üzere hızlı bir test çalıştırmak için Azure Ağ İzleyicisi'nin IP akışı doğrulama özelliğini kullanın. IP akışı doğrulama, trafiğe izin verilip verilmediğini belirtir. Reddedilirse, IP akışı doğrulama hangi güvenlik kuralının trafiği reddettidiğini size bildirir.
  • Vm'nin ağ bağlantısının başarısız olmasına neden olan güvenlik kuralları yoksa, sorun şunlardan kaynaklanıyor olabilir:
    • VM'nin işletim sisteminde çalışan güvenlik duvarı yazılımı
    • Sanal gereçler veya şirket içi trafik için yapılandırılan yollar. İnternet trafiği, zorlamalı tünel aracılığıyla şirket içi ağınıza yönlendirilebilir. İnternet trafiğini bir sanal gereci veya şirket içinde tünel yapmaya zorlarsanız, sanal makineye İnternet'ten bağlanamayabilirsiniz. VM'nin dışına giden trafik akışını engelleyebilecek yol sorunlarını tanılamayı öğrenmek için bkz . Sanal makine ağ trafiği yönlendirme sorununu tanılama.

Sonraki adımlar