CMD ile Ağ Trafiği İzleme: netstat, nbtstat ve arp Komutları

Ağda neler döndüğünü bilmek, bir sistem yöneticisi için adeta görünmez bir süpergüç gibidir. Sunucunuz aniden yavaşladığında, şüpheli bir bağlantı fark ettiğinizde ya da “neden bu port açık?” sorusunu yanıtlamanız gerektiğinde, CMD araçları tam da o anda hayat kurtarır. Windows’ta netstat, nbtstat ve arp üçlüsü, herhangi bir üçüncü parti araç kurmadan ağ trafiğini derinlemesine analiz etmenizi sağlar. Bu yazıda bu üç komutu gerçek dünya senaryolarıyla birlikte ele alacağız.

Neden CMD Araçları?

Wireshark mı, PRTG mi, SolarWinds mi? Bunların hepsi harika araçlar. Ama bir müşterinin sunucusuna bağlandığınızda, ortamda hiçbir monitoring aracı yokken ve kurulum izniniz de olmadığında ne yapacaksınız? İşte tam da bu noktada Windows’un yerleşik araçları devreye girer.

netstat, nbtstat ve arp komutları her Windows kurulumunda hazır gelir, ekstra lisans gerektirmez ve çoğu senaryoda ihtiyacınız olan bilgiyi saniyeler içinde sunar. Üstelik betiklerinize entegre edebilir, otomatik raporlar oluşturabilirsiniz.

netstat: Ağ Bağlantılarının Kalbi

netstat (Network Statistics), sistemdeki aktif TCP/UDP bağlantılarını, açık portları ve ilgili süreçleri görüntüler. Temel kullanımı son derece basit:

netstat

Ama bu komutu parametresiz çalıştırırsanız, çıktı oldukça sınırlı kalır. Asıl güç parametrelerde yatıyor.

netstat Parametreleri

  • -a: Tüm bağlantıları ve dinleme durumundaki portları gösterir
  • -n: Adresleri ve port numaralarını sayısal formatta gösterir (DNS çözümlemesi yapmaz, çok daha hızlı)
  • -o: Her bağlantı için ilgili Process ID (PID) değerini gösterir
  • -b: Her bağlantıyı oluşturan çalıştırılabilir dosyayı gösterir (Yönetici yetkisi gerekir)
  • -e: Ethernet istatistiklerini gösterir
  • -r: Routing tablosunu gösterir
  • -s: Protokol bazlı istatistikleri gösterir
  • -p protokol: Sadece belirtilen protokolü filtreler (TCP, UDP, ICMP vs.)
  • -t: Bağlantı boşaltma süresini gösterir
  • interval: Saniye cinsinden yenileme aralığı belirler

Gerçek Dünya Senaryosu 1: Şüpheli Bağlantı Tespiti

Pazartesi sabahı işe geldiniz, bir sunucunun dışarıya sürekli bağlantı kurduğuna dair uyarı aldınız. İlk yapacağınız şey şu:

netstat -ano | findstr ESTABLISHED

Bu komut kurulmuş tüm bağlantıları PID’leriyle birlikte listeler. Çıktıda tanımadığınız bir IP adresi görürseniz, PID’yi alıp hangi sürecin bu bağlantıyı kurduğuna bakarsınız:

netstat -ano | findstr :443
tasklist | findstr 1234

Burada 1234 yerine netstat çıktısından aldığınız PID değerini yazıyorsunuz. Eğer bu PID svchost.exe veya explorer.exe değil de hiç tanımadığınız bir isim gösteriyorsa, alarm zillerini çalmanın zamanı gelmiştir.

Daha da derine inmek için -b parametresini kullanabilirsiniz:

netstat -b -o 5

Bu komut 5 saniyede bir güncellenerek bağlantıları yaratan çalıştırılabilir dosyaları gösterir. Ancak bu komutu Yönetici olarak çalıştırmanız gerektiğini unutmayın.

Gerçek Dünya Senaryosu 2: Port Dinleme Kontrolü

Bir uygulama ekibiniz yeni servisi deploy ettikten sonra size geldi: “Port 8080 açık mı?” Bunu kontrol etmek için:

netstat -ano | findstr :8080

Eğer çıktıda LISTENING görürseniz, o port dinlemede demektir. Ayrıca hangi IP adresinde dinlediğine de dikkat edin:

  • 0.0.0.0:8080 – Tüm arayüzlerde dinliyor (dışarıdan erişilebilir)
  • 127.0.0.1:8080 – Sadece localhost üzerinde dinliyor (dışarıdan erişilemiyor)

