بررسی شبکه؛ راهنمای عملی برای عیب‌یابی SSL، پورت و DNS

آموزش گام‌به‌گام بررسی شبکه با ابزارهای خط فرمان؛ از تست SSL و پورت‌های باز تا پینگ و DNSSEC، همراه با تفسیر نتایج و رفع خطاهای رایج.

۶ دقیقه به‌روزرسانی ۲۳ مهر ۱۴۰۵

چرا بررسی شبکه قبل از هر اقدامی ضروری است؟

وقتی وب‌سایت شما کند کار می‌کند، ایمیل ارسال نمی‌شود یا کاربران خطای اتصال می‌بینند، اولین قدم برای حل مشکل، بررسی شبکه است. بسیاری از توسعه‌دهندگان و مدیران سرور مستقیماً به سراغ کد یا تنظیمات برنامه می‌روند، اما ریشه مشکل اغلب در لایه شبکه است: یک پورت بسته، گواهی SSL منقضی‌شده یا رکورد DNS اشتباه.

در این مقاله، یک جریان کاری عملی برای بررسی شبکه با ابزارهای خط فرمان (Command Line) ارائه می‌دهیم. شما یاد می‌گیرید که تست SSL، اسکن پورت‌های باز، پینگ و بررسی DNSSEC را انجام دهید و نتایج را به درستی تفسیر کنید. این روش‌ها روی لینوکس، macOS و حتی ویندوز (با WSL یا Git Bash) قابل اجرا هستند.

ابزارهای پایه برای بررسی شبکه

قبل از شروع، مطمئن شوید که ابزارهای زیر روی سیستم شما نصب هستند. اکثر آن‌ها به‌صورت پیش‌فرض روی توزیع‌های لینوکسی وجود دارند، اما در صورت نیاز می‌توانید آن‌ها را نصب کنید:

  • ping – بررسی دسترسی به میزبان و تأخیر شبکه
  • nslookup یا dig – پرس‌وجوی DNS
  • openssl – بررسی گواهی SSL/TLS
  • nc (netcat) یا nmap – اسکن پورت‌ها
  • delv یا dig +dnssec – بررسی DNSSEC

برای نصب روی اوبونتو یا دبیان، از دستور زیر استفاده کنید:

sudo apt update
sudo apt install dnsutils openssl netcat-openbsd nmap bind9-dnsutils

روی CentOS یا RHEL:

sudo yum install bind-utils openssl nmap nc

تست SSL و تفسیر نتایج

گواهی SSL یکی از رایج‌ترین نقاط شکست در بررسی شبکه است. یک گواهی منقضی یا نادرست، باعث می‌شود مرورگر کاربر خطای امنیتی نشان دهد و اعتماد مخاطب را از بین ببرد.

بررسی تاریخ انقضا و زنجیره گواهی

ساده‌ترین روش، استفاده از openssl است:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject -issuer

خروجی شامل سه بخش مهم است:

  • notBefore – تاریخ شروع اعتبار گواهی
  • notAfter – تاریخ انقضا
  • subject و issuer – نام دامنه و مرجع صادرکننده

اگر تاریخ انقضا نزدیک است (کمتر از ۳۰ روز)، بهتر است قبل از وقوع مشکل، گواهی را تمدید کنید. برای بررسی زنجیره کامل گواهی (Certificate Chain)، از گزینه -showcerts استفاده کنید:

openssl s_client -connect example.com:443 -servername example.com -showcerts < /dev/null

در خروجی، باید حداقل دو گواهی ببینید: گواهی اصلی دامنه و گواهی واسط (Intermediate). اگر فقط یک گواهی نمایش داده شود، احتمالاً سرور شما زنجیره کامل را ارسال نمی‌کند و برخی کلاینت‌ها خطا می‌دهند.

بررسی پروتکل‌ها و رمزنگاری (Cipher Suites)

برای اطمینان از اینکه سرور شما از پروتکل‌های امن استفاده می‌کند، TLS نسخه‌های 1.2 و 1.3 را تست کنید:

openssl s_client -connect example.com:443 -tls1_2 < /dev/null
openssl s_client -connect example.com:443 -tls1_3 < /dev/null

اگر دستور با خطای no protocols available مواجه شد، یعنی سرور از آن نسخه TLS پشتیبانی نمی‌کند. پشتیبانی از TLS 1.2 حداقل نیاز امروز است و TLS 1.3 به‌شدت توصیه می‌شود.

اشتباه رایج: بسیاری از مدیران فقط تاریخ انقضا را چک می‌کنند و متوجه نمی‌شوند که گواهی برای دامنه دیگری صادر شده است. همیشه subject را با نام دامنه خود مقایسه کنید. اگر دامنه با www و بدون www دارید، باید گواهی SAN (Subject Alternative Name) شامل هر دو باشد.

اسکن پورت‌های باز و تفسیر نتایج

پورت‌های باز، دروازه‌های ورود به سرور شما هستند. بررسی شبکه برای یافتن پورت‌های غیرضروری، بخش مهمی از امنیت است.

اسکن سریع با netcat

برای تست یک پورت خاص، از nc استفاده کنید:

nc -zv example.com 443
nc -zv example.com 22

خروجی succeeded یعنی پورت باز است و Connection refused یعنی بسته است. گزینه -z اسکن را بدون ارسال داده انجام می‌دهد و -v جزئیات را نمایش می‌دهد.

اسکن چند پورت با nmap

برای بررسی شبکه روی محدوده‌ای از پورت‌ها، nmap گزینه بهتری است:

nmap -p 80,443,22,3306 example.com

