چرا این اتفاق میافتد
ابزار 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 هم ممکن است نتواند به این پرسش پاسخ دهد.