Bu ayrım kritik bir güvenlik farkıdır ve pek çok junior admin tarafından gözden kaçırılır.

Tüm Açık Portları Listeleme

Sunucudaki tüm açık portları tek seferde görmek istiyorsanız:

netstat -ano | findstr LISTENING

Bu çıktıyı bir dosyaya kaydedip düzenli aralıklarla karşılaştırmak, yeni açılan portları tespit etmek için mükemmel bir yöntemdir:

netstat -ano | findstr LISTENING > C:Logsports_%date:~10,4%%date:~4,2%%date:~7,2%.txt

Bu komut, dosya adına tarih ekleyerek her günün snapshot’ını ayrı dosyalarda saklar. Örneğin iki haftada bir bu çıktıları karşılaştırırsanız, ortamınızda ne zaman ne gibi değişiklikler olduğunu net bir şekilde görebilirsiniz.

TIME_WAIT ve Bağlantı Durumları

netstat çıktısında farklı bağlantı durumları görürsünüz. Bunları anlamak önemli:

  • LISTENING: Port aktif ve bağlantı bekliyor
  • ESTABLISHED: Bağlantı kurulmuş ve aktif
  • TIME_WAIT: Bağlantı kapanıyor, temizlenmeyi bekliyor
  • CLOSE_WAIT: Karşı taraf bağlantıyı kapattı, yerel kapatma bekleniyor
  • SYN_SENT: Bağlantı başlatıldı, cevap bekleniyor
  • FIN_WAIT_1 / FIN_WAIT_2: Bağlantı sonlandırma sürecinde

Eğer çok fazla TIME_WAIT bağlantısı görüyorsanız, bu genellikle yüksek trafik veya bağlantıların düzgün kapatılmadığının işareti olabilir. Web sunucularında bu oldukça yaygındır ama aşırı sayılar performans sorununa yol açar.

nbtstat: NetBIOS Dünyasında Gezinti

nbtstat (NetBIOS over TCP/IP Statistics), NetBIOS isim çözümleme sorunlarını gidermek ve ağdaki diğer makineler hakkında bilgi toplamak için kullanılır. Eski bir protokol olmasına karşın, Active Directory ortamlarında ve Windows iş ağlarında hala aktif rol oynar.

nbtstat Parametreleri

  • -a MakineAdı: Uzak bir makinenin NetBIOS isim tablosunu gösterir
  • -A IP Adresi: IP adresiyle uzak makine isim tablosunu gösterir
  • -n: Yerel NetBIOS isim tablosunu gösterir
  • -c: NetBIOS isim önbelleğini listeler
  • -r: NetBIOS isim çözümleme istatistiklerini gösterir
  • -R: NetBIOS isim önbelleğini temizler
  • -RR: WINS sunucusuna kaydı yeniler
  • -s: NetBIOS oturum tablosunu listeler
  • -S: Uzak adresleri IP olarak göstererek oturum tablosunu listeler

Gerçek Dünya Senaryosu 3: Makine Kimliği Doğrulama

Ağda bir IP adresinin hangi makineye ait olduğunu hızlıca öğrenmek istiyorsunuz:

nbtstat -A 192.168.1.50

Bu komutun çıktısında makine adı, çalışma grubu veya domain bilgisi ve kayıtlı NetBIOS servisleri görünür. Özellikle ağda yetkisiz bir cihaz tespit ettiğinizde bu komut ilk başvuracağınız araç olabilir.

Gerçek Dünya Senaryosu 4: NetBIOS Önbellek Sorunları

Kullanıcılar “\FILESERVER01 yolunu bulamıyorum” diye şikayet ediyor ama sunucu aslında çalışıyor. Bu klasik bir NetBIOS önbellek zehirlenmesi sorunudur. Önce mevcut önbelleği görüntüleyin:

nbtstat -c

Eğer yanlış bir IP adresi önbellekte tutuluyorsa, temizleme zamanı:

nbtstat -R

Bu komut önbelleği temizler ve lmhosts dosyasını yeniden yükler. Bunu yetersiz bulursanız tam bir sıfırlama yapabilirsiniz:

nbtstat -RR

-RR parametresi önbelleği temizlemenin yanı sıra WINS sunucusuna yeniden kayıt yaptırır. AD ortamlarında bu işlem bazen isim çözümleme sorunlarını sihir gibi çözer.

Yerel NetBIOS Bilgilerini Görme

