دستور Traceroute و گزینه های آن
نویسنده :
اکبر اصغری
- انتشار :
یک سال قبل
- آخرین ویرایش :
یک سال قبل
۰ بار
دستور Traceroute یکی از ساده ترین و در عین حال موثرترین راه ها برای عیب یابی مشکلات شبکه است. این نرم افزار عالی برای بررسی مسیر از یک کامپیوتر به یک نام میزبان یا یک آدرس IP است. تقریباً هر سیستم عاملی شامل آن می شود، بنابراین می توانید بدون توجه به نوع رایانه ای که استفاده می کنید از Traceroute استفاده کنید.
دستور Traceroute چیست؟
دستور Traceroute (Tracert در ویندوز) یک نرمافزار تشخیصی شبکه کوچک است که شما در دستگاه و سرورهای خود برای ردیابی مسیر، پرش (hop) به پرش به یک هدف تعبیه شدهاید. بسیاری از مدیران شبکه روزانه از دستور Traceroute استفاده می کنند.
این یک ابزار مناسب است که می توانید در سیستم های عملیاتی مختلف - ویندوز (Tracert)، macOS، Linux (Traceroute) و حتی در تلفن همراه (اندروید و iOS) استفاده کنید. برای دسترسی به traceroute، باید از ترمینال (Linux و macOS) یا Command Prompt یا همان CMD (ویندوز) استفاده کنید.
شما می توانید از Traceroute استفاده کنید و مسیر کاملی را که بسته ها به مقصد خود طی می کنند (دامنه یا آدرس IP) مشاهده کنید. جدا از آن، نام هاست و IP روترها را در راه و تأخیر، مدت زمانی که طول می کشد تا هر دستگاه داده ها را دریافت و دوباره ارسال کند، مشاهده خواهید کرد.
می توانید ببینید کدام گذرگاه (Gateway) داده های شما را از دست میدهد و بعداً می توانید آن را برطرف کنید.
چگونه کار می کند؟
هنگامی که یک traceroute را اجرا می کنید، یک بسته IP حاوی آدرس های مبدا و مقصد و زمان زنده بودن یا Time To Live (TTL) برای هر پرش (hop) ارسال می کنید.TTL در بسته ها با هر پرش کاهش می یابد. این برای جلوگیری از مشکلات حلقه سرور است (با این کار پس از مدتی بسته از بین خواهد رفت و منابع سرور آزاد میشود).علاوه بر این، زمانی که به TTL به پایان رسید، بسته منقضی می شود و دور انداخته می شود. هنگامی که این اتفاق میافتد، Traceroute پیامهای ICMP Time Exceeded (RFC 792) را به فرستنده بازمیگرداند. از آنجایی که مقدار دهی کوچک TTL باعث میشود بستهها به سرعت منقضی شوند، traceroute همه مسیریابها را در مسیر بسته مجبور میکند تا پیامهای ICMP را تولید کنند که روتر را شناسایی میکند.
برای تجسم بهتر مکانیسم کار TraceRoute ها، می توانید به تصویر زیر نگاه کنید.
چرا از دستور Traceroute یا Tracert استفاده کنیم؟
مزایای استفاده از دستور traceroute یا جایگزین آن برای ویندوز به نام دستور tracert عبارتند از:
- لیست کامل مسیر. شما تمام روترها را با آدرس IP و زمان صرف شده در راه خواهید دید. شما بهتر می توانید شبکه را درک کنید.
- زمانبندی مسیر. ببینید چقدر زمان برای تکمیل پرس و جو طول می کشد. برای شما مناسب است؟ برای سرعت بخشیدن به آن چه کاری می توانید انجام دهید؟ شما می توانید یک نقطه شروع برای بهبود داشته باشید.
- تعبیه شده است. نیازی به نصب نرم افزار اضافی ندارید و استفاده از آن رایگان است.
- بررسی کنید که آیا می توانید به یک هدف برسید.ببینید آیا ارتباطی بین دستگاه شما و نام میزبان یا آدرس IP که در دستور قرار داده اید وجود دارد یا خیر.
- مشکل روتر کند را ببینید. می توانید ببینید در هر پرش چقدر زمان می برد. بنابراین می توانید نقطه ای را ببینید که به طور قابل توجهی شبکه شما را کند می کند. میتوانید مشکل را برطرف کنید یا آن محل را تقویت کنید.
چه زمانی به آن نیاز خواهید داشت؟
در اینجا چندین سناریو وجود دارد که در آن استفاده از ردیاب برای تشخیص مشکلی که دارید میتواند ضروری باشد.
سایت زیاد قطع و وصل میشد یا کند بود
اگر متوجه شدید که به کندی کار می کند، یک traceroute را از رایانه خود به وب سایت خود اجرا کنید. با آن، مشکلات شبکه بین موقعیت مکانی خود و سرور را بررسی خواهید کرد.
به پایان رسیدن مهلت زمانی مشتریان برای ارسال ایمیل
اگر مشکلی در اتصال ایمیل خود دارید، یک traceroute را برای ارزیابی کیفیت اتصال به سرور ایمیل اجرا کنید. علاوه بر این، می توانید IP سرور ایمیل خود را با اجرای دستور زیر پیدا کنید: "ping smtp.server.com". (در اینجا آدرس smtp.server.com یک نمونه میباشد) آدرس IP سرور پروتکل انتقال ایمیل ساده (SMTP) را که برای اهداف Traceroute به آن نیاز دارید، برمی گرداند.
چگونه از دستور Traceroute استفاده کنیم؟
از دستور Traceroute با نوشتن دستور “traceroute + domain.com / IP address” در ترمینال در Linux و macOS یا "tracert + domain.com / IP address" در Command Prompt در ویندوز استفاده کنید.
Traceroute (لینوکس و macOS)
traceroute domian.com یا traceroute 12.23.34.45
Tracert (ویندوز)
tracert domian.com یا tracert 12.23.34.45
در macOS، میتوانید از ابزار Traceroute نیز استفاده کنید. دکمه فرمان + فاصله را فشار دهید. سپس Network Utility را بنویسید. در داخل آن، به Traceroute بروید. نام میزبان یا آدرس IP را بنویسید و اینتر را فشار دهید. نتیجه را به شما نشان خواهد داد.
*میتوانید domain.com را با دامنه دیگری که میخواهید بررسی کنید تغییر دهید، و همین امر در مورد آدرس IP نیز صدق میکند.
تفاوت هایی بین دستور Traceroute و Tracert وجود دارد. که در ادامه به آن میپردازیم.
دستور Traceroute در مقابل دستور Tracert
جدا از تفاوت کوچک بین تایپ کردن traceroute و Tracert، این واقعیت که اولی روی لینوکس و macOS کار میکند و دومی در ویندوز، تفاوتهای مهم دیگر عبارتند از نحوه دستورات و آپشن ها.
نحو دستورات traceroute و Tracert
traceroute [options] host_Address [pathlength] (Linux)
traceroute [options] host [packetsize] (macOS)
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name (Windows)
نمونه ای از Traceroute (Tracert در ویندوز)
نام Traceroute در ویندوز Tracert است. روش کار آن بسیار شبیه به نسخه در سیستم عامل های دیگر است.
و دستور Traceroute در لینوکس و macOS به این صورت است:
گزینههای Traceroute برای لینوکس
اگر کاربر لینوکس (Ubuntu، Linux Mint، Manjaro، Red Hat، Debian و …) هستید، می توانید دستور traceroute خود را با گزینه های زیر مشخص کنید:
Option | Description |
–help | Information about the command. |
-d | This command enables debugging on Linux. |
-F | Forbid fragmentation. |
-f first_ttl | Put the first TTL value of the packet. |
-g gateway | Define a loose source route gateway. |
-i interface | Set the interface for the probes. |
-m max_ttl | The TTL in traceroute means the maximum amount of hops. |
-N | The number of probes that are sent at the same time (simultaneously). |
-n | Stop the resolving of the IP addresses. |
-p port | Define the port for the query. |
-t | Set the type-of-service in probes. |
-w waittime | Maximum waiting time for each of the replies. |
-q nqueries | Set the number of queries. The default value is 3. |
-r | Bypass the routing tables and send them to the host directly (on an attached network only). |
-S srcaddr | IPv6 only – source address. |
-e | Show ICMP extensions. |
-A | AS lookups enable for each hop. |
-V | Show version. |
-U | Use a particular UDP port. The default value is 53. |
-UL | Use the UDPLITE for the query. |
-P protocol | Send packets of a specified IP protocol. |
-I | Use the ICMP echo for the requests. |
-T | Use the TCP SYN for the requests. |
-4 | Use only IPv4 addresses |
-6 | Use only IPv6 addresses |
گزینه های Traceroute برای ویندوز
برای انجام تست های دقیق تر می توانید از دستور Tracert با گزینه های مختلف استفاده کنید. گزینه های زیر روی ویندوز ویستا، ویندوز 7، ویندوز 8 و البته ویندوز 10 کار می کنند.
Option | Description |
-d | Do not resolve addresses to hostnames. |
-h aximum_hops | Maximum number of hops to search for target. You can put higher than 30, if you want to query a very remote target. |
-j host-list | Loose source route along host-list (IPv4-only). Show only IPv4 addresses. |
-w timeout | Wait timeout milliseconds for each reply. Inscrease it, to see more about slower routers. |
-R | Trace round-trip path (IPv6-only). |
-S srcaddr | Source address to use (IPv6-only). |
-4 | Force using IPv4. |
-6 | Force using IPv6. |
گزینه های Traceroute برای macOS
در حالی که دستور Traceroute در macOS بسیار شبیه به نسخه لینوکس آن است، تفاوت های کوچکی در گزینه های آنها وجود دارد.
Option | Description |
-a | AS# lookups enable for each hop. |
-d | Socket level debugging. |
-D | When an ICMP response to our probe datagram is received, print the differences between the transmitted packet and the packet quoted by the ICMP response. |
-e | Mode – Firewall evasion. The ports for UDP and TCP will be fixed and won’t increase with each hop. |
-f first_ttl | Put the first TTL value of the packet. |
-F | Forbid fragmentation. |
-g gateway | Define a loose source route gateway. |
-i iface | Set the interface for the probes. |
-I | Use the ICMP echo for the requests. |
-M first_ttl | Same as -f. |
-m max_ttl | Set the maximum amount of hops. By default, it is set to 30. |
-n | Show the hop addresses numerically. |
-P proto | Send packets of a specified IP protocol. |
-p port | Define the port for the query. |
-q nqueries | Put a specific number of queries. The default value is 3. |
-r | Bypass the routing tables and send them to the host directly (on an attached network only). |
-S srcaddr | IPv6 only – source address. |
-S | Summary of unanswered probes. |
-t | Set the type-of-service in probes. |
-v | Verbose output. |
-w | Set waiting interval (in seconds) for a response. The default value is 3. |
-x | Toggle IP checksums. |
-z | Set a pause (in seconds) between the probes. The default value is 0. |
TTL و Traceroute
هر بسته ای که ارسال می کنید حاوی یک TTL (زمان حیات) است. این یک زمان نیست، بلکه یک محدودیت از پرش (hop) هایی است که میتوان قبل از رسیدن به نتیجه انجام داد.
حد معمول 30 است، اما برای مثال می تواند بیشتر از 64 باشد. این محدودیت دادههای شما را پس از مقدار مشخصی پرش متوقف میکند تا برای همیشه از بین نرود. بسته IP تا زمانی که با خطا های «زمان بیش از حد» یا «پورت غیرقابل دسترس» نشود دنبال می شود تا به هاست برسد.
با شروع از 30، در پرش بعدی، به 29 کاهش می یابد و به همین ترتیب. اگر دامنه یا IP مورد نظر شما را پیدا نکند، پیغامی نشان میدهد که کجا انجام نشد، بنابراین میدانید مشکل از کجاست.
تفاوت بین Ping و Traceroute
هر دو Ping و Traceroute ابزارهایی برای تجزیه و تحلیل شبکه ها هستند. با این حال، Traceroute کمی پیشرفته تر است. به عنوان مثال، پینگ اتصال بین دو میزبان را بررسی می کند اما مسیر بین آنها را نشان نمی دهد. در مقابل، Traceroute هر توقف بین مبدا و مقصد نهایی را نشان می دهد. این می تواند زمانی مفید باشد که اتصال تکه تکه باشد، مانند زمانی که تنها 50 درصد از تلاش های پینگ بین دو مکان نتیجه میدهد.
بنابراین، به طور خلاصه، دستور Traceroute را می توان برای شناسایی مشکلات اتصال استفاده کرد، در حالی که پینگ یک رویکرد سریع برای تعیین اینکه آیا میزبان از طریق شبکه قابل دسترسی است یا خیر. آگاهی از هر دوی این دستورات مفید است زیرا دانستن اینکه چگونه کار می کنند و خروجی آنها چه چیزی را نشان می دهد می تواند هنگام تجزیه و تحلیل مسائل اتصال شبکه بسیار ارزشمند باشد.
محدودیت های Traceroute
- مسیر را در سطح رابط ایجاد می کند تا در سطح روتر.
- اگر فایروالهایی بین مسیریابهای مبدأ و مقصد وجود داشته باشد که از ارسال بستههای پروب جلوگیری میکند، Traceroute ممکن است پس از عبور از حداکثر تعداد پرشها پاسخ ندهد. علاوه بر این، با وجود آدرس IP hops، روتر در صورت عدم دریافت پاسخ، * (ستاره) را نمایش می دهد. بنابراین استفاده از تراسروت در این شرایط پیشنهاد نمی شود.
- بر اساس هدرهای IP، روترهای متعادل کننده بار می توانند ترافیک را از طریق تعدادی مسیر متفاوت هدایت کنند. بنابراین، اگر در این مورد یک traceroute را اجرا کنیم، مسیر نادرستی بین مبدا و هدف را به ما می دهد. بر این اساس، استفاده از تراسروت در این شرایط نیز توصیه نمی شود.
آیا جایگزینی برای دستور traceroute وجود دارد؟
بله، جایگزین های مختلفی برای دستورات traceroute مانند دستور MTR، فرمان Dig، Open Visual Traceroute، Nmap وجود دارد.
دستور MTR (لینوکس و macOS)
mtr domain.com
دستور MTR یک فرمان traceroute بهبود یافته است که می تواند آمار و داده های بیشتری را برای بسته های گم شده (درصد) ارائه دهد.
دستور Dig (لینوکس و macOS)
dig +trace domain.com
اگر قبلاً از دستور Dig استفاده می کنید، می توانید از آن برای ردیابی مسیر نیز استفاده کنید.
Open Visual Traceroute (لینوکس، macOS و ویندوز)
این یکی برای افرادی است که یک رابط بصری می خواهند. سنگینتر است، اما میتواند به صورت گرافیکی مسیر پرس و جوها را به شما نشان دهد و همچنین نمودارهای گانت را دریافت کند.
Nmap (Linux، macOS، Windows، BSD، و بیشتر)
nmap –traceroute domain.com
نتایج بسیار شبیه به دستور traceroute است.
نتیجه
با استفاده از دادههای تازه جمعآوریشده، میتوانید مشاهده کنید که آیا مشکلی در مسیر وجود دارد (سرور پاسخگو نیست یا خیلی کند است) و بعداً توجه خود را برای رفع آن متمرکز کنید. اگر میخواهید چند ابزار دیگر را ببینید.