כיצד להשתמש בפקודה 'traceroute' בלינוקס

מה צריך לדעת

  • הפרמטר היחיד שאתה חייב לכלול עם פקודת traceroute הוא שם המארח או כתובת ה-IP של היעד.
  • התחל בדיקות עם TTL של אחד והגדל באחד עד שתקבל ICMP "יציאה בלתי ניתנת להשגה" או תגיע לערך מקסימלי של ניסיונות.

מאמר זה מכסה מידע traceroute הרלוונטי למכונות Linux וכולל הסברים על מתג פקודה וכן מידע על אופן פירוש התוצאות. Traceroute הוא בשימוש שונה ב-Windows.

איך Traceroute עובד

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

מכיוון שכל קפיצה ברשומה משקפת שרת או נתב חדש בין המחשב המקורי למחשב המיועד היעד, סקירת התוצאות של סריקת traceroute מזהה נקודות איטיות שעלולות להשפיע לרעה על הרשת שלך תְנוּעָה.

פתרון בעיות עם Traceroute

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

הפרמטר היחיד שאתה חייב לכלול בעת ביצוע הפקודה traceroute הוא שם המארח או כתובת ה-IP של היעד.

תחביר Traceroute ומתגים

צילום מסך של תחביר traceroute באובונטו
תחביר Traceroute באובונטו.

Traceroute עוקב אחר התחביר הכללי הבא:

traceroute [-dFInrvx] [-f first_ttl] [-g gateway] [-i iface] [-m max_ttl] [-p port] [-q nqueries] [-s src_addr] [-t tos] [-w waittime] [ -z pausemsecs ] מארח [ packetlen ] 

ניתן לשנות את הביצועים או הפלט של הפקודה על ידי ציון מתג אופציונלי אחד או יותר.

