CH-J Server Managerمدیریت سرور از طریق SSH
منو
همهٔ راهنماها و مقاله‌ها ←

ping ناموفق است اما SSH و HTTPS کار می‌کنند: چرا و آیا مشکلی وجود دارد؟

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

چرا این اتفاق می‌افتد

ابزار ping از ICMP استفاده می‌کند، در حالی که SSH و HTTPS از پورت‌های TCP استفاده می‌کنند. این ترافیک‌ها جدا هستند و فایروال می‌تواند یکی را دور بیندازد و دیگری را عبور دهد. بسیاری از شبکه‌ها و گروه‌های امنیتی ابری، ICMP echo را به‌طور پیش‌فرض مسدود می‌کنند. بنابراین نرسیدن پاسخ به معنی از کار افتادن سرور نیست و دریافت پاسخ هم ثابت نمی‌کند سرویس‌های آن کار می‌کنند.

سرویس را آزمایش کنید، نه ping را

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

nc -vz -w 5 server.example 22
nc -vz -w 5 server.example 443
curl -sSI https://server.example/

مسیر را با TCP ردیابی کنید

هنگام فیلتر شدن ICMP یا UDP، ممکن است traceroute معمولی فقط ستاره نشان دهد. با استفاده از TCP به یک پورت باز، اغلب می‌توانید بخش بیشتری از مسیر را ببینید. این کار به root نیاز دارد و ممکن است ابتدا لازم باشد traceroute را نصب کنید، چون سیستم‌های حداقلی آن را ندارند.

sudo traceroute -T -p 443 server.example

فیلتر را روی سرور خود جست‌وجو کنید

اگر مدیر سرور هستید، فایروال آن و تنظیم هسته‌ای را که درخواست‌های echo را نادیده می‌گیرد بررسی کنید. به یاد داشته باشید که مسدودسازی ممکن است خارج از سرور، در یک گروه امنیتی یا روتر هم باشد و ارائه‌دهنده ممکن است ICMP را در شبکهٔ خود فیلتر کند، بدون اینکه قاعده‌ای ببینید.

sysctl net.ipv4.icmp_echo_ignore_all
sudo nft list ruleset | grep -i icmp
sudo ufw status verbose

چه زمانی مسدود شدن ICMP واقعاً مشکل‌ساز می‌شود

مسدود کردن echo معمولاً بی‌ضرر است، اما مسدود کردن تمام ICMP چنین نیست. کشف MTU مسیر به پیام‌هایی وابسته است که بیش از حد بزرگ بودن بسته را اعلام می‌کنند. بدون آن‌ها تبادل‌های کوچک انجام می‌شوند ولی تبادل‌های بزرگ متوقف می‌مانند؛ مثلاً ورود SSH موفق است اما سپس هنگام خروجی حجیم گیر می‌کند. وابستگی IPv6 به ICMPv6 حتی بیشتر است. فرمان دوم مسیر را برای MTU برابر با 1500 بایت در Linux آزمایش می‌کند.

ip route get 192.0.2.10
ping -M do -s 1472 -c 3 192.0.2.10

مقایسهٔ آزمایش‌ها در CH-J Server Manager

ابزار Server Diagnostics با استفاده از ابزار سیستم و بدون root، آزمایش ping را در کنار آزمایش‌های جداگانهٔ TCP، شناسایی SSH، HTTP و TLS اجرا می‌کند تا نتیجهٔ ناموفق ping در کنار نتایج دیگر تفسیر شود. ناموفق بودن ping در اینجا یعنی هیچ پاسخی نرسیده است. مشخص نمی‌کند بسته کجا دور انداخته شده و traceroute هم ممکن است نتواند به این پرسش پاسخ دهد.

مستندات مفصل

RFC 4890: ICMPv6 filtering ←

man: ping ←

باز کردن قفل بیومتریک و امنیت ←