این راهنما به شما نشان میدهد چگونه از MTR (My Traceroute) و Traceroute برای عیبیابی مشکلات اتصال شبکه، شناسایی نقاط تأخیر و تحلیل کیفیت اتصال شبکه خود استفاده کنید.
📋 پیشنیازها
- یک سرور VPS با دسترسی روت (root) یا sudo
- یک اتصال SSH فعال
- Ubuntu/Debian (دستورها برای این توزیعها تنظیم شدهاند)
🔧 نصب
نصب Traceroute (ابزار پایه)
Bash# Sur Ubuntu/Debian sudo apt update sudo apt install traceroute -y
نصب MTR (ابزار پیشرفته)
MTR قابلیتهای ping و traceroute را در یک ابزار قدرتمند ترکیب میکند.
Bash# Sur Ubuntu/Debian sudo apt update sudo apt install mtr-tiny -y # Pour la version complète avec interface graphique (optionnel) sudo apt install mtr -y
بررسی نصب
Bash# Vérifier que traceroute est installé traceroute --version # Vérifier que MTR est installé mtr --version
🛠️ استفاده از Traceroute
دستور پایه
Bash# Traceroute vers une destination traceroute google.com # Traceroute vers une IP traceroute 8.8.8.8 # Limiter le nombre de sauts (par défaut 30) traceroute -m 20 google.com # Spécifier le timeout en secondes traceroute -w 5 google.com
گزینههای کاربردی
Bash# Utiliser UDP (par défaut) traceroute -U google.com # Utiliser TCP (plus fiable) traceroute -T google.com # Utiliser ICMP (comme ping) traceroute -I google.com # Ne pas résoudre les noms DNS (plus rapide) traceroute -n google.com
نمونه خروجی
traceroute to google.com (142.250.185.14), 30 hops max, 60 byte packets
1 10.0.0.1 (10.0.0.1) 0.123 ms 0.089 ms 0.067 ms
2 192.168.1.1 (192.168.1.1) 5.234 ms 5.189 ms 5.145 ms
3 * * *
4 8.8.8.8 (8.8.8.8) 12.456 ms 12.389 ms 12.334 ms
...
🚀 استفاده از MTR (پیشنهادی)
MTR قدرتمندتر است، زیرا بستهها را بهطور پیوسته ارسال میکند و آمار را بهصورت لحظهای محاسبه میکند.
دستور پایه
Bash# MTR en mode interactif (recommandé) mtr google.com # MTR avec rapport (non-interactif) mtr --report google.com # MTR avec 10 paquets de test mtr --report --report-cycles 10 google.com # MTR vers une IP mtr --report 8.8.8.8
گزینههای پیشرفته
Bash# Spécifier le nombre de paquets à envoyer mtr --report --report-cycles 50 google.com # Utiliser TCP au lieu d'ICMP mtr --tcp --port 80 google.com # Utiliser UDP mtr --udp --port 53 8.8.8.8 # Ne pas résoudre les noms DNS mtr --no-dns google.com # Intervalle entre les paquets (en secondes) mtr --interval 2 google.com # Taille des paquets (en octets) mtr --psize 64 google.com
حالت تعاملی MTR
وقتی mtr را بدون گزینه --report اجرا کنید، وارد حالت تعاملی میشوید:
- d: نمایش/پنهان کردن آمار تفصیلی
- n: فعال/غیرفعال کردن حالت DNS (تبدیل نامها)
- r: بازنشانی آمار
- s: تغییر اندازه بستهها
- j: تغییر فاصله بین بستهها
- q: خروج از MTR
📊 تفسیر نتایج
تأخیر عادی
- < 50 ms: عالی، شبکه محلی یا بسیار نزدیک
- 50-100 ms: خوب، اتصال منطقهای
- 100-200 ms: قابل قبول، اتصال بینقارهای
- > 200 ms: بالا، میتواند مشکل ایجاد کند
بستههای ازدسترفته
- 0%: عالی
- < 1%: برای اتصال اینترنت عادی است
- 1-5%: قابل قبول اما میتواند مشکل ایجاد کند
- > 5%: مشکلساز، نیازمند بررسی
معنی ستارهها (*)
در traceroute، یک * به این معنی است:
- فقط یک * بهجای زمان: مسیریاب به این بسته خاص پاسخ نداده است
- سه * پشتسرهم: مسیریاب اصلاً پاسخ نداده است (تایماوت یا فیلتر فایروال)
🎯 موارد استفاده
عیبیابی تأخیر بالا
Bash# Tester vers Google DNS mtr --report --report-cycles 30 8.8.8.8 # Tester vers Cloudflare DNS mtr --report --report-cycles 30 1.1.1.1 # Identifier le saut problématique mtr --report --report-cycles 50 votre-domaine.com
عیبیابی ازدسترفتن بستهها
Bash# Test avec TCP pour contourner les filtres ICMP mtr --tcp --port 443 --report --report-cycles 50 google.com # Test vers un serveur spécifique mtr --report --report-cycles 100 votre-serveur.com
آزمایش از VPS به لوکیشن شما
Bash# Tester vers votre adresse IP publique # Récupérez votre IP publique d'abord curl ifconfig.me # Puis testez depuis votre VPS mtr --report --report-cycles 30 VOTRE_IP_PUBLIQUE
🔍 عیبیابی مشکلات رایج
مشکل: تأخیر بالا روی یک گام مشخص
اگر روی یک گام میانی تأخیر بالایی میبینید:
Bash# Tester avec différents protocoles mtr --tcp --port 443 --report google.com mtr --udp --port 53 --report 8.8.8.8 mtr --report google.com
مهم: تأخیر بالا روی یک گام میانی میتواند عادی باشد، اگر آن مسیریاب به درخواستهای عیبیابی سریع پاسخ ندهد، اما تأخیر نهایی خوب بماند.
مشکل: ازدسترفتن زیاد بستهها
اگر ازدسترفتن بالای بستهها را میبینید:
Bash# Tester avec plus de paquets pour confirmer mtr --report --report-cycles 100 destination.com # Tester avec TCP si ICMP est filtré mtr --tcp --port 80 --report --report-cycles 50 destination.com
توجه: اگر ازدسترفتن بسته روی همه گامها دیده شود، مشکل احتمالاً روی VPS یا اتصال محلی شماست. اگر فقط روی یک گام مشخص دیده شود، مشکل در شبکه بین VPS شما و مقصد است.
مشکل: تایماوتهای مکرر
Bash# Augmenter le timeout mtr --timeout 10 --report destination.com # Tester avec différents protocoles mtr --tcp --port 443 --timeout 10 --report destination.com
📝 دستورهای کاربردی
اسکریپت عیبیابی کامل
یک اسکریپت برای آزمایش چند مقصد بسازید:
Bash#!/bin/bash echo "=== Test MTR vers Google DNS ===" mtr --report --report-cycles 30 8.8.8.8 echo -e "\n=== Test MTR vers Cloudflare DNS ===" mtr --report --report-cycles 30 1.1.1.1 echo -e "\n=== Test MTR vers votre domaine ===" mtr --report --report-cycles 30 votre-domaine.com
ذخیره نتایج
Bash# Sauvegarder le rapport dans un fichier mtr --report --report-cycles 30 google.com > mtr-report-$(date +%Y%m%d).txt # Avec format CSV mtr --report --report-cycles 30 --csv google.com > mtr-report.csv
✅ بهترین روشها
- بهجای traceroute از MTR استفاده کنید: MTR آمار کاملتری ارائه میدهد
- چند مقصد را آزمایش کنید: نتایج را برای سرورهای مختلف مقایسه کنید
- چند بار آزمایش کنید: شبکهها میتوانند تغییر کنند، پس در زمانهای مختلف چند آزمایش انجام دهید
- اگر ICMP فیلتر شده است از TCP استفاده کنید: برخی مسیریابها ICMP را فیلتر میکنند اما TCP را نه
- نتایج را درست تفسیر کنید: اگر تأخیر نهایی خوب باشد، تأخیر بالا روی یک گام میانی همیشه مشکل نیست
🆘 رفع اشکال
MTR درست نمایش داده نمیشود
Bash# Si MTR ne fonctionne pas en mode interactif, utilisez le mode rapport mtr --report destination.com # Vérifier la version de MTR mtr --version
خطای "mtr: command not found"
Bash# Réinstaller MTR sudo apt update sudo apt install mtr-tiny -y # Ou installer la version complète sudo apt install mtr -y
همه نتایج فقط ستاره نشان میدهند
اگر همه گامها * نشان میدهند، ممکن است به این معنی باشد:
Bash# Votre pare-feu bloque ICMP # Testez avec TCP à la place mtr --tcp --port 443 --report destination.com # Vérifiez les règles de pare-feu sudo ufw status sudo iptables -L
📚 منابع بیشتر
❓ پرسشهای متداول
پرسش: تفاوت Traceroute و MTR چیست؟
پاسخ: Traceroute چند بسته میفرستد و نتایج را نمایش میدهد. MTR بستهها را بهطور پیوسته میفرستد و آمار را بهصورت لحظهای محاسبه میکند که برای عیبیابی مفیدتر است.
پرسش: چرا بعضی گامها ستاره نشان میدهند؟
پاسخ: یعنی مسیریاب پاسخ نداده است. دلیل آن میتواند فیلتر فایروال، پیکربندی مسیریاب یا صرفاً پاسخ ندادن مسیریاب به درخواستهای عیبیابی باشد.
پرسش: آیا باید نگران تأخیر بالا روی یک گام میانی باشم؟
پاسخ: لزوماً نه. اگر تأخیر نهایی تا مقصد خوب باشد، تأخیر بالا روی یک گام میانی میتواند عادی باشد. آنچه واقعاً اهمیت دارد تأخیر نهایی است.
پرسش: ازدسترفتن بسته در MTR را چگونه تفسیر کنم؟
پاسخ: ازدسترفتن کمتر از 1% عادی است. بین 1 تا 5% قابل قبول است اما میتواند مشکل ایجاد کند. بیش از 5% مشکلساز است و نیاز به بررسی دارد.