Kendi makinenizin NetBIOS bilgilerini görmek için:

nbtstat -n

Çıktıda gördüğünüz kayıtların yanındaki kodlar önemlidir:

  • : İş istasyonu servisi
  • : Dosya sunucusu servisi
  • : Messenger servisi
  • : Domain Controller grubu
  • : Domain Master Browser

Bir sunucuda kaydını görmüyorsanız, dosya paylaşımı servisi çalışmıyor demektir. Bu basit kontrol, “dosyalara erişemiyorum” şikayetlerinde ilk bakılacak noktalardan biridir.

arp: Fiziksel Adres Haritası

ARP (Address Resolution Protocol), IP adresleri ile MAC adresleri arasındaki ilişkiyi yönetir. arp komutu, bu ilişki tablosunu görüntülemek ve yönetmek için kullanılır.

arp Parametreleri

  • -a: Tüm ARP önbellek girişlerini gösterir
  • -g: -a ile aynı işlevi görür
  • -a IP: Belirtilen IP’nin ARP girişini gösterir
  • -d IP: Belirtilen IP’nin ARP girişini siler
  • -s IP MAC: Statik bir ARP girişi ekler
  • -v: Ayrıntılı mod, geçersiz girişleri de gösterir

Gerçek Dünya Senaryosu 5: MAC Adresini Tespit Etme

Ağda sorun yaratan bir cihazın MAC adresini öğrenmek istiyorsunuz. Önce cihaza ping atın, ardından ARP tablosuna bakın:

ping 192.168.1.100
arp -a 192.168.1.100

Bu yöntemle IP adresinden MAC adresine ulaşabilirsiniz. MAC adresinin ilk üç oktet’i (OUI – Organizationally Unique Identifier) üreticiye işaret eder. Örneğin 00-50-56 VMware’e, 00-0C-29 yine VMware’e, B8-27-EB ise Raspberry Pi Foundation’a aittir. Bu bilgi, ağda beklenmedik bir cihaz tespit ettiğinizde üreticisini anlamanıza yardımcı olur.

Gerçek Dünya Senaryosu 6: ARP Zehirlenmesi Şüphesi

Ağda ARP zehirlenmesi (ARP poisoning) şüpheniz varsa, aynı MAC adresinin birden fazla IP’ye atandığını görebilirsiniz:

arp -a

Çıktıda iki farklı IP’nin aynı MAC adresine sahip olduğunu görürseniz, bu durum ARP zehirlenmesine işaret edebilir. Özellikle gateway IP’sinin MAC adresi değiştiyse, ortada biri (man-in-the-middle) saldırısı yaşanıyor olabilir.

Kritik sunucular için statik ARP girişleri tanımlamak bu tür saldırılara karşı koruma sağlar:

arp -s 192.168.1.1 AA-BB-CC-DD-EE-FF

Bu komut gateway’in MAC adresini statik olarak kaydeder ve ARP tablosunun üzerine yazılmasını engeller. Yönetici yetkisiyle çalıştırmanız gerekir.

ARP Tablosunu Temizleme

Bazen yanlış veya eski ARP girişleri ağ sorunlarına yol açar. Tüm tabloyu temizlemek için:

arp -d *

Ya da sadece belirli bir girişi silmek için:

arp -d 192.168.1.50

Üç Komutu Birlikte Kullanma: Kapsamlı Sorun Giderme

Gerçek dünyada bu araçları birlikte kullanmak, çok daha güçlü bir analiz yapmanızı sağlar.

Gerçek Dünya Senaryosu 7: Kapsamlı Ağ Analiz Betiği

Aşağıdaki betik, bir sunucunun ağ durumunu tek seferde raporlar ve çıktıyı bir log dosyasına kaydeder:

@echo off
set LOGFILE=C:LogsNetworkAnalysis_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%.txt
echo ======================================= >> %LOGFILE%
echo NETWORK ANALYSIS REPORT >> %LOGFILE%
echo Date: %date% Time: %time% >> %LOGFILE%
echo ======================================= >> %LOGFILE%

echo. >> %LOGFILE%
echo --- ACTIVE CONNECTIONS (netstat) --- >> %LOGFILE%
netstat -ano >> %LOGFILE%

echo. >> %LOGFILE%
echo --- LISTENING PORTS --- >> %LOGFILE%
netstat -ano | findstr LISTENING >> %LOGFILE%

echo. >> %LOGFILE%
echo --- ARP TABLE --- >> %LOGFILE%
arp -a >> %LOGFILE%

