فناوری / تحلیل و راهنمای کاربردی

پکت‌های بزرگ رد نمی‌شوند؛ حل پدیده Black Hole و تنظیم صحیح MTU

عیب‌یابی مشکل متوقف‌شدن ارتباطات SSH، انتقال فایل و Handshake رمزنگاری در تونل‌های VXLAN، WireGuard و GRE؛ رفع اصولی افتادن بسته‌ها با تنظیم MSS Clamping به جای دستکاری اشتباه MTU کارت شبکه.

اردشیر دریانی··۳ دقیقه مطالعه
نمودار شماتیک جریان بسته‌های داده که در مسیر یک تونل به خاطر تفاوت هدر مسدود می‌شوند؛ با استایل تاریک و مدارهای نئونی بدون لوگو.
تصویر مفهومی اختصاصی، ساخته‌شده با هوش مصنوعی؛ بازنمایی دقیق یک محصول یا معماری تجاری نیست.

سناریویی که بسیاری از مدیران شبکه با آن مواجه شده‌اند: پینگ بین دو نقطه به راحتی و با زمان کوتاه پاسخ می‌دهد، وب‌سایت با صفحات کوچک باز می‌شود، اما به محض اینکه کاربر اقدام به ورود امن، انتقال فایل با SCP یا برقراری یک جلسه TLS سنگین می‌کند، کانکشن فریز شده و نهایتاً با تایم‌اوت قطع می‌شود.

اولین واکنش اشتباه: کاهش خودسرانه MTU کارت شبکه تمام کلاینت‌ها یا متهم کردن کیفیت لینک فیزیکی.

ریشه ماجرا: پدیده PMTU Black Hole

هر پکت شبکه در حالت استاندارد اترنت دارای MTU برابر با 1500 بایت است. هنگامی که ترافیک از داخل یک تونل امن (مانند WireGuard, GRE, IPsec یا کپسوله‌سازی VXLAN) عبور می‌کند، هدرهای کپسوله‌سازی بسته به پروتکل بین ۲۰ تا ۸۰ بایت از ظرفیت بسته را کم می‌کنند.

اگر فایروال یا روتر میانی پیام‌های کنترلی ICMP نوع ۳ کد ۴ (Fragmentation Needed and DF set) را مسدود کرده باشد، کلاینت ارسال‌کننده متوجه لزوم کوچک‌کردن بسته‌ها نمی‌شود. در نتیجه بسته‌های حجیم بی‌صدا دور ریخته می‌شوند؛ این همان سیاهچاله PMTU است.

تشخیص قطعی در ۳ مرحله

  1. ارسال پینگ با پرچم Don't Fragment: برای پیدا کردن سقف واقعی پکت بدون قطعه‌قطعه شدن، از کلاینت دستور زیر را اجرا کنید:

    • در ویندوز:
      ping 10.10.10.1 -f -l 1472
      
    • در لینوکس:
      ping -M do -s 1472 10.10.10.1
      

    اگر پیام Packet needs to be fragmented but DF set گرفتید، عدد را پله‌پله (مثلاً تا 1420 یا 1360) کم کنید تا پینگ موفق شود. (به یاد داشته باشید ۲۸ بایت هدر IP و ICMP به عدد تست اضافه می‌شود).

  2. بررسی اندازه هدر تونل:

    • در WireGuard معمولاً سقف MTU برابر با 1420 است.
    • در VXLAN با هدر استاندارد، MTU اینترفیس داخلی را روی 1450 تنظیم کنید (در صورت عدم استفاده از Jumbo Frame در فابریک فیزیکی).
  3. کوچک‌ترین اصلاح اصولی: فعال‌سازی MSS Clamping روی لبه: به جای اینکه تنظیمات صدها سیستم یا کانتینر را دستکاری کنید، در روتر یا فایروال ورودی تونل قابلیت TCP MSS Clamping را فعال کنید تا روتر خودکار عدد هدر TCP SYN را در هنگام دست‌دادن اولیه بازنویسی کند:

    iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
    

نتیجه‌گیری

وقتی پینگ سالم است اما ترافیک پرحجم قفل می‌شود، وقت خود را صرف متهم کردن کارت شبکه نکنید. مشکل در مرز هدر تونل و مسدود بودن پیام‌های ICMP است. با اندازه‌گیری دقیق و اعمال MSS Clamping در لبه، مشکل تمام کاربران یک‌جا حل می‌شود.

تحلیل فناوری برای تصمیم‌های آگاهانه‌تر.همه نوشته‌ها →