מתגי פיקוד Traceroute
החלף הֶסבֵּר
הגדר את זמן החיים הראשוני בשימוש בחבילת הבדיקה היוצאת הראשונה.
הגדר את סיביות "אל תפרג".
אפשר איתור באגים ברמת השקע.
ציין שער נתיב מקור רופף (8 מקסימום).
-אני ציין ממשק רשת כדי לקבל את כתובת ה-IP המקור עבור מנות בדיקה יוצאות. זה בדרך כלל שימושי רק במארח מרובה ביתים. (ראה את  סמן לדרך אחרת לעשות זאת.)
-אני השתמש ב-ICMP ECHO במקום דגימות נתונים של UDP.
-M הגדר את הזמן המקסימלי לחיים (מספר המקסימום של הקפות) בשימוש במנות בדיקה יוצאות. ברירת המחדל היא 30 הקפות (אותה ברירת מחדל המשמשת לחיבורי TCP).
כתובות הופ להדפסה מספרית ולא סמלית ומספרית (שומר חיפוש כתובת-שם של שרת שמות עבור כל שער שנמצא בנתיב).
-עמ' הגדר את מספר יציאת ה-UDP הבסיסי המשמש בבדיקות (ברירת המחדל היא 33434). Traceroute מקווה ששום דבר לא מאזין ביציאות UDP בסיס ל בסיס + nhops - 1 במארח היעד (לכן הודעת ICMP PORT_UNREACHABLE תוחזר כדי לסיים את מעקב המסלול). אם משהו מאזין ביציאה בטווח ברירת המחדל, ניתן להשתמש באפשרות זו כדי לבחור טווח יציאות שאינו בשימוש.
עוקף את טבלאות הניתוב הרגילות ושלח ישירות למארח ברשת מחוברת. אם המארח לא נמצא ברשת מחוברת ישירות, מוחזרת שגיאה. ניתן להשתמש באפשרות זו כדי לבצע פינג למארח מקומי דרך ממשק שאין לו מסלול דרכו (למשל, לאחר שהממשק ירד על ידי מוּכרָע(8C)).
השתמש בכתובת ה-IP הבאה (שבדרך כלל ניתנת כמספר IP, לא כשם מארח) ככתובת המקור במנות בדיקה יוצאות. במארחים מרובי בית (אלו עם יותר מכתובת IP אחת), ניתן להשתמש באפשרות זו כדי לאלץ את כתובת המקור להיות משהו אחר מאשר כתובת ה-IP של הממשק עליו נשלחת חבילת הבדיקה. אם כתובת ה-IP אינה אחת מכתובות הממשק של מחשב זה, מוחזרת שגיאה ושום דבר לא נשלח. (ראה את -אני סמן לדרך אחרת לעשות זאת.)
הגדר את סוג שירות במנות בדיקה לערך הבא (ברירת מחדל אפס). הערך חייב להיות מספר שלם עשרוני בטווח 0 עד 255. ניתן להשתמש באפשרות זו כדי לראות אם סוגים שונים של שירות מביאים לנתיבים שונים. (אם אתה לא מפעיל 4.4bsd, זה עשוי להיות אקדמי, מכיוון ששירותי הרשת הרגילים כמו telnet ו-ftp אל תיתן לך לשלוט בתנאי השירות.) לא כל הערכים של TOS הם חוקיים או בעלי משמעות - עיין במפרט ה-IP עבור הגדרות. ערכים שימושיים הם כנראה `16' (השהיה נמוכה) ו-'8' (תפוקה גבוהה).
-v פלט מפורט. מנות ICMP שהתקבלו מלבד TIME_EXCEEDED ו-UNREACHABLEs מופיעות.
-וו הגדר את הזמן (בשניות) להמתנה לתגובה לבדיקה (ברירת מחדל 5 שניות).
-איקס החלף IP סכומי בדיקה. בדרך כלל, זה מונע מ-traceroute לחשב סכימי בדיקת IP. במקרים מסוימים, ה מערכת הפעלה יכול להחליף חלקים מהחבילה היוצאת אך לא לחשב מחדש את סכום הבדיקה; לפיכך, במקרים מסוימים ברירת המחדל היא לא לחשב סכומי ביקורת ושימוש -איקס גורם לחישובם. שימו לב שסכומי בדיקה נדרשים בדרך כלל עבור הקפיצה האחרונה בעת שימוש בבדיקות ICMP ECHO (-אני), כך שהם תמיד מחושבים בעת שימוש ב-ICMP.
הגדר את הזמן (במילישניות) להשהיה בין בדיקות (ברירת מחדל 0). מערכות מסוימות כגון Solaris ונתבים מ-Cisco, מגבילות שיעור הודעות icmp. ערך טוב לשימוש עם זה הוא 500 (למשל, 1/2 שנייה).

פירוש התוצאות

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

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

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

דוגמאות לתוצאות Traceroute

שימוש ופלט לדוגמה יחזירו תוצאות דומות לדוגמא זו:

[יאק 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 לילך-dmc. ברקלי. EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 לילך-dmc. ברקלי. EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc. ברקלי. EDU (128.32.136.23) 39 ms 40 ms 39 ms
5 ccn-nerif22.ברקלי. 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

השורה השנייה והשלישית זהה. תוצאה זו מתייחסת לגרעין באגי במערכת ההופ השנייה - lbl-csam.arpa - המעביר מנות עם TTL אפס (באג בגרסה המבוזרת של 4.3 BSD). עליך לנחש באיזה נתיב המנות עוברות בין מדינות מכיוון שה-NSFNet (129.140) אינו מספק תרגומי כתובת לשם עבור ה-NSS שלו.

דוגמה לשער שקט

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

[יאק 72]% traceroute allspice.lcs.mit.edu.
traceroute to allspice.lcs.mit.edu (18.26.0.115), מקסימום 30 כשות
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 לילך-dmc. ברקלי. EDU (128.32.216.1) 19 ms 19 ms 19 ms
3 לילך-dmc. ברקלי. EDU (128.32.216.1) 39 ms 19 ms 19 ms
4 ccngw-ner-cc. ברקלי. EDU (128.32.136.23) 19 ms 39 ms 39 ms
5 ccn-nerif22.ברקלי. 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 ו-17 דילוגים משם לא שולחים הודעות ICMP "חריגה מהזמן" או שולחים אותן עם TTL קטן מכדי להגיע אלינו. שורות 14 עד 17 מריצים את קוד MIT C Gateway שאינו שולח הודעות "עבר זמן".

השער השקט 12 בדוגמה שלעיל עשוי להיות תוצאה של באג בקוד רשת 4.[23]BSD ושלו נגזרות: מכונות הפועלות בקוד 4.3 ומעלה שולחות הודעה בלתי ניתנת להשגה באמצעות כל ה-TTL שנותר ב- דאטהגרם מקורי. עבור שערים, ה-TTL הנותר הוא אפס, מובטח ש"זמן חריגה" של ICMP לא יחזור אלינו.

דוגמה לשער שקט של מערכת יעד

ההתנהגות של באג זה קצת יותר מעניינת כאשר הוא מופיע במערכת היעד:

1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 לילך-dmc. ברקלי. EDU (128.32.216.1) 39 ms 19 ms 39 ms
3 לילך-dmc. ברקלי. EDU (128.32.216.1) 19 ms 39 ms 19 ms
4 ccngw-ner-cc. ברקלי. EDU (128.32.136.23) 39 ms 40 ms 19 ms
5 ccn-nerif35.ברקלי. EDU (128.32.168.35) 39 ms 39 ms 39 ms
6 csgw. ברקלי. EDU (128.32.133.254) 39 ms 59 ms 39 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 קרע. ברקלי. EDU (128.32.131.22) 59 MS! 39 אלפיות השנייה! 39 אלפיות השנייה!

שימו לב שקיימים 12 "שערים" (13 הוא היעד הסופי), והחצי האחרון שלהם חסר. מה שבאמת קורה הוא שהשרת נקרא ז"ל (Sun-3 המריץ את Sun OS 3.5) משתמש ב-TTL מה-datagram המגיע שלנו בתור TTL בתשובת ה-ICMP שלו. אז, פסק הזמן של התשובה בנתיב החזרה (ללא הודעה לאף אחד מכיוון ש-ICMPs לא נשלחים עבור ICMPs) עד שנבדוק עם TTL שלפחות פי שניים מאורך הנתיב - במילים אחרות, rip הוא באמת רק שבעה דילוגים רָחוֹק.

תשובה שחוזרת עם TTL של 1 היא רמז לבעיה זו. Traceroute מדפיס א! לאחר הזמן אם ה-TTL קטן או שווה ל-1. מאחר שספקים שולחים הרבה תוכנות מיושנות (Ultrix, Sun 3.x של DEC) או לא סטנדרטיות (HPUX), צפו לראות את הבעיה הזו לעיתים קרובות ותדאג לבחור את מארח היעד של הבדיקות שלך.

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

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