traceroute Komutu: Ağ Yolu Takibi ve Gecikme Analizi

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
  1. 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.

Yorum yapın