ابزارهای عیب یابی شبکه: ping، traceroute، mtr و dig

برای عیب‌یابی شبکه از پایین به بالا بروید: اول مطمئن شوید دستگاه آدرس IP و Gateway درست دارد، بعد اتصال به Gateway و به اینترنت را با ping امتحان کنید، بعد DNS را بررسی کنید، و در آخر خود سرویس را روی پورتش تست کنید. ابزارهای اصلی این مسیر ping، traceroute یا mtr، nslookup یا dig، ss و curl هستند. با این ترتیب، بیشتر وقت‌ها معلوم می‌شود مشکل از آدرس‌دهی، مسیر، نام دامنه یا خود سرویس است.

این راهنما برای لینوکس و ویندوز نوشته شده است. نام دستورها در دو سیستم کمی فرق دارد و در جدول‌ها هر دو آمده‌اند. اگر مشکل از DNS است، رکوردهای دامنه را در انواع رکورد DNS هم ببینید.

لایه اول: آدرس و مسیر خود دستگاه

اول ببینید دستگاه چه آدرسی دارد:

کارلینوکسویندوز
دیدن آدرس‌هاip addripconfig /all
دیدن مسیر پیش‌فرض (Gateway)ip routeroute print
جدول ARPip neigharp -a

اگر آدرسی که با 169.254 شروع می‌شود می‌بینید، دستگاه از DHCP جواب نگرفته است. اگر آدرس درست است ولی Gateway در شبکه دیگری قرار دارد، ماسک یا آدرس را اشتباه تنظیم کرده‌اید. برای بررسی اینکه دو آدرس در یک زیرشبکه‌اند، ابزار محاسبه ساب نت را ببینید. تنظیمات شبکه در توزیع‌های لینوکس را در تنظیمات شبکه لینوکس توضیح داده‌ایم.

ping: آیا مقصد جواب می‌دهد؟

ping بسته ICMP می‌فرستد و زمان رفت و برگشت را نشان می‌دهد:

ping -c 4 192.168.1.1
ping -c 4 8.8.8.8
ping -c 4 example.com

در ویندوز به‌جای -c از -n استفاده کنید. روش پیشنهادی سه مرحله است: اول Gateway، بعد یک IP در اینترنت و بعد یک نام دامنه. نتیجه هر مرحله جایی را که مشکل در آن است نشان می‌دهد:

نتیجهمعنی محتمل
Gateway جواب نمی‌دهدمشکل در لینک، VLAN یا آدرس‌دهی داخلی
Gateway جواب می‌دهد ولی IP اینترنت نهمشکل در روتر، اینترنت یا NAT
IP اینترنت جواب می‌دهد ولی نام دامنه نهمشکل DNS
همه جواب می‌دهند ولی سرویس باز نمی‌شودمشکل در فایروال یا خود سرویس

جواب ندادن ping همیشه به معنی قطع بودن نیست، چون بسیاری از فایروال‌ها ICMP را می‌بندند. اگر ping جواب نمی‌دهد ولی سرویس کار می‌کند، با تست پورت ادامه دهید.

traceroute و mtr: مسیر کجا قطع می‌شود؟

traceroute مسیر بسته‌ها را مرحله‌به‌مرحله نشان می‌دهد:

traceroute example.com
tracert example.com
mtr -rwzc 50 example.com

دستور دوم برای ویندوز است. ابزار mtr ترکیب ping و traceroute است و برای هر مرحله درصد از دست رفتن بسته و زمان پاسخ را نشان می‌دهد. گزینه‌ها: -r گزارش، -w نام کامل، -z شماره AS و -c 50 تعداد ارسال. تفسیر آن نیاز به احتیاط دارد: اگر یک مرحله میانی بسته از دست داده ولی مراحل بعدی سالم‌اند، آن مسیریاب فقط پاسخ ICMP را محدود کرده و مشکل واقعی نیست. افت بسته‌ای که تا مرحله آخر ادامه دارد، نشانه مشکل واقعی است.

DNS: نام دامنه درست حل می‌شود؟

nslookup example.com
dig example.com +short
dig @8.8.8.8 example.com +short

اگر نتیجه با DNS پیش‌فرض و DNS عمومی فرق دارد، DNS سیستم یا شبکه شما جواب اشتباه می‌دهد یا رکورد تازه تغییر کرده و هنوز به‌روز نشده است. کش DNS ویندوز را با ipconfig /flushdns پاک می‌کنید. اگر دامنه شما است، برای دیدن همه رکوردها و SPF و DMARC، ابزار بررسی DNS دامنه را ببینید.

