Kullanım
traceroute [-adeEFISdNnrvx] [-A as_server] [-f first_ttl] [-g gateway] [-i iface]
[-M first_ttl] [-m max_ttl] [-P proto] [-p port] [-q nqueries] [-s src_addr]
[-t tos] [-w waittime] [-z pausemsecs] host [packetsize]
Açıklama
İnternet, geçitler (gateways) ile birbirine bağlanmış ağ donanımlarının büyük ve karmaşık bir birleşimidir. Paketlerin izlediği yolu takip etmek (veya paketlerinizi çöpe atan hatalı geçidi bulmak) zor olabilir. traceroute, IP protokolünün "time to live" (yaşam süresi - TTL) alanını kullanır ve belirli bir ana bilgisayara giden yol üzerindeki her bir geçitten bir ICMP TIME_EXCEEDED yanıtı almaya çalışır.
Tek zorunlu parametre, hedef ana bilgisayar adı veya IP numarasıdır. Varsayılan sonda datagramı uzunluğu 40 bayttır, ancak hedef ana bilgisayar adından sonra bir paket boyutu (bayt cinsinden) belirtilerek bu boyut artırılabilir.
TCP sondalarının (probes) taşıma yükü (payload) yoktur ve TCP için packetsize parametresi yoksayılır.
Diğer seçenekler şunlardır:
-a: Karşılaşılan her atlama (hop) için AS# aramalarını etkinleştirir.
-A as_server AS# aramalarını etkinleştirir ve varsayılan sunucu yerine belirtilen sunucuyu kullanır.
-d: Soket düzeyinde hata ayıklamayı (debugging) etkinleştirir.-D: Sonda datagramımıza bir ICMP yanıtı alındığında, iletilen paket ile ICMP yanıtı tarafından aktarılan paket arasındaki farkları yazdırır. İletilen paketteki alanların konumunu gösteren bir anahtar yazdırılır, ardından onaltılık (hex) biçimde orijinal paket ve ardından onaltılık biçimde aktarılan paket gelir. Aktarılan pakette değişmeyen baytlar alt çizgi (_) olarak gösterilir. Aktarılan paketin IP sağlama toplamı (checksum) ve TTL değerlerinin eşleşmesinin beklenmediğini unutmayın. Varsayılan olarak bu seçenekle atlama başına yalnızca bir sonda gönderilir.-E: ECN temizliğini (ECN bleaching) algılar. IPTOS_ECN_ECT1 bitini ayarlar ve bu değerin temizlenip temizlenmediğini veya bozulup bozulmadığını bildirir.-e: Güvenlik duvarı atlatma (evasion) modu. UDP ve TCP sondaları için sabit hedef portları kullanır. Hedef port, gönderilen her paketle birlikte ARTMAZ.
-f first_ttl İlk giden sonda paketinde kullanılan başlangıç yaşam süresini (TTL) ayarlar.
-F: "don't fragment" (parçalama) bitini ayarlar.
-g gateway Bir gevşek kaynak rotası (loose source route) geçidi belirtir (en fazla 8).
-i iface Giden sonda paketleri için kaynak IP adresini elde etmek üzere bir ağ arayüzü belirtir. Bu normalde yalnızca birden fazla ağ arayüzüne sahip (multi-homed) bir ana bilgisayarda yararlıdır. (Bunu yapmanın başka bir yolu için -s bayrağına bakın.)
-I: UDP datagramları yerine ICMP ECHO kullanır. ("-P icmp" ile eş anlamlıdır).
-M first_ttl Giden sonda paketlerinde kullanılan başlangıç yaşam süresi (TTL) değerini ayarlar. Varsayılan değer 1'dir, yani ilk atlamadan başlar.
-m max_ttl Giden sonda paketlerinde kullanılan maksimum yaşam süresini (maksimum atlama sayısını) ayarlar. Varsayılan değer net.inet.ip.ttl atlamadır (TCP bağlantıları için kullanılan varsayılan değerle aynıdır).
-n: Atlama adreslerini sembolik ve sayısal olarak yazdırmak yerine yalnızca sayısal olarak yazdırır (yol üzerinde bulunan her geçit için bir ad sunucusu adres-ad aramasından tasarruf sağlar).
-P proto Belirtilen IP protokolünün paketlerini gönderir. Şu anda desteklenen protokoller şunlardır: UDP, TCP, GRE ve ICMP. traceroute paket biçimleri hakkında özel bir bilgi uygulamasa da, diğer protokoller de (adıyla veya numarasıyla) belirtilebilir. Bu seçenek, yol üzerindeki hangi yönlendiricinin IP protokol numarasına göre paketleri engelliyor olabileceğini belirlemek için yararlıdır. Ama aşağıdaki HATALAR (BUGS) bölümüne bakın.
-p port Protokole özeldir. UDP ve TCP için sondalarda kullanılan temel port numarasını ayarlar (varsayılan 33434'tür). traceroute, hedef ana bilgisayarda base ile base+nhops-1 arasındaki UDP portlarında hiçbir şeyin dinlemediğini umar (böylece rota izlemeyi sonlandırmak için bir ICMP PORT_UNREACHABLE mesajı döndürülecektir). Varsayılan aralıktaki bir portta bir şey dinliyorsa, kullanılmayan bir port aralığı seçmek için bu seçenek kullanılabilir.
-q nqueries "ttl" başına sonda sayısını nqueries değerine ayarlar (varsayılan üç sondadır).
-r: Normal yönlendirme tablolarını baypas eder ve doğrudan bağlı bir ağdaki bir ana bilgisayara gönderir. Ana bilgisayar doğrudan bağlı bir ağda değilse bir hata döndürülür. Bu seçenek, üzerinde rota bulunmayan bir arayüz aracılığıyla yerel bir ana bilgisayara ping atmak için kullanılabilir.
-s src_addr Giden sonda paketlerinde kaynak adres olarak aşağıdaki IP adresini (bir ana bilgisayar adı değil, bir IP numarası olarak verilmelidir) kullanır. Birden fazla IP adresine sahip ana bilgisayarlarda bu seçenek, kaynak adresi sonda paketinin gönderildiği arayüzün IP adresinden başka bir şey olmaya zorlamak için kullanılabilir. IP adresi bu makinenin arayüz adreslerinden biri değilse bir hata döndürülür ve hiçbir şey gönderilmez. (Bunu yapmanın başka bir yolu için -i bayrağına bakın.)
-S: Her atlama için kaç sondaya yanıt verilmediğinin bir özetini yazdırır.-t tos: Sonda paketlerindeki hizmet türünü (type-of-service, TOS) aşağıdaki değere ayarlar (varsayılan sıfırdır). Değer 0 ila 255 aralığında bir ondalık tamsayı olmalıdır. Bu seçenek, farklı hizmet türlerinin farklı yollarla sonuçlanıp sonuçlanmadığını görmek için kullanılabilir. (4.4BSD veya daha yeni bir sistem çalıştırmıyorsanız, telnet ve ftp gibi normal ağ hizmetleri TOS'u kontrol etmenize izin vermediğinden bu durum akademik olabilir). TOS değerlerinin tümü yasal veya anlamlı değildir - tanımlar için IP spesifikasyonuna bakın. Yararlı değerler muhtemelen ‘-t 16’ (düşük gecikme) ve ‘-t 8’ (yüksek verim) şeklindedir.-v: Ayrıntılı çıktı. TIME_EXCEEDED ve UNREACHABLE dışındaki alınan ICMP paketleri listelenir.
-w waittime Bir sondaya yanıt beklemek için süreyi (saniye cinsinden) ayarlar (varsayılan 5 saniyedir).
-x: IP sağlama toplamlarını (checksum) açar/kapatır. Normalde bu, traceroute'un IP sağlama toplamlarını hesaplamasını engeller. Bazı durumlarda, işletim sistemi giden paketin bazı kısımlarını üzerine yazabilir ancak sağlama toplamını yeniden hesaplamayabilir (bu nedenle bazı durumlarda varsayılan sağlama toplamlarını hesaplamamaktır ve -x kullanılması onların hesaplanmasına neden olur). ICMP ECHO sondaları ( -I ) kullanırken son atlama için genellikle sağlama toplamlarının gerekli olduğunu unutmayın. Bu nedenle ICMP kullanırken bunlar her zaman hesaplanır.
-z pausemsecs Sondalar arasında duraklatılacak süreyi (milisaniye cinsinden) ayarlar (varsayılan 0'dır). Solaris gibi bazı sistemler ve Cisco gibi yönlendiriciler ICMP mesajlarını oran sınırına (rate limit) tabi tutar. Bununla birlikte kullanılacak iyi bir değer 500'dür (örneğin 1/2 saniye).
Bu program, küçük bir ttl (yaşam süresi) ile UDP sonda paketleri fırlatarak ve ardından bir geçitten ICMP "time exceeded" (süre aşıldı) yanıtını dinleyerek bir IP paketinin bir internet ana bilgisayarına ulaşırken izleyeceği yolu izlemeye çalışır. Sondalarımıza bir ttl değeri olan bir ile başlarız ve bir ICMP "port unreachable" (hedefe ulaştığımız anlamına gelir) yanıtı alana veya bir sınıra (varsayılan olarak net.inet.ip.ttl atlamadır ve -m bayrağıyla değiştirilebilir) ulaşana kadar ttl değerini birer birer artırırız. Her ttl ayarında üç sonda ( -q bayrağıyla değiştirilir) gönderilir ve ttl değerini, geçidin adresini ve her sondanın gidiş-dönüş süresini gösteren bir satır yazdırılır. Sonda yanıtları farklı geçitlerden gelirse, yanıt veren her sistemin adresi yazdırılacaktır. 5 saniyelik bir zaman aşımı süresi içinde ( -w bayrağıyla değiştirilir) yanıt gelmezse, o sonda için bir "*" yazdırılır.
Hedef ana bilgisayarın UDP sonda paketlerini işlemesini istemediğimizden hedef port olağandışı bir değere ayarlanır (hedefteki bir kullanıcı bu değeri kullanıyorsa, -p bayrağıyla değiştirilebilir).
Örnek bir kullanım ve çıktı şu şekilde olabilir:
[yak 71]% traceroute nis.nsf.net. traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 byte packet 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms 8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms 10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms 11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms
- ve 3. satırların aynı olduğunu unutmayın. Bunun nedeni, 2. atlamadaki sistemde (lbl-csam.arpa) paketleri sıfır ttl ile yönlendiren hatalı bir çekirdek bulunmasıdır (4.3 BSD'nin dağıtılan sürümündeki bir hata). NSFNet (129.140) kendi NSS'leri için ad-adres çevirileri sağlamadığından, paketlerin ülke genelinde hangi yolu izlediğini tahmin etmeniz gerektiğini unutmayın.
Daha ilginç bir örnek şudur:
[yak 72]% traceroute allspice.lcs.mit.edu. traceroute to allspice.lcs.mit.edu (18.26.0.115), 64 hops max 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms 8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms 12 * * * 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms 14 * * * 15 * * * 16 * * * 17 * * * 18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms
12, 14, 15, 16 ve 17 atlama uzaklıktaki geçitlerin ya ICMP "time exceeded" mesajları göndermediğini ya da bunları bize ulaşamayacak kadar küçük bir ttl ile gönderdiğini unutmayın. 14 - 17, "time exceeded" mesajları göndermeyen MIT C Gateway kodunu çalıştırmaktadır. 12 numaralı geçitte ne olduğunu ise sadece Tanrı bilir.
Yukarıdaki sessiz geçit 12, 4.[23] BSD ağ kodundaki (ve türevlerindeki) bir hatanın sonucu olabilir: 4.x (x <= 3), orijinal datagramda kalan ttl ne olursa olsun onu kullanarak bir ulaşılamaz mesajı gönderir. Geçitler için kalan ttl sıfır olduğundan, ICMP "time exceeded" mesajının bize geri dönmemesi garanti edilir. Bu hatanın davranışı, hedef sistemde göründüğünde biraz daha ilginçtir:
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms 6 csgw.Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 rip.Berkeley.EDU (128.32.131.22) 59 ms ! 39 ms ! 39 ms !
12 adet "geçit" olduğunu (13 nihai hedeftir) ve bunların tam olarak son yarısının "kayıp" olduğunu fark edin. Gerçekte olan şey, rip'in (Sun OS3.5 çalıştıran bir Sun-3) gelen datagramımızdaki ttl'yi ICMP yanıtındaki ttl olarak kullanmasıdır. Dolayısıyla, yol uzunluğunun en az iki katı olan bir ttl ile tarama yapana kadar yanıt dönüş yolunda zaman aşımına uğrayacaktır (ICMP'ler için ICMP'ler gönderilmediğinden kimseye bildirim gönderilmez). Yani rip gerçekte sadece 7 atlama uzaktadır. 1 ttl ile dönen bir yanıt, bu sorunun var olduğuna dair bir ipucudur. traceroute, ttl <= 1 ise süreden sonra bir "!" yazdırır. Satıcılar birçok eski (DEC'in Ultrix'i, Sun 3.x'i) veya standart olmayan (HPUX) yazılım gönderdiğinden, bu sorunla sık sık karşılaşmayı bekleyin ve/veya sondalarınızın hedef ana bilgisayarını seçerken dikkatli olun.
Süreden sonra gelebilecek diğer olası açıklamalar şunlardır: !H, !N veya !P (ana bilgisayar, ağ veya protokol ulaşılamaz), !S (kaynak rotası başarısız), (parçalama gerekiyor - RFC1191 Path MTU Keşif değeri görüntülenir), !U veya !W (hedef ağ/ana bilgisayar bilinmiyor), !I (kaynak ana bilgisayar yalıtılmış), !A (hedef ağ ile iletişim idari olarak yasaklanmış), !Z (hedef ana bilgisayar ile iletişim idari olarak yasaklanmış), !Q (bu ToS için hedef ağ ulaşılamaz), !T (bu ToS için hedef ana bilgisayar ulaşılamaz), !X (iletişim idari olarak yasaklanmış), !V (ana bilgisayar öncelik ihlali), !C (öncelik kesintisi yürürlükte) veya !
Bu program ağ testi, ölçümü ve yönetimi için tasarlanmıştır. Öncelikle manuel hata yalıtımı için kullanılmalıdır. Ağa getirebileceği yük nedeniyle, traceroute'un normal işlemler sırasında veya otomatik betiklerden kullanılması akıllıca değildir.
Yazar
Steve Deering'in bir önerisi üzerine Van Jacobson tarafından uygulanmıştır. Cast of thousands tarafından, özellikle C. Philip Wood, Tim Seaver ve Ken Adelman'ın yerinde öneri veya düzeltmeleriyle hata ayıklaması yapılmıştır.
Ayrıca Bakınız
netstat(1), ping(8), traceroute6(8)
Hatalar
UDP dışındaki protokolleri kullanırken işlevsellik azalır. Özellikle, son paket genellikle kaybolmuş gibi görünecektir; çünkü hedef ana bilgisayara ulaşsa bile, geri bir ICMP mesajı gönderilmediğinden bunu bilmenin bir yolu yoktur.
AS numarası özelliği, yönlendirme veritabanı sunucusunun içeriği ile İnternet'in mevcut durumu arasındaki tutarsızlıklar nedeniyle bazen yanlış bilgi rapor edebilir.
BSD 4.3 May 29, 2008 BSD 4.3