Ağ sorunlarını çözerken en çok ihtiyaç duyduğun araçlardan biri, paketin kaynaktan hedefe giderken hangi yolları izlediğini gösteren traceroute komutudur. Bir sunucuya erişemiyorsun, gecikme yüksek, belirli bir noktada paketler kayboluyor… İşte tam bu durumlarda traceroute sana hikayenin tamamını anlatır. Sadece “bağlanamıyorum” demek yerine, “3. hop’ta paket kaybı var, ISP tarafında bir sorun olabilir” diyebilmek; hem sorunu daha hızlı çözmeni sağlar hem de hosting firmasına ya da network ekibine somut bir şey iletebilirsin.
traceroute Nedir ve Nasıl Çalışır?
traceroute, bir ağ paketinin kaynaktan hedefe ulaşana kadar geçtiği tüm ara noktaları (hop) listeleyen bir tanılama aracıdır. Her bir hop, paketin geçtiği bir router veya ağ cihazını temsil eder.
Temel çalışma mantığı TTL (Time To Live) değerine dayanır. IP paketlerinin her biri bir TTL değeriyle yola çıkar. Her router bu değeri 1 azaltır. TTL sıfıra düştüğünde router, paketi düşürür ve kaynak adrese “ICMP Time Exceeded” mesajı gönderir. traceroute işte bu mekanizmayı ustaca kullanır:
- TTL=1 ile bir paket gönderir, ilk router cevap verir
- TTL=2 ile paket gönderir, ikinci router cevap verir
- Bu işlemi hedefe ulaşana kadar tekrarlar
Sonuç olarak her hop için genellikle 3 adet round-trip time (RTT) ölçümü görürsün. Bu değerler milisaniye cinsinden gecikmeyi gösterir.
Kurulum
Birçok Linux dağıtımında traceroute varsayılan olarak gelmez, ayrıca kurman gerekir.
# Debian/Ubuntu
sudo apt install traceroute
# RHEL/CentOS/Fedora
sudo yum install traceroute
# veya
sudo dnf install traceroute
# Arch Linux
sudo pacman -S traceroute
Kurulu olup olmadığını kontrol etmek için:
which traceroute
traceroute --version
Temel Kullanım
En basit kullanımı şu şekildedir:
traceroute google.com
Çıktı tipik olarak şöyle görünür:
traceroute to google.com (142.250.185.46), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.541 ms 0.498 ms 0.512 ms
2 10.0.0.1 (10.0.0.1) 8.234 ms 8.190 ms 8.167 ms
3 * * *
4 72.14.215.165 (72.14.215.165) 12.341 ms 12.298 ms 12.276 ms
5 142.250.185.46 (142.250.185.46) 13.102 ms 13.087 ms 13.063 ms
Burada dikkat etmen gereken birkaç şey var:
- Hop numarası: Soldan sağa gidilen router sırası
- IP adresi / hostname: O hop’taki cihazın adresi
- 3 RTT değeri: Her hop için 3 farklı ölçüm (ms cinsinden)
- Yıldız işareti (*): Cevap gelmedi, paket kayboldu ya da router ICMP cevaplarını engelliyor
Önemli Parametreler
traceroute komutunun oldukça geniş bir parametre seti vardır. En çok kullanacakların:
-n: DNS çözümlemesi yapma, sadece IP adresi göster. Daha hızlı çalışır.
-q : Her hop için kaç sorgu gönderileceğini belirler. Varsayılan 3’tür.
-m : Maksimum hop sayısını ayarlar. Varsayılan 30’dur.
-w : Her probe için bekleme süresi. Varsayılan 5 saniyedir.
-I: ICMP echo paketleri kullan (UDP yerine). Bazı güvenlik duvarlarında daha iyi çalışır.
-T: TCP SYN paketleri kullan. Güvenlik duvarı arkasındaki hedeflere ulaşmak için idealdir.
-p : Kullanılacak port numarasını belirler. TCP modu ile birlikte işe yarar.
-s : Çıkış yapılacak kaynak IP adresini belirler. Birden fazla ağ arayüzü olan sunucularda kullanışlıdır.
-i : Hangi ağ arayüzü üzerinden gidileceğini belirler.
-f : Başlangıç TTL değerini ayarlar. Belirli bir hop’tan itibaren trace almak istediğinde kullanışlıdır.
–sport : Kaynak port numarasını belirler.
Pratik Kullanım Örnekleri
DNS Çözümlemesini Devre Dışı Bırakma
Hızlı analiz yaparken her hop için DNS sorgusu yapılması işlemi yavaşlatır. -n parametresiyle bunu devre dışı bırakabilirsin:
traceroute -n google.com
Bu özellikle çok sayıda hop olan uzun trace’lerde büyük fark yaratır. Production ortamında acil bakıyorsan kesinlikle -n kullan.
ICMP Modu ile Trace
Bazı ağ ortamlarında UDP paketleri güvenlik duvarı tarafından engellenir. Bu durumda ICMP modunu dene:
sudo traceroute -I google.com
ICMP modu için root yetkisi gerektiğine dikkat et.
TCP Modu ile Güvenlik Duvarı Arkasını Görme
Web sunucusu gibi belirli bir servise giden yolu izlemek istiyorsan TCP modunu kullanabilirsin:
sudo traceroute -T -p 443 cloudflare.com
Bu komut, 443 portuna TCP SYN paketi göndererek hedefe giden yolu izler. Birçok güvenlik duvarı bu trafiği geçirir çünkü normal HTTPS trafiğinden ayırt edemez.
Belirli Bir Hop’tan Başlama
Diyelim ki ilk 10 hop’u zaten biliyorsun ve 11. hop’tan itibaren trace almak istiyorsun:
traceroute -f 11 hedefserver.com
Daha Fazla Probe ile Güvenilir Ölçüm
Tek seferlik ölçümler yanıltıcı olabilir. Daha güvenilir sonuçlar için her hop’ta daha fazla probe gönder:
traceroute -q 10 hedefserver.com
Maksimum Hop Sayısını Artırma
Varsayılan 30 hop bazen yetmez. Özellikle intercontinental bağlantılarda hop sayısı 40-50’yi aşabilir:
traceroute -m 60 uzakserver.com
Kaynak IP Belirleme
Birden fazla IP’ye sahip bir sunucuda belirli bir arayüzden trace almak için:
traceroute -s 203.0.113.50 hedef.com
# veya arayüz adıyla
traceroute -i eth1 hedef.com
Gerçek Dünya Senaryoları
Senaryo 1: Yüksek Gecikme Kaynağını Bulma
Ekipten biri “sunucu çok yavaş” diyor ama sunucu metrikleri normal görünüyor. Klasik bir ağ gecikmesi sorunu olabilir. Şöyle yaklaşırsın:
traceroute -n -q 5 uygulama-sunucusu.sirket.com
Çıktıda şunu görüyorsun:
1 192.168.1.1 0.5 ms 0.4 ms 0.5 ms 0.4 ms 0.5 ms
2 10.10.0.1 1.2 ms 1.1 ms 1.3 ms 1.1 ms 1.2 ms
3 203.0.113.1 2.1 ms 2.0 ms 2.1 ms 2.0 ms 2.1 ms
4 198.51.100.1 45.3 ms 44.8 ms 45.1 ms 44.9 ms 45.2 ms
5 10.20.0.10 46.1 ms 45.9 ms 46.0 ms 45.8 ms 46.1 ms
- hop’tan 4. hop’a geçişte yaklaşık 43ms’lik bir atlama var. Sonraki hop’larda gecikme benzer seviyelerde kalıyor. Bu, sorunun tam olarak 4. hop’ta başladığını gösterir. ISP’deki bir router ya da backbone bağlantısındaki bir sorun olabilir. Bu bilgiyle ISP’ye çok daha somut bir sorun kaydı açabilirsin.
Senaryo 2: Paket Kaybını Tespit Etme
Kullanıcılar belirli saatlerde bağlantı kesilmelerinden şikayet ediyor. traceroute ile anlık durumu kontrol ediyorsun:
traceroute -n hedefserver.com
1 192.168.1.1 0.5 ms 0.4 ms 0.5 ms
2 10.0.0.1 8.2 ms 8.1 ms 8.2 ms
3 * * *
4 * * *
5 72.14.215.1 12.3 ms 12.2 ms *
6 * * *
Burada 3. hop’tan itibaren yıldızlar başlıyor ama 5. hop kısmen cevap veriyor. Bu ilginç bir durum. Her yıldız mutlaka paket kaybı anlamına gelmez; bazı router’lar ICMP cevaplarını güvenlik politikaları gereği engeller. Ama 5. hop’ta bir cevap var, demek ki o noktaya paketler ulaşabiliyor. 3. ve 4. hop’lar sadece ICMP’yi engelleyen cihazlar olabilir.
Daha net bir resim için TCP modunu dene:
sudo traceroute -T -p 80 hedefserver.com
Senaryo 3: İki Farklı Lokasyondan Karşılaştırmalı Analiz
CDN veya yük dengeleme kullanan bir altyapıda, farklı lokasyonlardan farklı sonuçlar alman beklenir. Hangi edge node’a gittiğini görmek için:
# Farklı kaynak IP'ler veya arayüzler üzerinden
traceroute -i eth0 cdn.hedef.com
traceroute -i eth1 cdn.hedef.com
Çıktıları karşılaştırarak hangi CDN node’una yönlendirildiğini ve hangisinin daha iyi gecikme verdiğini görebilirsin.
Senaryo 4: BGP Rota Değişikliklerini Takip Etme
Bir gün her şey normalken ertesi gün belirli bir hedefe giden trafik tamamen farklı bir yoldan gidiyorsa, BGP rota değişikliği yaşanmış olabilir. Düzenli aralıklarla trace alıp saklaman bu konuda çok işe yarar:
# Her 5 dakikada bir trace al ve logla
while true; do
echo "=== $(date) ===" >> /var/log/traceroute_log.txt
traceroute -n hedef.com >> /var/log/traceroute_log.txt 2>&1
sleep 300
done
Bu basit script sayesinde rota değişikliklerini retrospektif olarak inceleyebilirsin.
mtr: traceroute’un Güçlü Kardeşi
traceroute tek seferlik bir anlık görüntü sunar. Ama sürekli izleme yapmak istiyorsan mtr (Matt’s Traceroute) çok daha güçlüdür. traceroute ve ping‘i birleştiren, sürekli güncellenen interaktif bir araçtır.
# Kurulum
sudo apt install mtr
# Temel kullanım
mtr google.com
# Raporlama modu (100 ping sonrası özet)
mtr --report --report-cycles 100 google.com
# DNS çözümlemesiz, sayısal modda rapor
mtr -n --report --report-cycles 50 hedef.com
mtr ile her hop için paket kaybı yüzdesini, ortalama, minimum ve maksimum gecikmeleri anlık olarak görürsün. Bir sorun analiz ederken traceroute ile başlayıp mtr ile derinleşmek iyi bir yaklaşımdır.
traceroute Çıktısını Doğru Yorumlama
Çıktıyı yanlış yorumlamak yanlış sonuçlara götürür. Dikkat etmen gereken birkaç önemli nokta var:
Yıldızlar her zaman sorun değildir: Bazı router’lar, güvenlik politikaları nedeniyle ICMP TTL exceeded mesajlarını göndermez. Paket içinden geçse bile sana cevap vermez. Eğer sonraki hop’lardan cevap geliyorsa, aradaki yıldızlar genellikle sorunsuz router’lardır.
Router gecikmesi ile link gecikmesini ayır: Bir hop’ta yüksek gecikme görüyorsun ama sonraki hop’larda gecikme normale dönüyorsa, o router’ın ICMP cevaplarını düşük öncelikle işlediği anlamına gelir. Gerçek bir gecikme problemi değildir.
Asimetrik rotalar kafa karıştırabilir: İnternet trafiği genellikle asimetriktir; gidiş yolu ile dönüş yolu farklı olabilir. traceroute sadece gidiş yolunu gösterir.
RTT değerlerinin artması: Hop’tan hop’a RTT değerleri genellikle artar. Eğer bir yerde ciddi bir atlama varsa ve sonrasında da yüksek kalıyorsa, gerçek bir gecikme noktası bulmuş olabilirsin.
RTT değerlerinin azalması: Bazen ileri hop’larda RTT’nin düştüğünü görürsün. Bu teknik olarak mümkündür çünkü bazı router’lar transit trafiği farklı şekilde işler.
tracepath ile Karşılaştırma
tracepath de benzer bir araçtır ama root yetkisi gerektirmez ve MTU (Maximum Transmission Unit) bilgisi de gösterir.
tracepath google.com
Root yetkisi olmadığın durumlarda tracepath iyi bir alternatiftir. Ama gelişmiş parametreler açısından traceroute çok daha zengindir.
Güvenlik Duvarı ve Ağ Ekipleriyle İletişim
traceroute sonuçlarını ağ ekibine veya güvenlik duvarı yöneticilerine iletirken, çıktıyı ham haliyle paylaşmak yerine net bir analiz sunmak çok daha etkilidir. Örneğin:
# Çıktıyı dosyaya kaydet
traceroute -n -q 5 hedef.com | tee /tmp/trace_$(date +%Y%m%d_%H%M%S).txt
Sonra bu dosyayı şu bilgilerle birlikte paylaş: hangi hop’ta sorun gözlemlediğini, kaç ms’lik gecikme spikeleri olduğunu ve sorunun ne zamandan beri devam ettiğini. Bu yaklaşım bilet açma sürecini çok daha verimli hale getirir.
IPv6 ile traceroute
IPv6 ağlarında traceroute6 komutunu kullanman gerekir:
traceroute6 ipv6.google.com
# veya
traceroute -6 ipv6.google.com
Çift yığın (dual-stack) ortamlarda hangi protokolün kullanıldığını kontrol etmek için ikisini ayrı ayrı çalıştırıp karşılaştırabilirsin.
Toplu ve Otomatik Kullanım
Production ortamlarında ağ sorunlarını proaktif izlemek için traceroute‘u script’lere entegre edebilirsin:
#!/bin/bash
# Kritik hedeflere periyodik trace ve anomali tespiti
HEDEFLER=("db-server.internal" "api-gateway.internal" "external-cdn.com")
LOG_DIR="/var/log/network_traces"
mkdir -p $LOG_DIR
for hedef in "${HEDEFLER[@]}"; do
ZAMAN=$(date +%Y%m%d_%H%M%S)
DOSYA="$LOG_DIR/trace_${hedef}_${ZAMAN}.txt"
echo "Hedef: $hedef - Zaman: $(date)" > $DOSYA
traceroute -n -q 3 -w 3 $hedef >> $DOSYA 2>&1
echo "Trace tamamlandi: $DOSYA"
done
Bu script’i cron ile çalıştırarak belirli aralıklarda otomatik trace alabilirsin. Anormal gecikme veya rota değişikliği olduğunda geçmiş loglarla karşılaştırma yapabilirsin.
Sonuç
traceroute, ağ sorunlarını çözerken elinden bırakmaman gereken temel araçlardan biridir. Basit bir gecikme sorununu ISP’ye atfetmeden önce, yüksek bir yük durumunda sunucuyu suçlamadan önce veya güvenlik duvarı kurallarını karıştırmadan önce bir traceroute çalıştırmanı şiddetle tavsiye ederim. Çoğu zaman cevap, hop listesinde net bir şekilde seni bekliyor olur.
Temel kullanımla başla, -n ile hızlandır, sorun derinleşirse -T veya -I modlarını dene ve uzun vadeli izleme için mtr ile traceroute‘u birlikte kullan. Ağ sorunları çözülmüş bir trace log’una bakarken ne kadar tatmin edici göründüğünü bir kez görürsen, bu aracı her zaman yanında bulundurmak isteyeceksin.