Windows Troubleshooting 106: Network trace toplamak
Merhaba,
Bu yazimda Network sorunlari ile ilgili olarak en çok kullandigimiz araç olan Network Monitor ve Windows 7 ve üzerinde ki isletim sistemi ile birlikte built-in gelen ve Netsh ile etkinlestirilebilen trace toplama adimlarindan bahsedecegim.
Network problemleri ile ugrastiysaniz ve Kurumsal Destek ekibi veya Online kaynaklardan aldiginiz desteklerde bazi durumlarda söz konusu sunucularin tamamindan ayni anda (simultaneously) trace toplanmasi gerektigini biliyorsunuzdur. Bu her tip sorunda gerekmese de genellikle tercih ettigimiz bir yöntemdir. Nedeni ise, örnegin yavaslik ile ilgili bir sorun üzerinde çalisiyorsak bunun kaynagini anlamak için paketin trace dosyasini inceledigimiz sunucuya geç gelmesi ise, acaba bu paketin process edilmesi iletisimin diger tarafinda ki sunucuda da ayni midir anlamak içindir. Diger bir örnek ise NTLM authentication yaptigimiz bir sunucu ile client’in arasinda ki bir sorunda, client ve uygulama sunucusu arasinda ayni anda alacagimiz trace ile client’in sunucu ile iletisimi ile birlikte, sunucunun Domain Controller ile iletisimini de gözlemlemis oluruz.
Peki bu trace’leri nasil toplayacagiz?
Yazimin basinda söyledigim gibi, Network Monitor tüm Windows isletim sistemlerine kurulabilir. Client isletim sistemlerinde “Run as administrator” ile çalistirmaniz gerekebilir. Arayüzü asagidaki gibidir:
Burada önemli olan iletisimin saglanacagi Newtork Adapter’in mutlaka seçilmis olmasidir. Isaretli alan hem Ethernet hem de Wi-Fi baglantilarini görebilirsiniz. Routing tablosundan hangi Interface’in seçilecegini bilebilsek de olasi problemlere karsi “default” haliyle birakmak genelde yeterli olmaktadir.
Trace’leri toplamak için öncelikle New Capture butonuna basmak gerekiyor. Sonrasinda ise Start butonuna basarak “capturing” islemine baslayabiliriz. Bu trace’I baslattigimiz sunucu veya client üzerinde ki tüm trafigi yakalayacaktir. Bazi durumlarda capture filter kullanarak daha az sayida ve sadece problem için gerekli olacagini düsündügümüz paketleri yakalamak mümkündür. Ancak birçok problem tipinde tüm paketleri yakalayip sonrasinda analiz ederken filtrelemek daha yararli olabilir.
Burada önemli olan problemi tekrar olusturabilmektir. Ancak yine bazi tip problemlerde problemin olusmasi için bir süre beklemek gerekebilir. Bununla ilgili örneklere ayrica gelecegim.
Üzerinde çalistigimiz problemlerde bazen ping komutu yardimiyla problem öncesini, anini ve sonrasini ayirmayi düsünebiliriz. Örnegin bir uygulama sunucusuna baglanirken yasadiginiz authentication problemi için sunucuya baglanmadan önce ping atip, baglanmak istedigimizde aldigimiz credential ekranindan sonra ve credential girdikten sonra ayrica ping atabiliriz. Aslinda burada amacimiz topladigimiz paketleri gönderdigimiz ping paketleri ile ayirip, iki ping arasinda ki paketlere yogunlasarak analiz yapmaktir. Bununda nedeni yogun network trafigi olan bir sunucudan trace topladigimizda çok fazla paket sayisi olacagindan, problemin olusma anini yakalamak daha kolay olacaktir. Normal bir ping paketi 32 byte’dan olustugu için birbirlerinden ayrimak mümkün degildir, ancak farkli boyutlarda ping paketleri gönderebiliriz. Örnegin, ping –l 555 –n 2 192.168.1.1 gibi. Bu örnekte hedefe 555 byte boyutunda iki paket göndermis oluyor. Bir sonraki denemedi ise –l 444 gibi bir boyut kullanirsak eger bu iki paket araligini dikkate alarak inceleme yapabiliriz.
Network monitor’ün arayüzü ile network trace toplayabilecegimiz gibi kurulum sonrasinda nmcap komutunu kullanarak da trace toplayabiliriz. Aslinda nmcap komutuyla çok farkli senaryolar için trace toplamak mümkündür. Komut isteminde nmcap /examples komutunu kullanarak çok farkli senaryolar için kullanim örneklerini bulabilirsiniz.
nmcap /network * /capture tcp /File tcp.cap
Bu komut bir aga bagli olan tüm network kartlarindan paketleri toplayarak tcp.cap dosyasina yazacaktir.
nmcap /network * /capture /File trace.cap /stopwhen /timeafter 10Min /TerminateWhen /KeyPress x
Bu örnekte yine tüm network kartlarindan trace toplayip trace.cap dosyasina yaziyoruz. Ancak bu sefer 10 dakika ile trace toplama zamanini sinirlandiriyoruz. 10 dakikadan önce durdurmak için ise klavyeden “x” tusuna basilabilecegini belirtiyoruz.
nmcap /network * /capture ipv4.address == 10.10.10.1 /file ip.chn:50M /stopwhen /timeafter 180 min /TerminateWhen /KeyPress x
Bu örnekte ise sadece 10.10.10.1 IP adresiyle yapilan iletisim 3 saat sürelye kaydedilecek ve trace datasini 50MB’lik dosyalar halinde yazacagiz.
Bunlar gibi sayisiz örnek verebiliriz. Burada önemli olan yasadigimiz sorunla ilgili dogru paketleri yakalamak olacaktir. Genelde tüm paketleri toplayip analiz sirasinda filtre kullanmayi tercih ederiz ki filtreleme nedeniyle kaçirabilecegimiz ama önemli olabilecek paketleri kaybetmeyelim. Ancak çok yogun network trafigi olan sunuculardan toplanan (domain controller, Exchange gibi) paketlerde yakalama sirasinda filtrelemeyi düsünebiliriz.
Windows 7 / 8 / 2008 R2 / 2012:
Bu isletim sistemlerinden network paketlerini Network Monitor kurmadan da toplayabiliriz. Bunun için netsh komut dizisinden faydalanabiliriz. En tipik örnek asagidaki gibidir:
netsh trace start scenario=NetConnection capture=yes
Trace baslatildiginda size yakalanan paketlerin hangi dosyaya yazildigini söyleyecektir. Varsayilan yeri C:\Users\<username>\AppData\Local\Temp\NetTraces\NetTrace.etl’dir. Bu komut yardimiyla hem trace toplayacak (capture=yes) hem de bazi “provider” lardan bilgi de toplayacagiz. Örnegin, DNS/DHCP client, NDIS, Firewall, TCP/IP,WFP, WinInet ve WinHttp. Tracing’I durdurmak için ise asagidaki komut kullanilabilir:
netsh trace stop
Netsh ile trace toplamanin bize saglayacagi en büyük yarar ise, “persistent=yes” opsiyonu ile birlikte sistemin restart edildigi anda trace toplamak olacaktir. Geç boot-up veya logon sorunlari ile ugrasirken bu bize gerçekten yardimci olabilir.
Okan Çetinim.