echo. >> %LOGFILE%
echo --- NETBIOS LOCAL TABLE --- >> %LOGFILE%
nbtstat -n >> %LOGFILE%

echo. >> %LOGFILE%
echo --- ROUTING TABLE --- >> %LOGFILE%
netstat -r >> %LOGFILE%

echo Analysis complete. Output saved to %LOGFILE%

Bu betiği Task Scheduler ile belirli aralıklarla çalıştırarak otomatik ağ snapshot’ları elde edebilirsiniz. Bir sorun yaşandığında “sorun olmadan önce ne vardı, sonra ne değişti?” sorusuna yanıt vermenizi sağlar.

Bağlantı Sayısını İzleme

Yoğun bir web sunucusunda kaç tane ESTABLISHED bağlantı olduğunu saymak için:

netstat -ano | findstr ESTABLISHED | find /c "TCP"

Bu komutu düzenli aralıklarla çalıştırıp değerleri karşılaştırarak bağlantı sayısındaki anormal artışları izleyebilirsiniz. Örneğin gece yarısı bu sayı normalin beş katına çıktıysa, bir DDoS saldırısı veya runaway process söz konusu olabilir.

Güvenlik Açısından Bu Araçları Kullanmak

Sysadmin olarak bu araçları sadece sorun gidermek için değil, proaktif güvenlik izleme için de kullanmalısınız.

Düzenli port taramaları yapın: Ayda bir kez netstat çıktısını bir önceki ayınkiyle karşılaştırın. Yeni açılan portlar var mı? Beklenmedik dış bağlantılar var mı?

ARP tablonuzu bilin: Kritik altyapı cihazlarınızın (gateway, DNS, DC) MAC adreslerini bir yere not edin. Herhangi bir değişiklik anında dikkatinizi çeksin.

NetBIOS kayıtlarını takip edin: Ağda beklenmedik NetBIOS isimleri veya Domain Controller kayıtları görürseniz, yetkisiz bir DC veya sahte bir makine söz konusu olabilir.

Şunu da belirtmek gerekir: Bu araçlar size mevcut durumu gösterir, geçmişe dair kayıt tutmaz. Bu yüzden çıktıları düzenli olarak loglamak ve saklamak, zaman içindeki değişimleri takip etmek açısından kritik önem taşır.

PowerShell ile Karşılaştırma

“Neden CMD, PowerShell yerine?” diye sorabilirsiniz. PowerShell’in Get-NetTCPConnection, Get-NetUDPEndpoint gibi cmdlet’leri çok daha güçlü ve filtrelenebilir çıktılar sunar. Ancak CMD araçlarının birkaç avantajı vardır:

  • Eski sistemlerde (Windows Server 2008 ve altı) PowerShell kısıtlı olabilir
  • Execution policy kısıtlamaları bazen PowerShell betiklerini engeller
  • Hızlı bir terminal bağlantısında tek satır komutlar daha pratiktir
  • Çıktıları pipe ile diğer CMD araçlarına aktarmak (findstr, find, sort) kolayca yapılır

Her iki dünyayı da bilmek, elinizdeki araç kutusunu zenginleştirir.

Sonuç

netstat, nbtstat ve arp, basit görünümlerinin arkasında son derece güçlü teşhis yetenekleri barındıran araçlardır. Bir sunucuya bağlandığınızda bu üç komutla dakikalar içinde ağ bağlantılarını, açık portları, NetBIOS kayıtlarını ve fiziksel adres eşleşmelerini anlayabilirsiniz. Üçüncü parti araç gerektirmemeleri, her ortamda güvenilir biçimde çalışmaları ve betiklerle kolayca entegre edilebilmeleri bu araçları vazgeçilmez kılar.

Özellikle şüpheli durumlarda, ilk müdahale (first response) aşamasında bu araçları etkin kullanmak, sorunun kaynağına hızla ulaşmanızı sağlar. Düzenli snapshot alma alışkanlığı edinin, çıktıları karşılaştırın ve ağınızın “normal” haline hakim olun. Çünkü normalden sapmaları ancak normalin ne olduğunu bilirseniz fark edebilirsiniz.

Bu araçları bir PowerShell betiği veya Scheduled Task ile otomatize ederek ağ izleme altyapınızın temel taşı haline getirebilirsiniz. Karmaşık monitoring çözümleri devreye girinceye kadar bu üç komut sizi gayet iyi götürür.

Yorum yapın