Perintah traceroute digunakan di Linux untuk memetakan perjalanan yang satu paket maklumat mengambil dari sumbernya ke destinasinya. Satu penggunaan untuk traceroute adalah mencari apabila kehilangan data berlaku di seluruh rangkaian, yang boleh menandakan nod yang turun.
Oleh kerana setiap hop dalam rekod mencerminkan pelayan atau penghala baru antara PC yang berasal dan sasaran yang dimaksudkan, mengkaji semula hasil imbasan traceroute juga membolehkan anda mengenal pasti titik perlahan yang mungkin menjejaskan trafik rangkaian anda.
Bagaimana ia berfungsi
Menilai laluan tertentu yang lalu lintas rangkaian berikut (atau mencari gerbang yang tidak adil yang membuang paket anda) memberikan beberapa cabaran penyelesaian masalah. Traceroute menggunakan protokol IP masa untuk hidup medan untuk mendapatkan maklum balas ICMP TIME_EXCEEDED dari setiap pintu masuk sepanjang laluan ke hos destinasi.
Satu-satunya parameter yang perlu anda sertakan ketika anda menjalankan perintah traceroute adalah nama host atau alamat IP destinasi.
Sintaks dan Suara Traceroute
traceroute -dFInrvx -f first_ttl -g pintu masuk -i saya menghadapi -m max_ttl -p pelabuhan -q nqueries -s src_addr -t tos -w menunggu masa -z pausemsecs tuan rumah packetlen
Walaupun di atas adalah bagaimana arahan traceroute dituliskan untuk berfungsi dalam baris perintah, prestasi atau keluaran perintah itu boleh diubah dengan menentukan satu atau lebih suis pilihan.
- -f: Tetapkan masa awal untuk hidup yang digunakan dalam paket penyelidikan keluar pertama.
- -F: Tetapkan sedikit "pecahan".
- -d: Dayakan debug tahap peringkat soket.
- -g: Tentukan gerbang laluan sumber longgar (8 maksimum).
- -i: Tentukan antara muka rangkaian untuk mendapatkan alamat IP sumber untuk paket probe yang keluar. Ini biasanya hanya berguna pada hos pelbagai rumah. (Lihat-s bendera untuk cara lain untuk melakukan ini.)
- -I: Gunakan ICMP ECHO bukan datagram UDP.
- -m: Tetapkan maksimum masa untuk hidup (bilangan maksimum hop) yang digunakan dalam paket probe yang keluar. Lalai adalah 30 hop (sama lalai yang digunakan untuk sambungan TCP).
- -n: Alamat cetak hop berangka secara numerik dan bukannya secara simbolik dan berangka (menjimatkan nama pelayan yang mencari alamat-ke-nama bagi setiap gerbang yang terdapat di jalan).
- -p: Tetapkan nombor port UDP asas yang digunakan dalam probe (lalai ialah 33434). Traceroute berharap tiada apa yang didengar di pelabuhan UDP asas kepada asas + nhops - 1 di hujung tujuan (jadi mesej ICMP PORT_UNREACHABLE akan dikembalikan untuk menamatkan laluan pengesanan). Sekiranya sesuatu sedang mendengar pada port dalam julat lalai, pilihan ini boleh digunakan untuk memilih julat port yang tidak digunakan.
- -r: Bypass jadual routing biasa dan hantar terus ke host pada rangkaian yang dilampirkan. Jika tuan rumah tidak berada di rangkaian yang dilampirkan secara langsung, ralat dikembalikan. Pilihan ini boleh digunakan untuk mengosongkan tuan rumah setempat melalui antara muka yang tidak mempunyai laluan melaluinya (mis., Selepas antara muka dijatuhkan oleh dihalakan (8C)).
- -s: Gunakan alamat IP berikut (yang biasanya diberikan sebagai nombor IP, bukan nama hos) sebagai alamat sumber dalam paket probe yang keluar. Mengenai hos pelbagai rumah (yang mempunyai lebih daripada satu alamat IP), opsyen ini boleh digunakan untuk memaksa alamat sumber untuk menjadi sesuatu selain daripada alamat IP antaramuka paket siasatan dihantar. Jika alamat IP bukan antara alamat antara muka mesin ini, ralat dikembalikan dan tiada apa yang dihantar. (Lihat-i bendera untuk cara lain untuk melakukan ini.)
- -t: Menetapkan jenis perkhidmatan dalam probe paket ke nilai berikut (default zero). Nilai itu mestilah integer perpuluhan dalam julat 0 hingga 255. Pilihan ini boleh digunakan untuk melihat sama ada keputusan jenis-perkhidmatan yang berbeza dalam laluan yang berlainan. (Jika anda tidak menjalankan 4.4bsd, ini mungkin akademik, kerana perkhidmatan rangkaian biasa seperti telnet dan ftp tidak membenarkan anda mengawal TOS.) Tidak semua nilai TOS adalah sah atau bermakna - lihat spec IP untuk definisi. Nilai berguna mungkin `-t 16 '(kelewatan rendah) dan `-t 8 '(high throughput).
- -v: Keluaran berbahaya. Menerima paket ICMP selain daripada TIME_EXCEEDED dan UNREACHABLEs disenaraikan.
- -w: Tetapkan masa (dalam saat) untuk menunggu tindak balas kepada siasatan (lalai 5 saat).
- -x: Togol IP cek. Biasanya, ini menghalang traceroute daripada mengira cek IP. Dalam sesetengah kes, sistem operasi boleh menulis ganti sebahagian daripada paket keluar tetapi tidak mengira semula checksum; oleh itu, dalam beberapa kes, lalai adalah untuk tidak menghitung cek dan penggunaan-x menyebabkan mereka dikira. Perhatikan bahawa pemeriksaan biasanya diperlukan untuk hop lepas apabila menggunakan probe ICMP ECHO (-I), jadi mereka sentiasa dikira apabila menggunakan ICMP.
- -z: Tetapkan masa (dalam milisaat) untuk jeda di antara probe (default 0). Sesetengah sistem seperti Solaris dan penghala dari Cisco, had kadar icmp mesej. Nilai yang baik untuk digunakan dengan ini ialah 500 (mis., 1/2 saat).
Mentafsirkan Keputusan
Traceroute menggariskan laluan paket IP berikut kepada hos internet dengan melancarkan paket probe UDP dengan TTL kecil (masa untuk hidup) kemudian mendengar untuk ICMP "masa melebihi" jawapan dari pintu masuk. Kami memulakan probe kami dengan TTL satu dan meningkat satu sehingga kami mendapat ICMP "port unreachable" (yang bermaksud paket itu tiba di destinasi) atau memukul nilai max percobaan, yang mungkir ke 30 hop dan boleh diubah dengan yang-m bendera.
Apabila traceroute dijalankan, ia menghantar tiga probe pada setiap tetapan TTL dan kemudian mencetak satu baris ke konsol yang menunjukkan TTL, alamat pintu masuk, dan masa pusingan setiap siasatan. Sekiranya jawapan siasatan datang dari gerbang yang berbeza, alamat setiap cetakan sistem bertindak balas. Sekiranya tidak ada tindak balas dalam tempoh selang masa lima saat (ditukar dengan-w bendera), asterisk dicetak untuk siasatan itu.
Untuk menghalang tuan rumah destinasi daripada ditenggelami oleh pemprosesan paket probe UDP, port destinasi ditetapkan ke nilai yang tidak mungkin digunakan oleh peranti itu. Sekiranya rangkaian atau perkhidmatan di destinasi menggunakan port tersebut, tukar nilai menggunakan-p bendera.
Penggunaan dan output sampel akan mengembalikan hasil yang serupa dengan contoh ini:
yak 71% traceroute nis.nsf.net. traceroute ke nis.nsf.net (35.1.1.48), 30 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
Perhatikan bahawa garisan kedua dan ketiga adalah sama. Hasil ini berkaitan dengan kernel buggy pada sistem hop kedua-lbl-csam.arpa-yang meneruskan paket dengan TTL sifar (bug dalam versi yang diagihkan dari 4.3 BSD). Anda mesti meneka jalan yang diambil oleh paket yang merentas negara sejak NSFNet (129.140) tidak membekalkan penterjemahan alamat ke nama untuk NSSesnya.
Contoh yang lebih menarik ialah:
yak 72% traceroute allspice.lcs.mit.edu. traceroute ke allspice.lcs.mit.edu (18.26.0.115), 30 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
Perhatikan bahawa gerbang di 12, 14, 15, 16, dan 17 melorot sama ada tidak menghantar mesej "masa melebihi ICMP" atau menghantarnya dengan TTL terlalu kecil untuk menghubungi kami. Talian 14 hingga 17 menjalankan kod MIT C Gateway yang tidak menghantar mesej "masa melebihi".
Gerbang senyap 12 dalam contoh di atas mungkin disebabkan oleh bug dalam kod rangkaian BSD 23 dan derivatifnya: Mesin yang menjalankan kod 4.3 dan lebih awal menghantar mesej yang tidak dapat dicapai menggunakan apa sahaja yang kekal pada datagram TTL. Oleh kerana, untuk gerbang, TTL yang masih kosong adalah sifar, "masa melebihi ICMP" dijamin tidak akan kembali kepada kami. Tingkah laku bug ini sedikit lebih menarik apabila muncul pada sistem destinasi:
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 Cik ! 39 ms! 39 ms!
Perhatikan bahawa terdapat 12 "gerbang" (13 adalah destinasi akhir), dan separuh daripada mereka yang terakhir hilang. Apa yang sebenarnya berlaku ialah pelayan yang dinamakan rip (Sun-3 yang menjalankan Sun OS 3.5) menggunakan TTL dari datagram kami yang tiba sebagai TTL dalam jawapan ICMPnya. Oleh itu, jawapan akan berlarutan pada laluan kembali (tanpa notis yang dihantar kepada sesiapa sejak ICMPs tidak dihantar untuk ICMPs) sehingga kita menyiasat dengan TTL yang sekurang-kurangnya dua kali panjang jalannya - dengan kata lain rip hanya benar-benar tujuh hops pergi.
Tanggapan bahawa pulangan dengan TTL 1 adalah petunjuk yang ada masalah ini. Traceroute mencetak "!" selepas masa jika TTL kurang daripada atau sama dengan 1. Oleh kerana vendor menghantar banyak perisian usang (DEC's Ultrix, Sun 3.x) atau perisian tidak standard (HPUX), mengharapkan untuk melihat masalah ini dengan kerap dan berhati-hati memilih tuan rumah sasaran probe anda.
Lain-lain anotasi yang mungkin selepas masa itu! H, ! N, atau! P (tuan rumah, rangkaian, atau protokol tidak dapat dicapai),! S (laluan sumber gagal),! F- (pemecahan yang diperlukan - Nilai Penemuan MTU Path MTU dipaparkan),! X (komunikasi secara administratif dilarang),! V (pelanggaran pendahuluan hos),! C (potongan ketepatan preseden), atau! (Kod tidak dapat dihubungi ICMP). Kod-kod ini ditakrifkan oleh RFC1812, yang menggantikan RFC1716. Sekiranya hampir semua kuar menghasilkan beberapa jenis tuan rumah yang tidak dapat dihubungi, traceroute akan menyerah dan keluar.
Program ini bertujuan untuk digunakan dalam ujian, pengukuran, dan pengurusan rangkaian. Ia harus digunakan terutamanya untuk pengasingan kesalahan manual. Kerana beban yang boleh dikenakan pada rangkaian, tidak bijak menggunakan traceroute semasa operasi normal atau dari skrip automatik.