Esenlikler. Bugün teşhis anlamında sıkça kullandığımız Traceroute aracını anlatıcam.

TRACEROUTE NEDİR?

1785507326129.webp


Traceroute, temelde çok kolay bir prensip kullanır. Veri çıkıyor ama hangi yollardan geçiyor? Burada devreye TTL yani Time To Live (Yaşam Süresi) dediğimiz metaveri girer. TTL, IP protokolüne gömülü bir değerdir. 2⁸ = 256 farklı kombinasyon üretebilir.

Internet'e gönderdiğiniz her bir veri, ağların arasında döngüye girip çökertmemesi için bir header (başlık) ve payload (yük) şeklinde dağılır. Header içerisinde 4 farklı bilgi yer alır. Kaynak IP, varış IP, protokol (UDP ,TCP) ve son olarak TTL.

Sizden gelen veriyi alan bir router, payload kısmıyla ilgilenmeden header kısmına bakar, okur ve paketi ona göre yönlendirir (routing). Bu sırada headerdaki TTL verisinde 1 eksiltilir. Şöyle anlatayım:

Siz (client) 1.1.1.1 hedefine bir ping isteği gönderirsiniz. Normal şartlarda TTL verisi 0'a düştüğünde istek imha edilir ve isteği imha eden router kaynağa ICMP Time Exceeded (Süre Aşımı) hata mesajı gönderir. Traceroute programı, bu hata mesajını bilerek tetikleyerek verinin hangi yollardan geçtiğini öğrenir.

Öncelikle TTL '1' verisi bilgisayardan, hedefe doğru çıkar. Yolda ilk router veriyi alır ve TTL verisini 0 yapar, veri imha olur ve bilgisayarınıza bir hata mesajını gönderir. İlk routerın kimliği bu şekilde öğrenilir.

Sonra TTL '2' verisi gönderilir. İlk router veriyi alır, TTL'i 1 yapar ve sonraki routera iletir. Sonraki router alır, 0 yapar ve hata mesajını gönderir. İkinci routerda bu şekilde öğrenilir.

Bu şekilde 3,4,5 diye diye en son veri hedefe varana kadar tüm yol öğrenilir. Hedef bir Echo Reply verisi göndererek veriyi aldığını iletir ve program kapatılır. İşte Traceroute temelde budur.

Peki eğer bu kadar az bir veriyse, neden ona 256 farklı değer verdik? Cevap basit, verimlilik ve loop güvenliği.

Ortalama bir veri, hedefe ulaşana kadar takribi olarak 10 ila 30 farklı routing noktasından geçer. Eğer hedefe uzaksanız (küresel çapta) bu sayı 60'a kadar çıkabilir. 256 farklı hop izni, verinin yolda yok olmadan rahatça hedefe ulaşmasını sağlar. Bir diğer sebep ise yukarıda bahsettiğim loop engelidir. Routerda bir hata olduğunda, veri iki cihaz arasında git gel yapar ve bant genişliğinin ayrıca cihazların anasını ağlatır. Eğer 16 bitlik (yani 65.356 farklı değer) TTL verisi oluştursaydık, veri yok olana kadar milyonlarca kez git gel yapardı ve ağ adeta E5 gibi tıkanırdı. İşin içinde bilgisayarların 8 bitlik verileri daha hızlı işlemeside var ama o konulara girmek istemiyorum.

Peki nasıl traceroute yapıcam?

Çok basit.

Windows için cmd'de komut tracert <hedef>

Linux ve macOS için traceroute <hedef> (Linux ve macOS, Unix tabanlı olmaları gereğiyle veriyi UDP olarak gönderir.)

ÖRNEK BİR TRACEROUTE TESTİ
(Örnek benim tarafımdan yapılmıştır.)

1785507054620.webp


Peki bu aralardaki yıldızlar ne? Request timed out demek verim yolda kayıp mı oluyor demek? Tabikide hayır arkadaşlar öyle bişey yok. Verinizin yolda kaybolması o yıldızlardan herhangi birinden sonra hiç bir şekilde bir routera veri gitmemesi lazım. Yani sürekli yıldız gelmeli (örneğe bakarsak 30 atlama olana kadar). Peki ne oluyor o zaman? Basitçe, routerın güvenlik duvarı izin vermemiştir, tracert pinglerine kapalıdır veya ikinci plana atmıştır ya da en basitinden anlık olarak yoğundur. Önemli olan verinin hedefe varmasıdır.

LINUX ÖRNEK TRACEROUTE TESTİ

1785507272653.webp


Gördüğünüz gibi traceroute, özellikle CGNAT sorunu yaşayan dostlarımızda teşhisi daha kolay hale getiriyor özellikle. Bu tür konularda sorun yaşıyorsanız lütfen belirtiniz. Teşekkürler.
 
Son düzenleyen: Moderatör: