פיקוד לינוקס

traceroute - להדפיס את מנות המסלול לקחת מארח הרשת

תַקצִיר

traceroute [ -dFInrvx ] [ -f first_ttl ] [ -G gateway ]

[ -i iface ] [ -m max_ttl] [ -p port ]

[ -q nqueries ] [ -src_addr ] [ -t tos ]

[ -Ww waittime ] [ -z pausemsecs ]

מארח [ packetlen ]

תיאור

האינטרנט הוא צבירה גדולה ומורכבת של חומרת הרשת, המחוברת יחד בשערים. מעקב אחר המסלול של החבילות שאחריו (או מציאת השער המפריע שמשליך את החבילות) יכול להיות קשה. Traceroute מנצל את פרוטוקול IP `זמן לחיות 'שדה ומנסה לעורר תגובה ICMP TIME_EXCEEDED מ כל שער לאורך השביל כדי לארח כמה.

הפרמטר המחייב היחיד הוא שם המארח של היעד או מספר ה- IP . אורך ברירת המחדל של datagram של החללית הוא 40 בתים , אך ניתן להגדיל זאת על ידי ציון אורך מנה (בבתים) לאחר שם המארח של היעד.

אפשרויות אחרות הן:

-f

הגדרת הראשונית זמן לחיות בשימוש מנות בדיקה יוצאת הראשונה.

-F

הגדר את "לא קטע" קצת.

ד

אפשר איתור באגים ברמת השקע.

-g

ציין שער נתיב מקור רופף (8 מרבי).

-אני

ציין ממשק רשת כדי לקבל את כתובת ה- IP של המקור עבור מנות בדיקה יוצאות. זה בדרך כלל שימושי רק על המארח רב homed. (ראה את הדגל של דרך אחרת לעשות זאת).

-אני

השתמש ב- ICMP ECHO במקום בתצורות UDP.

-M

הגדר את הזמן המקסימלי להפעלה (מספר מרבי של כשות) המשמש בחבילות בדיקה יוצאות. ברירת המחדל היא 30 כשות (ברירת המחדל המשמשת לחיבורי TCP).

-n

הדפס כתובות הופ באופן מספרי ולא באופן סמלי ומספרי (שומר בדיקת שמות של שמות לפי שם עבור כל שער שנמצא בנתיב).

-p

הגדר את מספר היציאה UDP הבסיסי המשמש בבדיקות (ברירת המחדל היא 33434). Traceroute מקווה ששום דבר לא מקשיב על בסיס יציאות UDP לבסיס + nhops - 1 במארח היעד (כך שהודעת ICMP PORT_UNREACHABLE תוחזר לסיום נתיב המסלול). אם משהו מקשיב ליציאה בטווח ברירת המחדל, אפשרות זו יכולה לשמש לבחירת טווח יציאות שלא נעשה בו שימוש.

-r

עקוף את טבלאות הניתוב הרגילות ושלח ישירות למארח ברשת מצורפת. אם המארח אינו מחובר ישירות לרשת, שגיאה מוחזרת. אפשרות זו יכולה לשמש פינג מארח המקומי באמצעות ממשק שאין לו דרך דרכו (למשל, לאחר ממשק ירד על ידי מנותב (8C)).

- s

השתמש בכתובת ה- IP הבאה (שבדרך כלל ניתנת כמספר IP, לא כמארח) ככתובת המקור בחבילות בדיקה יוצאות. על המארחים רב homed (עם יותר מכתובת IP אחת), אפשרות זו ניתן להשתמש כדי לאלץ את כתובת המקור להיות משהו אחר מאשר כתובת ה- IP של הממשק מנות בדיקה נשלחת ב. אם כתובת ה- IP אינה אחת ממאפייני הממשק של ההתקן, שגיאה מוחזרת ושום דבר לא נשלח. (ראה את הדגל -I כדי לעשות זאת בדרך אחרת).

-t

הגדר את סוג השירות בחבילות בדיקה לערך הבא (ברירת מחדל אפס). הערך חייב להיות מספר שלם עשרוני בטווח 0 עד 255. אפשרות זו יכולה לשמש כדי לראות אם סוגי שירות שונים גורמים לנתיבים שונים. (אם אתה לא פועל 4.4bd, זה עשוי להיות אקדמי מאז שירותי רשת רגילה כמו Telnet ו FTP לא מאפשרים לך לשלוט על TOS). לא כל הערכים של TOS הם משפטיים או משמעותיים - ראה מפרט IP להגדרות. ערכים שימושיים הם כנראה ' 16 ' (עיכוב נמוך) ו -8 '(תפוקה גבוהה).

-v

פלט verbose. ניתן לקבל מנות ICMP שהתקבלו מלבד TIME_EXCEEDED ו- UNREACHABLE.

-W

הגדר את הזמן (בשניות) להמתין לתגובה על בדיקה (ברירת המחדל היא 5 שניות).

-איקס

החלף ip checkums. בדרך כלל, זה מונע traceroute מחשוב checkums IP. במקרים מסוימים, מערכת ההפעלה יכולה להחליף חלקים מהחבילה היוצאת, אך לא לחשב מחדש את בדיקת המצב (כך שבמקרים מסוימים ברירת המחדל היא לא לחשב checksums ושימוש -x גורם להם להיות calcual). שים לב כי בדיקות נדרשים בדרך כלל עבור הופ האחרון בעת ​​שימוש ICMP ECHO בדיקות ( -I ). אז הם מחושבים תמיד בעת שימוש ICMP.

-z

הגדר את הזמן (במילי שניות) כדי להשהות בין בדיקות (ברירת מחדל 0). כמה מערכות כגון Solaris ונתבים כגון Ciscos שיעור להגביל הודעות ICMP. ערך טוב לשימוש עם זה הוא 500 (למשל 1/2 שנייה).

תוכנית זו מנסה לעקוב אחר המסלול מנות IP היה לעקוב אחר כמה האינטרנט המארח על ידי השקת מנות בדיקה UDP עם ttl קטן (זמן לחיות) ולאחר מכן האזנה ICMP "זמן חרג" תשובה משער. אנחנו מתחילים את בדיקות שלנו עם ttl של אחד ולהגדיל על ידי אחד עד שאנחנו מקבלים "ICMP" נמל נגיש "(כלומר, הגענו" המארח ") או להכות מקס (אילו ברירות המחדל ל 30 כשות & ניתן לשנות עם -M דֶגֶל). שלוש בדיקות (שינוי עם דגל) נשלחו בכל הגדרה ttl ו קו מודפס מראה את ttl, כתובת של שער וזמן הנסיעה הלוך ושוב של כל בדיקה. אם תשובות הבדיקה מגיעות משערים שונים, הכתובת של כל מערכת מגיבה תודפס. אם אין תגובה בתוך 5 שניות. מרווח זמן קצוב (השתנה עם דגל), מודפס "*" עבור בדיקה זו.

אנחנו לא רוצים את המארח היעד לעבד את מנות בדיקה UDP אז יציאת היעד מוגדר ערך סביר (אם כמה קלוד על היעד משתמשת ערך זה, זה יכול להיות שונה עם דגל).

דוגמה לשימוש ופלט עשויה להיות:

[yak 71]% traceroute nis.nsf.net. traceroute ל nis.nsf.net (35.1.1.48), 30 כובעים מקסימום, 38 בתים מנות 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 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms 5 ccn (128.32.168.22) 39 ms 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. (129.140.70.13) 99 ms 99 ms 80 ms 80 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 0.188) 239 ms 239 ms 239 ms

שים לב כי שורות 2 & 3 זהים. הסיבה לכך היא ליבה באגי על מערכת 2 הופ - lbl-csam.arpa - כי מעביר מנות עם אפס ttl (באג בגירסה מבוזרת של 4.3BSD). שים לב כי אתה צריך לנחש איזה נתיב מנות מנותחים cross-country מאז NSFNet (129.140) אינו מספק כתובת אל שם תרגום עבור NSSes שלה.

דוגמה מעניינת יותר היא:

[יאק 72]% traceroute allspice.lcs.mit.edu. (18.3.0.115), 30 hops מקסימום 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 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22 (128.32.168.22) 20 ms 39 ms 39 ms 39 128 ms2.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 & 17 קופץ או לא לשלוח ICMP "זמן חרג" הודעות או לשלוח אותם עם ttl קטן מדי כדי להגיע אלינו. 14-17 מפעילים את קוד MIT C Gateway שלא שולח "זמן חריגה" s. אלוהים יודע רק מה קורה עם 12.

השער השקט 12 לעיל יכול להיות תוצאה של הבאג בקוד 4. [23] קוד רשת BSD (ונגזרותיו): 4.x (x <= 3) שולחת הודעה שלא ניתן להגיע אליה תוך שימוש ב- ttl שנשאר במקור datagram. מאז, לשערים, ttl הנותר הוא אפס, "זמן ICMP" חרגה זמן לא מובטחת לא לעשות את זה בחזרה אלינו. ההתנהגות של הבאג הזה קצת יותר מעניינת כאשר הוא מופיע במערכת היעד:

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 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 39 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 rip.Berkeley.EDU (128.32.131.22) 59 גברת ! 39 ms! 39 ms!

שימו לב כי ישנם 12 "שערי" (13 הוא היעד הסופי) ואת בדיוק את המחצית האחרונה של "חסרים". מה שקורה באמת הוא זה לקרוע (שמש -3 פועל יום ראשון OS3.5) משתמש ttl שלנו מגיע datagram כמו ttl בתשובה ICMP שלה. אז, את התשובה יהיה פסק זמן על נתיב לחזור (ללא הודעה שנשלחו לאף אחד מאז ICMP לא נשלחים עבור ICMP של) עד ​​שאנחנו לחקור עם ttl זה לפחות פעמיים אורך הנתיב. כלומר, לקרוע הוא רק 7 רק משם. תשובה שחוזרת עם ttl של 1 היא רמז בעיה זו קיימת. Traceroute מדפיס "!" לאחר הזמן, אם ה- ttl הוא <= 1. מאחר שספקים שולחים הרבה תוכנות מיושנות (DEC's Ultrix, Sun 3.x) או תוכנה לא סטנדרטית (HPUX), מצפים לראות את הבעיה לעתים קרובות ו / או לטפל בזהירות בבחירת היעד שורה של בדיקות שלך.

הערות אפשריות אחרות לאחר הזמן, H !, N או ! P (מארח, רשת או פרוטוקול שלא ניתן להגיע אליו), S (נתיב המקור נכשל), F- (פיצול הדרוש - מוצג ערך גילוי ה- MTU של RFC1191), X (איסור תקשורתי אסור), V (הפרת קדימות של המארח), C (קדימות ניתוק למעשה), או ! (קוד ICMP בלתי נגיש). אלה מוגדרים על ידי RFC1812 (המחליף את RFC1716). אם כמעט כל בדיקות לגרום איזשהו unachachable, traceroute יוותרו ויוצאים.

תוכנית זו מיועדת לשימוש בבדיקות רשת, מדידה וניהול. יש להשתמש בו בעיקר לבדיקת תקלות ידנית. בגלל עומס זה יכול להטיל על הרשת, זה לא חכם להשתמש traceroute במהלך פעולות רגילות או סקריפטים אוטומטיים.

ראה גם

pathchar (8), netstat (1), ping (8)