- Konu sahibi
- #1
PowerShell ile bir sunucunun TCP bağlantı noktasını test etmek için
Komutu çalıştırdığınız bilgisayardan hedefe TCP bağlantısı kurulabiliyorsa sonuçta
Önce PowerShell'i açın. Yönetici olarak çalıştırmanız genellikle gerekmez; test, komutu çalıştıran makinenin hedef sunucuya ağ üzerinden erişebildiği koşullarda yapılır. Ardından aşağıdaki örnekteki bilgileri kendi ortamınıza göre değiştirin:
Ayrıntılı çıktıda hedef ad, çözümlenen uzak adres, kullanılan kaynak adresi ve port testiyle ilgili bilgiler gösterilebilir. Bu çıktı, bağlantının hangi hedefe karşı denendiğini anlamanıza yardımcı olur; yalnızca port sonucuna bakmak yerine hedef adın doğru çözümlendiğini de kontrol edin.
Sadece başarılı veya başarısız sonucunu almak istiyorsanız
Bu kullanımda
Port testi, testi yaptığınız bilgisayardan hedef sunucuya TCP bağlantısı kurulup kurulamadığını gösterir. Bir hizmetin uygulama düzeyinde doğru çalıştığını, kimlik bilgilerinin geçerli olduğunu veya kullanıcı hesabının oturum açabileceğini tek başına kanıtlamaz.
Hayır.
Ayrıca bu cmdlet TCP portlarını test eder. UDP tabanlı bir hizmet için aynı yöntem, hizmetin gerçekten çalıştığını kesin olarak doğrulamayabilir; UDP bağlantı kurulumu TCP'deki gibi bir el sıkışmasına dayanmaz. UDP hizmetlerinde uygulamaya özgü test yöntemi veya hizmetin kendi tanılama aracını kullanmanız gerekir.
Test-NetConnection cmdlet'ini kullanın. Hedef sunucu adını veya IP adresini -ComputerName, kontrol edilecek portu da -Port ile belirtin:
Kod:
Test-NetConnection -ComputerName "sunucu.example.com" -Port 443
Komutu çalıştırdığınız bilgisayardan hedefe TCP bağlantısı kurulabiliyorsa sonuçta
TcpTestSucceeded : True görünür. False sonucu ise bağlantının kurulamadığını gösterir; bunun nedeni portun kapalı olması, güvenlik duvarı, yönlendirme, DNS veya hedef hizmetin çalışmaması olabilir.TCP portunu ayrıntılı olarak test etme
Önce PowerShell'i açın. Yönetici olarak çalıştırmanız genellikle gerekmez; test, komutu çalıştıran makinenin hedef sunucuya ağ üzerinden erişebildiği koşullarda yapılır. Ardından aşağıdaki örnekteki bilgileri kendi ortamınıza göre değiştirin:
-ComputerNamedeğerine sunucunun DNS adını veya IP adresini yazın.-Portdeğerine TCP port numarasını yazın. Örneğin HTTPS için 443, RDP için 3389 kullanılabilir; ancak hizmetin gerçekten o portu dinlediğini ortamınızdan doğrulayın.- Komutu çalıştırın ve özellikle
TcpTestSucceededsatırını inceleyin.
10.10.20.15 adresindeki sunucunun 3389 numaralı TCP portunu kontrol etmek için:
Kod:
Test-NetConnection -ComputerName "10.10.20.15" -Port 3389
Ayrıntılı çıktıda hedef ad, çözümlenen uzak adres, kullanılan kaynak adresi ve port testiyle ilgili bilgiler gösterilebilir. Bu çıktı, bağlantının hangi hedefe karşı denendiğini anlamanıza yardımcı olur; yalnızca port sonucuna bakmak yerine hedef adın doğru çözümlendiğini de kontrol edin.
Sadece başarılı veya başarısız sonucunu almak istiyorsanız
-InformationLevel Quiet kullanın:
Kod:
Test-NetConnection -ComputerName "10.10.20.15" -Port 3389 -InformationLevel Quiet
Bu kullanımda
True bağlantının kurulduğunu, False ise kurulamadığını belirtir. Bir betik içinde koşul kontrolü yapmak için örneğin:
Kod:
$sonuc = Test-NetConnection -ComputerName "10.10.20.15" -Port 3389 -InformationLevel Quiet
if ($sonuc) {
"TCP portu erişilebilir."
} else {
"TCP portuna bağlantı kurulamadı."
}
Sonuçları doğru yorumlama
Port testi, testi yaptığınız bilgisayardan hedef sunucuya TCP bağlantısı kurulup kurulamadığını gösterir. Bir hizmetin uygulama düzeyinde doğru çalıştığını, kimlik bilgilerinin geçerli olduğunu veya kullanıcı hesabının oturum açabileceğini tek başına kanıtlamaz.
| Görülen sonuç | Anlamı | Sonraki kontrol |
|---|---|---|
| TcpTestSucceeded: True | Belirtilen hedefe ve TCP portuna bağlantı kurulabildi. | Uygulama yine çalışmıyorsa hizmet durumu, uygulama protokolü, kimlik doğrulama ve uygulama günlüklerini inceleyin. |
| TcpTestSucceeded: False | TCP bağlantısı kurulamadı; port kapalı, filtrelenmiş, yanlış hedefte veya erişim yolu sorunlu olabilir. | Hedef adını, IP adresini, hizmetin dinlediği portu, sunucu güvenlik duvarını ve ağ üzerindeki güvenlik kurallarını kontrol edin. |
| NameResolutionSucceeded: False | Sunucu adı DNS üzerinden çözümlenemedi. | Aynı testi IP adresiyle tekrarlayın; IP ile başarılı oluyorsa DNS kaydı veya istemcinin DNS yapılandırmasını inceleyin. |
False sonucu alırsanız testi farklı bir bilgisayardan tekrarlamak da önemlidir. Örneğin aynı ağdaki başka bir sunucudan başarılı, istemci bilgisayarınızdan başarısız sonuç alıyorsanız sorun hedef hizmetten çok istemci ağı, yerel güvenlik duvarı, VLAN veya yönlendirme kurallarıyla ilgili olabilir. Her iki noktadan da başarısız sonuç alınıyorsa hedefteki hizmetin çalışıp çalışmadığını ve sunucunun gelen TCP bağlantılarına izin verip vermediğini kontrol edin.Yalnızca portun açık olması yeterli mi?
Hayır.
True sonucu yalnızca TCP el sıkışmasının kurulabildiğini gösterir. Örneğin 443 numaralı port erişilebilir olsa bile web sunucusu hatalı yapılandırılmış, TLS sertifikası sorunlu veya uygulama isteklere hatalı yanıt veriyor olabilir. Bu nedenle port testi başarılı olduktan sonra ilgili hizmete özgü araçla veya istemciyle gerçek bağlantıyı da deneyin.Ayrıca bu cmdlet TCP portlarını test eder. UDP tabanlı bir hizmet için aynı yöntem, hizmetin gerçekten çalıştığını kesin olarak doğrulamayabilir; UDP bağlantı kurulumu TCP'deki gibi bir el sıkışmasına dayanmaz. UDP hizmetlerinde uygulamaya özgü test yöntemi veya hizmetin kendi tanılama aracını kullanmanız gerekir.