پورت و سرویس: روی آن گوش داده می‌شود؟

روی خود سرور:

sudo ss -ltnp

از سیستم دیگر، باز بودن یک پورت را با nc یا PowerShell امتحان کنید:

nc -zv 192.168.1.10 443
Test-NetConnection 192.168.1.10 -Port 443

اگر پورت روی سرور باز است ولی از شبکه دیگر نه، فایروال سرور، فایروال شبکه یا NAT راه را بسته‌اند. فهرست پورت‌های رایج و کاربردشان در پورت‌های رایج شبکه و سرور آمده است.

curl: خود پاسخ وب‌سرور

curl نشان می‌دهد درخواست HTTP واقعاً چه جوابی می‌گیرد:

curl -I https://example.com
curl -v https://example.com
curl -o /dev/null -s -w "%{http_code} %{time_total}s\n" https://example.com

گزینه -I فقط هدرها را می‌گیرد و -v جزئیات اتصال و گواهی SSL را نشان می‌دهد. کد وضعیت 502 یا 504 یعنی مشکل در سرویس پشت وب‌سرور است؛ عیب‌یابی آن در خطای 502 Bad Gateway آمده است. برای بررسی گواهی SSL هم ابزار بررسی SSL سایت را ببینید.

تست MTU

اگر ping کوچک کار می‌کند ولی اتصال‌های سنگین قطع می‌شوند، ممکن است MTU مشکل داشته باشد، مثلاً در تونل‌ها و VPN. با بسته‌ای که تکه‌تکه نشود امتحان کنید:

ping -M do -s 1472 example.com
ping -f -l 1472 example.com

دستور اول برای لینوکس و دوم برای ویندوز است. اگر جواب نداد، عدد را کم کنید تا بزرگ‌ترین اندازه‌ای که رد می‌شود پیدا شود؛ MTU برابر این عدد به‌اضافه ۲۸ بایت هدر است.

ابزارهای ثبت و تحلیل

وقتی ابزارهای بالا کافی نیستند، بسته‌ها را ببینید. روی لینوکس tcpdump و روی هر سیستم Wireshark بسته‌های واقعی را نشان می‌دهند:

sudo tcpdump -i eth0 host 192.168.1.10 and port 443

این ابزارها اطلاعات حساس را هم نمایش می‌دهند و فقط روی دستگاه‌هایی که اجازه دارید و برای مدت کوتاه استفاده کنید. نام اینترفیس را با ip addr پیدا کنید.

جدول خلاصه عیب‌یابی شبکه: علامت و بررسی اول

علامتاول چه کنید
اینترنت نیستip addr، ping Gateway، ping 8.8.8.8
سایت‌ها باز نمی‌شوند ولی IP جواب می‌دهدnslookup و DNS
فقط یک سرویس کار نمی‌کندss -ltnp روی سرور، تست پورت از کلاینت
شبکه کند استmtr برای افت بسته، مصرف پهنای باند
ارتباط گاهی قطع می‌شودلاگ تجهیزات، کابل و پورت سوئیچ، MTU
فقط از یک شبکه کار نمی‌کندفایروال، مسیر و ACL بین شبکه‌ها

برای شبکه سازمانی که بخش‌ها VLAN دارند، قطع شدن ارتباط بین VLANها معمولاً به مسیر یا ACL برمی‌گردد؛ ساخت و عیب‌یابی VLAN در آموزش VLAN در سیسکو آمده است.

سوالات متداول

در عیب‌یابی شبکه چرا ping جواب می‌دهد ولی سایت باز نمی‌شود؟

ping فقط ICMP را امتحان می‌کند. سایت به پورت ۸۰ یا ۴۴۳ نیاز دارد که ممکن است فایروال، سرویس متوقف یا مشکل DNS مانع آن باشد. با curl و تست پورت ادامه دهید.

جواب ندادن ping یعنی سرور خاموش است؟

نه لزوماً. خیلی از سرورها و فایروال‌ها ICMP را می‌بندند. اگر پورت سرویس جواب می‌دهد، سرور روشن است.

فرق tracert و traceroute چیست؟

هر دو یک کار می‌کنند؛ tracert نام دستور ویندوز و traceroute نام آن در لینوکس و مک است. روش ارسال بسته‌ها کمی فرق دارد.

mtr را روی ویندوز می‌شود به کار برد؟

بله، با برنامه‌هایی مثل WinMTR یا با WSL. mtr بیشتر روی لینوکس رایج است.

منابع