Telnet Olmadan Port Test Etmek: Linux’ta nc, nmap, ss ve Bash ile TCP/UDP Bağlantı Testi
Telnet Gitti, Ya Şimdi?
Yıllarca port testi denilince akla ilk gelen araç telnet olurdu. Bir sunucunun belirli bir portunu dinleyip dinlemediğini anlamak için telnet sunucu-adresi port-numarası yazardınız, bağlantı kurulduysa işe yarıyordur derdiniz. Basit, etkili, herkesin bildiği bir yöntemdi.
Ancak günümüz Linux dağıtımlarında telnet artık varsayılan olarak kurulu gelmiyor. Güvenlik kaygıları, şifrelenmemiş protokol yapısı ve yerini SSH gibi daha güvenli alternatiflere bırakması nedeniyle telnet, pek çok minimal kurulumdan ve sunucu imajından çıkarıldı. Özellikle container tabanlı ortamlarda, minimal Debian veya Alpine imajlarında telnet’i aramak beyhude bir çaba.
Sorun şu: Port testi ihtiyacı ortadan kalkmadı. Bir servisin ayakta olup olmadığını, güvenlik duvarı kurallarının doğru çalışıp çalışmadığını ya da iki sunucu arasındaki ağ bağlantısını doğrulamak için hâlâ bir araca ihtiyaç duyuyoruz. İşte bu yazıda, telnet olmadan TCP ve UDP portlarını test etmek için kullanabileceğiniz beş farklı yöntemi ele alacağım.
Neden Port Testi Önemli?
Günlük sistem yönetimi ve geliştirme süreçlerinde port testi düşündüğünüzden çok daha sık karşınıza çıkar. Bir veritabanı sunucusuna bağlanamıyorsunuz; acaba servis mi çalışmıyor, yoksa güvenlik duvarı mı engelliyor? Yeni kurduğunuz web sunucusu 443 portunu dinliyor mu? Uzak bir makineye NFS bağlantısı kurmaya çalışıyorsunuz ama bir türlü olmuyor. Tüm bu sorulara yanıt vermenin en hızlı yolu doğrudan porta bağlanmayı denemektir.
Aşağıdaki yöntemlerin bir kısmı zaten sisteminizde kurulu gelen araçları kullanıyor, bir kısmı ise ek kurulum gerektiriyor. Hangisinin işinize yarayacağı, içinde bulunduğunuz ortama göre değişecektir.
1. nc (Netcat) ile Port Testi
Netcat, yani kısaca nc, ağ işlemleri için İsviçre çakısı gibi bir araçtır. TCP ve UDP üzerinden veri gönderip alabilir, port tarayabilir ve bağlantı testi yapabilirsiniz. Pek çok Linux dağıtımında ya varsayılan olarak gelir ya da tek komutla kurulabilir.
TCP port testi için kullanım şu şekildedir:
- nc -zv hedef-sunucu port-numarası komutuyla belirtilen porta bağlanmayı dener.
- -z parametresi veri göndermeden sadece bağlantı kurmayı dener (zero I/O modu).
- -v parametresi ayrıntılı çıktı verir, bağlantının başarılı olup olmadığını açıkça gösterir.
UDP port testi içinse -u parametresini eklemek yeterlidir. Ancak UDP testinin TCP’ye göre daha belirsiz sonuçlar verdiğini hatırlatayım; UDP’nin yapısı gereği yanıt alamamak her zaman portun kapalı olduğu anlamına gelmez.
Netcat’in bir diğer kullanışlı özelliği de zaman aşımı belirleyebilmektir. -w parametresiyle saniye cinsinden bir zaman aşımı değeri vererek komutun sonsuza kadar beklemesini engelleyebilirsiniz. Otomasyon scriptlerinde bu parametre hayat kurtarır.
2. nmap ile Port Tarama
nmap, ağ keşfi ve güvenlik denetimi için tasarlanmış kapsamlı bir araçtır. Port testi konusunda belki de en yetenekli seçenektir; hem TCP hem UDP tarayabilir, servis sürümlerini tespit edebilir ve çok daha fazlasını yapabilir.
Basit bir TCP port testi için şu parametreler yeterlidir:
- -p parametresiyle test etmek istediğiniz port numarasını belirtirsiniz.
- -sT tam TCP bağlantısı kurarak tarama yapar, root yetkisi gerektirmez.
- -sU UDP taraması için kullanılır, ancak root yetkisi gerektirir.
nmap’in avantajı, tek seferde birden fazla portu tarayabilmesi ve sonuçları okunabilir biçimde sunmasıdır. Dezavantajı ise her sistemde kurulu gelmemesi ve kurumsal ağlarda dikkat çekici olabilmesidir. Kendi sisteminizi ya da izniniz olan ağları taradığınızdan emin olun.
3. ss Komutu ile Yerel Port Kontrolü
ss, eski zamanların netstat komutunun modern ve çok daha hızlı halefidir. Sisteminizde hangi portların dinlendiğini, hangi bağlantıların aktif olduğunu görmek için kullanılır. Uzak bir porta bağlanmak için değil, kendi makinenizdeki durumu incelemek için idealdir.
Örneğin belirli bir portun sistemde dinlenip dinlenmediğini kontrol etmek için:
- ss -tlnp komutu dinlemedeki TCP portlarını listeler.
- ss -ulnp dinlemedeki UDP portlarını gösterir.
- grep ile sonuçları filtreleyerek aradığınız port numarasına odaklanabilirsiniz.
ss, sistem kaynaklarına doğrudan eriştiği için son derece hızlıdır. Özellikle yoğun bağlantı trafiği olan sunucularda netstat’ın neredeyse donduğu durumlarda bile ss anında sonuç verir.
4. /dev/tcp ile Saf Bash Çözümü
Bu yöntem, benim en çok beğendiklerimden biri. Hiçbir ekstra araç gerektirmiyor; sadece Bash yeterli. Bash’in yerleşik /dev/tcp pseudo-aygıtını kullanarak doğrudan TCP bağlantısı kurabilirsiniz.
Kullanımı şu şekildedir: /dev/tcp/hedef-sunucu/port-numarası dosyasını açmayı deneyen bir yönlendirme komutu yazarsınız. Bağlantı başarılı olursa komut sıfır çıkış kodu döner, başarısız olursa hata kodu alırsınız.
Bu yöntemin en büyük avantajı, yalnızca Bash’in bulunduğu her ortamda çalışmasıdır. Container içinde misiniz, kısıtlı bir chroot ortamında mı, araç kurmaya izniniz yok mu? Bash varsa bu yöntem çalışır. Script yazarken de oldukça temiz bir sözdizimi sunar.
5. Python ile Port Testi
Python, modern Linux sistemlerinin neredeyse tamamında kurulu gelen bir dil. Özellikle Python 3, son yıllarda hemen her dağıtımın temel kurulumuna girdi. Socket kütüphanesi aracılığıyla TCP bağlantı testi yapmak birkaç satır kodla mümkün.
Kısa bir Python scripti ile belirli bir hedefe ve porta bağlanmayı deneyebilir, zaman aşımı belirleyebilir ve sonucu programatik olarak işleyebilirsiniz. Bu yöntem özellikle karmaşık otomasyon senaryolarında, birden fazla porta sırayla bağlantı testi yapmanız gerektiğinde ya da sonuçları bir log dosyasına yazmak istediğinizde çok işe yarar.
Hangi Yöntemi Tercih Etmeli?
Kısa bir karar tablosu vermek gerekirse:
- Hızlı ve pratik test için: nc (netcat)
- Kapsamlı tarama ve servis tespiti için: nmap
- Kendi sisteminizdeki portları incelemek için: ss
- Ekstra araç kuramadığınız ortamlar için: Bash /dev/tcp
- Otomasyon ve scripting için: Python socket
Sonuç olarak telnet’in yokluğu hiçbir şeyi engellemiyor. Yukarıdaki araçların en az birkaçı zaten sisteminizde yüklü olacaktır. Ben kişisel olarak çoğunlukla nc ile başlarım; hızlı, açık ve neredeyse her dağıtımda mevcut. Kendi sunucu kurulumlarımda ve ev lab ortamımda en çok bu ikiliyi kullanıyorum: nc anlık testler için, ss ise yerel durumu gözlemlemek için.
Umarım bu özet, telnet eksikliğini hissettiren anlarda işinize yarar. Sorularınız olursa yorumlarda buluşalım.
Son güncelleme 4 Eylül 2026
