Tüm ICMP trafiği açık olsa bile ping'in yeterli olmadığı durumlar vardır.
Uzak sunucuda çalışan bir hizmetin açık portunun cevap verip vermediğini inceleme ihtiyacı olur; 80 numaralı HTTP portuna erişebiliyor muyum, NTP sunucusunun 123 UDP portu dinlemede mi gibi.
Powershell dünyasında kısmen TCP için
PS> Test-NetConnection -ComputerName uzakpc -Port 80
gibi bir yöntem var.
2023-11-20 ek: daha hızlı bir yöntem
PS> (New-Object Net.Sockets.TcpClient).Connect("192.168.1.1",80)
hata vermezse başarılıdır. Başarısız durumda hata verir.
Yine TCP için Sysinternals'ın psping'i kullanılabilir:
PS> psping uzakpc:80
Ama UDP için benzer bir araç bilmiyordum. Linux'ta netcat (nc) için şöyle bir kullanım buldum:
$ nc -z -u -v time.windows.com 123
Connection to time.windows.com 123 port [udp/ntp] succeeded!
burada
-z : zero IO (sadece bağlantı durumunu bildir, gereksiz veri alışverişi yapma)
-u : UDP kullan
-v : verbose (ayrıntılı çıktı göster)
Windows'da ise gerek WSL gerekse nmap ile gelen nc klonu ncat ile de benzer kullanım mümkün. UDP için
PS> ncat -vuz time.windows.com 123
Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Connected to 40.119.148.38:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.04 seconds.
veya TCP için
PS> ncat -vt uzakpc 80
Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Connected to xx.xx.xx.xx:80.
ncat, TCP için -z (zero IO) parametresini kabul etmedi, protokolün doğası gereği. Yukarıdaki komuttan sonra bağlantı açık kalır, web snuucu GET, POST gibi komutlardan birini bekler. Örneğin Ctrl+C ile çıkmadan aşağıdaki gibi bir komut yazılarak varsayılan açılış sayfası istenebilir:
GET / HTTP/1.1
Benzer ihtiyacı olan powershell severler, kendi cmdlet'lerini de yapmışlar [1].
Bu arada 123/udp portuna bağlanabiliyor olmak, çalışan bir NTP hizmeti olduğu anlamına gelmez, sadece ilgili sunucunun NTP portuna bağlanabildiğimizi gösterir. Aynı şekilde 80/tcp portuna bağlanmak web sunucunun tam olarak istediğimiz şekilde çalıştığını göstermez, sadece bu portunu dinleyen bir hizmetin aktif olduğunu gösterir.
---
[1] https://cloudbrothers.info/en/test-udp-connection-powershell/