چرا بررسی شبکه قبل از هر اقدامی ضروری است؟
وقتی وبسایت شما کند کار میکند، ایمیل ارسال نمیشود یا کاربران خطای اتصال میبینند، اولین قدم برای حل مشکل، بررسی شبکه است. بسیاری از توسعهدهندگان و مدیران سرور مستقیماً به سراغ کد یا تنظیمات برنامه میروند، اما ریشه مشکل اغلب در لایه شبکه است: یک پورت بسته، گواهی SSL منقضیشده یا رکورد DNS اشتباه.
در این مقاله، یک جریان کاری عملی برای بررسی شبکه با ابزارهای خط فرمان (Command Line) ارائه میدهیم. شما یاد میگیرید که تست SSL، اسکن پورتهای باز، پینگ و بررسی DNSSEC را انجام دهید و نتایج را به درستی تفسیر کنید. این روشها روی لینوکس، macOS و حتی ویندوز (با WSL یا Git Bash) قابل اجرا هستند.
ابزارهای پایه برای بررسی شبکه
قبل از شروع، مطمئن شوید که ابزارهای زیر روی سیستم شما نصب هستند. اکثر آنها بهصورت پیشفرض روی توزیعهای لینوکسی وجود دارند، اما در صورت نیاز میتوانید آنها را نصب کنید:
ping– بررسی دسترسی به میزبان و تأخیر شبکهnslookupیاdig– پرسوجوی DNSopenssl– بررسی گواهی SSL/TLSnc(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
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 مسیر کمتر از ۱۵۰۰ است و باید آن را تنظیم کنید.
بررسی 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) هستند.
جمعبندی: یک جریان کاری کامل برای بررسی شبکه
برای عیبیابی سیستماتیک، این ترتیب را دنبال کنید:
- ابتدا پینگ بزنید تا مطمئن شوید میزبان در دسترس است.
- سپس رکوردهای DNS را با
digبررسی کنید تا IP درست باشد. - در مرحله بعد، پورتهای کلیدی (80، 443، 22) را با
ncیاnmapتست کنید. - حالا گواهی SSL را با
opensslچک کنید. - در نهایت، DNSSEC را با
dig +dnssecاعتبارسنجی کنید.
این روش به شما کمک میکند مشکل را در سریعترین زمان ممکن ایزوله کنید. اگر در هر مرحله خطایی دیدید، همان لایه را عمیقتر بررسی کنید. برای مثال، اگر پورت 443 بسته است، فایروال سرور را چک کنید؛ اگر DNSSEC خطا میدهد، تنظیمات ناحیه DNS را در کنترلپنل دامنه بازبینی کنید.
اگر به دنبال زیرساختی هستید که این تستها را روی آن انجام دهید، سرورنت (ServerNet) خدمات میزبانی وب و سرور ابری ارائه میدهد که میتوانید برای تمرین بررسی شبکه از آن استفاده کنید. اما صرفنظر از میزبان، تسلط بر این ابزارها شما را به مدیر سیستمی تبدیل میکند که میتواند مشکلات را قبل از تأثیرگذاری بر کاربران، شناسایی و حل کند.