خروجی سه حالت دارد:

  • open – پورت باز است و سرویس در حال گوش دادن است
  • closed – پورت بسته است اما قابل دسترسی است (فایروال رد نمی‌کند)
  • filtered – فایروال یا فیلتر شبکه، پاسخ را مسدود کرده است

حالت filtered معمولاً به این معنی است که پورت ممکن است باز باشد اما فایروال آن را پنهان می‌کند. برای تشخیص دقیق‌تر، از اسکن TCP Connect استفاده کنید:

nmap -sT -p 80,443 example.com
نکته عیب‌یابی: اگر پورت 80 باز است اما مرورگر خطای اتصال می‌دهد، احتمالاً فایروال نرم‌افزاری (مانند iptables یا firewalld) ترافیک را مسدود می‌کند. با دستور sudo iptables -L -n قوانین را بررسی کنید.

پینگ و اندازه‌گیری تأخیر شبکه

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

تست دسترسی و از دست رفتن بسته

ping -c 10 example.com

خروجی شامل آمار زیر است:

  • packet loss – درصد بسته‌های از دست رفته؛ صفر درصد ایده‌آل است
  • min/avg/max – حداقل، میانگین و حداکثر زمان پاسخ (RTT) بر حسب میلی‌ثانیه
  • ttl – Time To Live؛ مقدار پیش‌فرض ۶۴ برای لینوکس و ۱۲۸ برای ویندوز است

اگر packet loss بالای ۵٪ باشد، شبکه ناپایدار است. اگر میانگین RTT بالای ۱۵۰ میلی‌ثانیه باشد، احتمالاً مسیر شبکه طولانی یا شلوغ است.

تست پینگ با اندازه بسته متفاوت

برای بررسی تأثیر MTU (Maximum Transmission Unit) روی شبکه، پینگ با اندازه بسته بزرگ انجام دهید:

ping -M do -s 1472 example.com

گزینه -M do باعث می‌شود بسته‌ها تکه‌تکه نشوند (Don't Fragment). اگر این دستور خطای Frag needed بدهد، یعنی MTU مسیر کمتر از ۱۵۰۰ است و باید آن را تنظیم کنید.

اشتباه رایج: برخی تصور می‌کنند اگر پینگ موفق باشد، کل شبکه سالم است. اما پینگ فقط ICMP را تست می‌کند؛ ممکن است پورت 443 بسته باشد یا DNS کار نکند. همیشه پینگ را با تست پورت و DNS ترکیب کنید.

بررسی DNSSEC و اعتبارسنجی DNS

DNSSEC (Domain Name System Security Extensions) امضای دیجیتال رکوردهای DNS است. اگر DNSSEC به درستی پیکربندی نشده باشد، کاربران ممکن است خطای SERVFAIL دریافت کنند.

بررسی امضای DNSSEC با dig

dig example.com A +dnssec +multi

در خروجی، به دنبال این موارد باشید:

  • RRSIG – رکورد امضای دیجیتال برای پاسخ
  • DNSKEY – کلید عمومی ناحیه (Zone)
  • status: NOERROR – یعنی پرس‌وجو موفق بوده است

اگر خروجی status: SERVFAIL باشد، یعنی اعتبارسنجی DNSSEC شکست خورده است. برای تشخیص دقیق‌تر، از delv استفاده کنید:

delv @8.8.8.8 example.com A +rtrace

خروجی delv نشان می‌دهد که کدام مرحله از زنجیره اعتبارسنجی شکست خورده است. رایج‌ترین مشکل، نبود رکورد DS در دامنه والد (Parent Zone) است.

بررسی رکوردهای پایه DNS

برای بررسی شبکه، رکوردهای A، AAAA، MX و NS را چک کنید:

dig example.com A
dig example.com MX
dig example.com NS

اگر رکورد A به IP اشتباه اشاره می‌کند، کاربران به سرور دیگری هدایت می‌شوند. برای بررسی سرعت انتشار تغییرات DNS، از سرورهای مختلف استفاده کنید:

dig @8.8.8.8 example.com A
dig @1.1.1.1 example.com A

اگر نتایج متفاوت باشد، یعنی تغییرات هنوز در حال انتشار (Propagation) هستند.

جمع‌بندی: یک جریان کاری کامل برای بررسی شبکه

برای عیب‌یابی سیستماتیک، این ترتیب را دنبال کنید:

  1. ابتدا پینگ بزنید تا مطمئن شوید میزبان در دسترس است.
  2. سپس رکوردهای DNS را با dig بررسی کنید تا IP درست باشد.
  3. در مرحله بعد، پورت‌های کلیدی (80، 443، 22) را با nc یا nmap تست کنید.
  4. حالا گواهی SSL را با openssl چک کنید.
  5. در نهایت، DNSSEC را با dig +dnssec اعتبارسنجی کنید.

این روش به شما کمک می‌کند مشکل را در سریع‌ترین زمان ممکن ایزوله کنید. اگر در هر مرحله خطایی دیدید، همان لایه را عمیق‌تر بررسی کنید. برای مثال، اگر پورت 443 بسته است، فایروال سرور را چک کنید؛ اگر DNSSEC خطا می‌دهد، تنظیمات ناحیه DNS را در کنترل‌پنل دامنه بازبینی کنید.

اگر به دنبال زیرساختی هستید که این تست‌ها را روی آن انجام دهید، سرورنت (ServerNet) خدمات میزبانی وب و سرور ابری ارائه می‌دهد که می‌توانید برای تمرین بررسی شبکه از آن استفاده کنید. اما صرف‌نظر از میزبان، تسلط بر این ابزارها شما را به مدیر سیستمی تبدیل می‌کند که می‌تواند مشکلات را قبل از تأثیرگذاری بر کاربران، شناسایی و حل کند.

آیا این مطلب برایتان مفید بود؟