Perintah traceroute digunakan di Linux untuk memetakan perjalanan yang dilakukan paket informasi dari sumbernya ke tujuan. Satu penggunaan untuk traceroute adalah mencari ketika kehilangan data terjadi di seluruh jaringan, yang dapat menandakan simpul yang ada.
Karena setiap hop dalam catatan mencerminkan server atau router baru antara PC asli dan target yang dituju, meninjau hasil pemindaian traceroute juga memungkinkan Anda mengidentifikasi titik lambat yang dapat mempengaruhi lalu lintas jaringan Anda.
Bagaimana itu bekerja
Mengevaluasi rute spesifik yang diikuti lalu lintas jaringan (atau menemukan gerbang miscreant yang membuang paket Anda) menyajikan beberapa tantangan pemecahan masalah. Traceroute menggunakan protokol IP waktu untuk hidup lapangan untuk meminta tanggapan ICMP TIME_EXCEEDED dari masing-masing gateway di sepanjang jalur ke host tujuan.
Satu-satunya parameter yang harus Anda sertakan ketika Anda menjalankan perintah traceroute adalah nama host atau alamat IP tujuan.
Traceroute Syntax and Switches
traceroute -dFInrvx -f first_ttl -g pintu gerbang -saya saya menghadapi -m max_ttl -p Pelabuhan -q nqueries -s src_addr -t tos -w waittime -z berhenti sebentar tuan rumah packetlen
Sementara di atas adalah bagaimana perintah traceroute harus ditulis untuk bekerja di baris perintah, kinerja atau output dari perintah dapat diubah dengan menentukan satu atau lebih switch opsional.
- -f: Atur waktu-ke-hidup awal yang digunakan dalam paket probe keluar pertama.
- -F: Setel bit "jangan fragmen".
- -d: Aktifkan debugging tingkat soket.
- -g: Tentukan sebuah gateway rute sumber longgar (8 maksimum).
- -saya: Tentukan antarmuka jaringan untuk mendapatkan alamat IP sumber untuk paket probe keluar. Ini biasanya hanya berguna pada host multi-homed. (Lihat-s bendera untuk cara lain untuk melakukan ini.)
- -SAYA: Gunakan ICMP ECHO bukan datagram UDP.
- -m: Atur waktu maks-to-live (jumlah hop maksimum) yang digunakan dalam paket probe keluar. Standarnya adalah 30 hop (standar yang sama digunakan untuk koneksi TCP).
- -n: Cetak alamat hop secara numerik daripada secara simbolis dan numerik (menyimpan pencarian nama-nama-nama-server untuk setiap gateway yang ditemukan di jalur).
- -p: Atur nomor port UDP dasar yang digunakan dalam probe (default adalah 33434). Traceroute berharap tidak ada yang mendengarkan di port UDP mendasarkan untuk dasar + nhops - 1 di host tujuan (jadi pesan ICMP PORT_UNREACHABLE akan dikembalikan untuk mengakhiri pelacakan rute). Jika ada sesuatu yang mendengarkan pada port dalam kisaran default, opsi ini dapat digunakan untuk memilih rentang port yang tidak digunakan.
- -r: Bypass tabel routing normal dan kirim langsung ke host pada jaringan terlampir. Jika host tidak berada di jaringan yang terhubung langsung, kesalahan akan dikembalikan. Opsi ini dapat digunakan untuk melakukan ping ke host lokal melalui antarmuka yang tidak memiliki rute melalui itu (misalnya, setelah antarmuka dijatuhkan oleh diarahkan (8C)).
- -s: Gunakan alamat IP berikut (yang biasanya diberikan sebagai nomor IP, bukan nama host) sebagai alamat sumber dalam paket probe keluar. Pada host multi-homed (yang memiliki lebih dari satu alamat IP), opsi ini dapat digunakan untuk memaksa alamat sumber menjadi sesuatu selain alamat IP dari antarmuka paket probe yang dikirim. Jika alamat IP bukan salah satu alamat antarmuka mesin ini, kesalahan akan dikembalikan dan tidak ada yang dikirim. (Lihat-saya bendera untuk cara lain untuk melakukan ini.)
- -t: Mengatur jenis layanan dalam paket probe ke nilai berikut (default nol). Nilai harus berupa bilangan desimal desimal dalam rentang 0 hingga 255. Opsi ini dapat digunakan untuk melihat apakah hasil jenis layanan yang berbeda di jalur yang berbeda. (Jika Anda tidak menjalankan 4.4bs, ini mungkin akademis, karena layanan jaringan normal seperti telnet dan ftp tidak membiarkan Anda mengontrol TOS.) Tidak semua nilai TOS legal atau berarti - lihat spesifikasi IP untuk definisi. Nilai yang berguna mungkin `-t 16 '(penundaan rendah) dan `-t 8 '(throughput tinggi).
- -v: Verbose output. Paket ICMP yang diterima selain TIME_EXCEEDED dan UNREACHABLEs terdaftar.
- -w: Setel waktu (dalam detik) untuk menunggu respons terhadap probe (default 5 detik).
- -x: Alihkan checksum IP. Biasanya, ini mencegah traceroute dari menghitung checksum IP. Dalam beberapa kasus, sistem operasi dapat menimpa bagian paket yang keluar tetapi tidak menghitung ulang checksum; dengan demikian, dalam beberapa kasus defaultnya adalah tidak menghitung checksum dan menggunakan-x menyebabkan mereka dihitung. Perhatikan bahwa checksum biasanya diperlukan untuk hop terakhir ketika menggunakan ICMP ECHO probes (-SAYA), sehingga selalu dihitung saat menggunakan ICMP.
- -z: Setel waktu (dalam milidetik) untuk menjeda antar probe (default 0). Beberapa sistem seperti Solaris dan router dari Cisco, membatasi pesan icmp tingkat. Nilai yang baik untuk digunakan dengan ini adalah 500 (mis., 1/2 detik).
Menafsirkan Hasil
Traceroute menguraikan jalur yang diikuti paket IP ke host internet dengan meluncurkan paket probe UDP dengan TTL kecil (waktu untuk hidup) kemudian mendengarkan ICMP "waktu terlampaui" dari gateway. Kami memulai penyelidikan kami dengan TTL satu dan meningkatkan satu sampai kami mendapatkan ICMP "port unreachable" (yang berarti paket tiba di tujuannya) atau menekan nilai maksimal upaya, yang default ke 30 hop dan dapat diubah dengan itu-m bendera.
Ketika traceroute mengeksekusi, ia mengirim tiga probe pada setiap pengaturan TTL dan kemudian mencetak garis ke konsol yang menunjukkan TTL, alamat gateway, dan waktu pulang-pergi setiap probe. Jika jawaban probe berasal dari gateway yang berbeda, alamat setiap sistem yang merespons dicetak. Jika tidak ada respons dalam selang waktu lima detik (diganti dengan-w flag), tanda bintang dicetak untuk probe itu.
Untuk menghalangi host tujuan agar tidak kewalahan oleh pemrosesan paket probe UDP, port tujuan disetel ke nilai yang kemungkinan tidak akan digunakan oleh perangkat itu. Jika jaringan atau layanan di tempat tujuan menggunakan port itu, ubah nilainya menggunakan-p bendera.
Penggunaan dan keluaran sampel akan mengembalikan hasil yang mirip dengan contoh ini:
yak 71% traceroute nis.nsf.net. traceroute ke nis.nsf.net (35.1.1.48), 30 hop max, 38 byte paket 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
Perhatikan bahwa baris kedua dan ketiga adalah sama. Hasil ini terkait dengan kernel buggy pada sistem hop kedua -lbl-csam.arpa - yang meneruskan paket dengan nol TTL (bug dalam versi terdistribusi dari 4.3 BSD). Anda harus menebak jalur apa yang digunakan paket untuk melakukan lintas negara karena NSFNet (129.140) tidak menyediakan terjemahan alamat-ke-nama untuk NSSes-nya.
Contoh yang lebih menarik adalah:
yak 72% traceroute allspice.lcs.mit.edu. traceroute ke allspice.lcs.mit.edu (18.26.0.115), 30 hop 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
Perhatikan bahwa gerbang pada 12, 14, 15, 16, dan 17 melompat baik tidak mengirim ICMP "melebihi waktu" pesan atau mengirim mereka dengan TTL terlalu kecil untuk menghubungi kami. Baris 14 hingga 17 menjalankan kode C Gateway MIT yang tidak mengirim pesan "waktu terlampaui".
Gerbang diam 12 dalam contoh di atas mungkin merupakan hasil dari bug dalam kode jaringan 4 BSD dan turunannya: Mesin menjalankan kode 4.3 dan sebelumnya mengirim pesan yang tidak dapat dijangkau menggunakan TTL apa pun yang tersisa dalam datagram asli. Karena, untuk gateway, TTL yang tersisa adalah nol, ICMP "waktu terlampaui" dijamin tidak akan mengembalikannya kepada kami. Perilaku bug ini sedikit lebih menarik ketika muncul di sistem tujuan:
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 Nona ! 39 ms! 39 ms!
Perhatikan bahwa ada 12 "gerbang" (13 adalah tujuan akhir), dan separuh terakhir dari mereka hilang. Apa yang sebenarnya terjadi adalah server bernama meninggal dunia (Sun-3 menjalankan Sun OS 3.5) menggunakan TTL dari datagram tiba kami sebagai TTL dalam balasan ICMP-nya. Jadi, balasannya akan keluar di jalur kembali (tanpa pemberitahuan yang dikirimkan kepada siapa pun karena ICMP tidak dikirim untuk ICMP) sampai kami menyelidiki dengan TTL yang setidaknya dua kali panjang lintasan - dengan kata lain, rip benar-benar hanya tujuh melompat jauh.
Balasan yang mengembalikan dengan TTL 1 adalah petunjuk bahwa masalah ini ada. Traceroute mencetak "!" setelah waktu jika TTL kurang dari atau sama dengan 1. Karena vendor mengirimkan banyak usang (DEC's Ultrix, Sun 3.x) atau perangkat lunak non-standar (HPUX), berharap untuk melihat masalah ini sering dan berhati-hati memilih host target dari probe Anda.
Anotasi lain yang mungkin setelah waktu tersebut! H, ! N, atau! P (host, jaringan, atau protokol yang tidak dapat dijangkau),S! (rute sumber gagal),! F- (diperlukan fragmentasi-nilai RFC1191 Path MTU Discovery ditampilkan),! X (komunikasi secara administratif dilarang),! V (pelanggaran host preseden),C (diutamakan cutoff berlaku), atau! (Kode tidak terjangkau ICMP). Kode-kode ini didefinisikan oleh RFC1812, yang menggantikan RFC1716. Jika hampir semua probe menghasilkan semacam host yang tidak dapat dijangkau, traceroute akan menyerah dan keluar.
Program ini dimaksudkan untuk digunakan dalam pengujian jaringan, pengukuran, dan manajemen. Ini harus digunakan terutama untuk isolasi kesalahan manual. Karena beban itu bisa memaksakan pada jaringan, itu tidak bijaksana untuk menggunakan traceroute selama operasi normal atau dari skrip otomatis.