Sanal makine ağ trafiği filtresi 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 bir ağ trafiği filtresi sorununu tanılamayı öğreneceksiniz.
NSG'ler, vm'ye gelen ve giden trafik türlerini denetlemenize olanak tanır. Bir NSG'yi Azure sanal ağındaki bir alt ağ, vm'ye bağlı bir ağ arabirimi veya her ikisi ile 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ğ arabiriminin etkili 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 grubunda 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 kullanarak tanılama
Gerekli izinlere sahip bir Azure hesabıyla Azure portalında oturum açın.
Azure portal üst kısmında, arama kutusuna VM'nin adını girin. Arama sonuçlarında VM'nin adı göründüğünde seçin.
AYARLAR bölümünde, aşağıdaki resimde gösterildiği gibi Ağ'ı seçin:

Önceki resimde listelenen kurallar myVMVMNic adlı bir ağ arabirimine yöneliktir. İki farklı ağ güvenlik grubundan ağ arabirimi için 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 üzerinden 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 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 en altında GIDEN BAĞLANTI NOKTASI KURALLARI'nı da görürsünüz. Bunun altında ağ arabirimi için giden bağlantı noktası kuralları yer alır. 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 SOURCEaltındaAzureLoadBalancer görürsünüz. VirtualNetwork ve AzureLoadBalancerhizmet etiketleridir. Hizmet etiketleri, güvenlik kuralı oluşturma karmaşıklığını en aza indirmeye yardımcı olmak için bir grup IP adresi ön ekini temsil eder.
Vm'nin çalışır durumda olduğundan emin olun ve aşağıdaki resimde gösterilen geçerli güvenlik kurallarını görmek için önceki resimde gösterildiği gibi Geçerli güvenlik kuralları'nı seçin:

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:

AzureLoadBalancer hizmet etiketi yalnızca bir ön eki temsil etse de, diğer hizmet etiketleri birkaç ön eki temsil eder.
Önceki adımlarda myVMVMNic adlı bir ağ arabiriminin güvenlik kuralları gösterilmiştir, 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ğ arabiriminin alt ağıyla ilişkilendirilmiş olan myVMVMNic ağ arabirimiyle aynı kuralları vardır. Bir NSG'yi bir alt ağ ile ilişkilendirdiğinizde, bu NSG'nin kuralları alt ağdaki tüm ağ arabirimlerine uygulanır.

myVMVMNic ağ arabiriminden farklı olarak, myVMVMNic2 ağ arabiriminin kendisiyle ilişkilendirilmiş bir ağ güvenlik grubu yoktur. Her ağ arabirimi ve alt ağ, kendisiyle ilişkilendirilmiş sıfır veya bir NSG'ye sahip olabilir. Her ağ arabirimi veya alt ağ ile ilişkili NSG aynı veya farklı olabilir. Aynı ağ güvenlik grubunu seçtiğiniz sayıda ağ arabirimi ve alt ağ ile ilişkilendirebilirsiniz.
Etkin güvenlik kuralları VM aracılığıyla görüntülense de, geçerli güvenlik kurallarını bir kişi aracılığıyla da görüntüleyebilirsiniz:
- Ağ arabirimi: Ağ arabirimini görüntülemeyi öğrenin.
- NSG: NSG'yi görüntülemeyi öğrenin.
PowerShell kullanarak tanılama
Not
Bu makalede, Azure ile etkileşim kurmanız için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılır. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Aşağıdaki komutları Azure Cloud Shell veya bilgisayarınızdan PowerShell çalıştırarak çalıştırabilirsiniz. Azure Cloud Shell ücretsiz bir etkileşimli kabukdur. 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ırsanız, Azure PowerShell modülüne (sürüm 1.0.0 veya üzeri) ihtiyacınız vardır. 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 komutunu da çalıştırmanız Connect-AzAccount gerekir].
Get-AzEffectiveNetworkSecurityGroup ile bir ağ arabirimi için geçerli güvenlik kurallarını alın. Aşağıdaki örnek, myResourceGroup adlı bir kaynak grubundaki 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'nin çalışır durumda olması gerekir. Bir VM'nin farklı NSG'leri uygulanmış birden çok ağ arabirimi olabilir. Sorun giderme sırasında, her ağ arabirimi için komutunu çalıştırın.
Hala bağlantı sorunu yaşıyorsanız ek tanılama vedikkat 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 bağlı 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'nde veya Azure CLI'yı 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'yı 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 etkin 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'nin çalışır durumda olması gerekir. Bir VM'nin farklı NSG'leri uygulanmış birden çok ağ arabirimi olabilir. Sorun giderme sırasında, her ağ arabirimi için komutunu çalıştırın.
Hala bağlantı sorunu yaşıyorsanız ek tanılama vedikkat 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 bağlı 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 çıkış 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ığı. 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 birlikte gelen kural adları, her NSG'de bulunan varsayılan güvenlik kurallarıdır. SecurityRules/ ile birlikte gelen kural adları, oluşturduğunuz kurallardır. destinationAddressPrefix veya sourceAddressPrefix özellikleri için Internet, VirtualNetwork ve AzureLoadBalancer gibi bir hizmet etiketi belirten kurallar da expandedDestinationAddressPrefix özelliği için değerlere sahiptir. expandedDestinationAddressPrefix özelliği, hizmet etiketiyle temsil edilen tüm adres ön eklerini listeler.
Çıkışta 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'nin de varsayılan kuralları aynıdır ve ek yinelenen kuralları 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.
Bir 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 |
|---|---|
| Kaynak | Herhangi bir |
| Kaynak bağlantı noktası aralıkları | Herhangi biri |
| 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 |
| Ad | HTTP Tümüne İzin Ver |
Kuralı oluşturduktan sonra, kuralın önceliği Trafiği reddeden DenyAllInBound adlı varsayılan güvenlik kuralından daha yüksek olduğundan 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şkilendirilmişse, her iki NSG'de de aynı kuralı oluşturmanız gerekir.
Azure gelen trafiği işlediğinde, alt ağ ile ilişkilendirilmiş 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 bir 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 gerekenler
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üvenlikkuralı 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ğlara yönelik ön ekleri içerecek şekilde otomatik olarak genişletilir. Sanal ağ eşlemeyle ilgili sorunları gidermek için, ExpandedAddressPrefix listesinde ön ekleri 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ışır durumdaysa ağ arabirimi için gösterilir.
- Ağ arabirimi veya alt ağ ile ilişkilendirilmiş NSG 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 gelen veya vm'den gelen trafiğe izin verilip verilmediğini belirlemek üzere hızlı bir test çalıştırmak için Azure Ağ İzleyicisi IP akışı doğrulama özelliğini kullanın. IP akışı doğrulama, trafiğe izin verilip verilmediğini belirtir. Reddedilirse IP akışı doğrulama, trafiği reddeden güvenlik kuralını 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ğine bir sanal gerecin veya şirket içi ortamın tünelini zorlamanız durumunda sanal makineye İnternet'ten bağlanamayabilirsiniz. SANAL makineden 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
- Ağ güvenlik grubu ve güvenlik kuralları için tüm görevler, özellikler ve ayarlar hakkında bilgi edinin.
- Varsayılan güvenlik kuralları, hizmet etiketleri ve Azure'ın vm için gelen ve giden trafik için güvenlik kurallarını nasıl işlediği hakkında bilgi edinin.