OpenVPN mssfix: چرا یک کاربر در انتقالهای بزرگ متوقف میشود
mssfix اندازهٔ بخش TCP را که داخل تونل اعلام میشود بازنویسی میکند. اندازهٔ UDP را تغییر نمیدهد و مقدار آن فقط همان معنایی را دارد که نسخهٔ شما میگوید.
یک لپتاپ هنگام بارگذاری از طریق تونل متوقف میشود، در حالی که هر دستگاه دیگری روی همان سرور به کار خود ادامه میدهد. این الگو به یک مسیر اشاره دارد، نه به پیکربندی سرور، و همان ورودی معمول به پرسش mssfix است. این گزینه میتواند کمک کند، اما فقط برای اتصالهای TCP که واقعاً بازنویسی میکند. دانستن دامنهٔ آن مانع میشود سروری را که کار میکند برای نجات یک کاربر تغییر دهید.
گزینه چه چیزی را بازنویسی میکند
mssfix اندازهٔ بیشینهٔ بخش را که در دستدهیهای TCP عبوری از تونل اعلام میشود ویرایش میکند، تا فرستنده بخشهایی را انتخاب کند که در بودجهٔ کپسولهشده جا شود. روی دستدهی اثر میگذارد، یعنی اتصالی که پیش از تغییر باز شده باشد مقدار مذاکرهشده را نگه میدارد.
دیتاگرامهای UDP را کوچک نمیکند و MTU تونل را تنظیم نمیکند. دو مشکل متفاوت یک نشانه را تولید میکنند: فرستندهٔ TCP که حد مسیر را نادیده میگیرد، و مسیری که بستههای بزرگ را در هر اندازهای بیصدا دور میریزد. mssfix اولی را حل میکند و برای دومی کاری نمیکند.
همین تفاوت آزمایشهای ناامیدکننده را توضیح میدهد. تنظیم مقدار کوچکتر روی مسیری با حفرهٔ سیاه اندازهٔ بخش را تغییر میدهد اما نه افت بعدی را، پس انتقال در نقطهٔ دیگری شکست میخورد.
دامنه TCP داخل تونل است
فقط ترافیک TCP بازنویسی میشود. یک نشست QUIC، یک بازی یا برنامهای که دیتاگرامهای بزرگ UDP میفرستد اندازهٔ بستهٔ خودش را نگه میدارد، و اگر همان انتقالها متوقف میشوند، راهحل بهجای آن به MTU تونل یا مسیر تعلق دارد. پیش از دست بردن به یک گزینهٔ TCP بخوانید انتقال مشکلدار از چه پروتکلی استفاده میکند، چون لایهٔ اشتباه راهحل خودش را دارد.
جهت هم مهم است. تنظیم کاربر بر ترافیکی که آن کاربر به تونل میفرستد اثر میگذارد، در حالی که سرور جریانهایی را که به سمت کاربران هدایت میکند پوشش میدهد. اگر فقط دانلودهای ورودی متوقف میشوند، مقدار سمت کاربر تمام ماجرا نیست.
عدد و کلیدواژه قابل انتقال نیستند
نسخهٔ اجتماعی OpenVPN 2.6 یک کلیدواژهٔ اختیاری پس از مقدار میپذیرد. با mtu، عدد اندازهٔ بستهٔ بیرونی شامل سرآیندهای IP و UDP را توصیف میکند؛ بدون آن، آرگومان از قرارداد حسابداری دیگری پیروی میکند. بنابراین خطی که بین نسخهها کپی میشود همان بودجهٔ بسته را توصیف نمیکند. صفحهٔ راهنمایی را که همراه همان ساختی است که واقعاً اجرا میکنید ببینید، نه آموزشی برای انتشار دیگری.
نحو آن چنین است:
mssfix 1400 mtu
با 1400 بهعنوان جاینگهدار رفتار کنید، نه توصیهای برای مسیر شما. مقدار را از مسیر اندازهگیریشده و کپسولهسازیای که واقعاً استفاده میشود استخراج کنید، و به یاد داشته باشید که کاربران نسخههای قدیمیتر یا پیادهسازیهای دیگر ممکن است کلیدواژه را رد کنند یا متفاوت تفسیر کنند.
نخست روی همان یک کاربر تأیید کنید
پیش از هر تغییری مسیر را از دستگاه مشکلدار اندازه بگیرید. باری که مسیر میتواند بدون قطعهبندی حمل کند همان عددی است که دنبالش هستید:
ping -M do -s 1472 10.8.0.1
ping -M do -s 1400 10.8.0.1
بررسی نخست وقتی 28 بایت سرآیند اضافه شود در بستهٔ 1500 بایتی جا میشود. اگر با خطای قطعهبندی شکست بخورد و کوچکتر موفق شود، اندازهٔ قابل استفاده جایی بین آن دو است و سرباری تونل از بالا کم میشود.
سپس انتقال متوقفشده را روی اتصال تازه تکرار کنید و مقایسه کنید. اگر همان یک کاربر بهتر شود در حالی که دیگران دستنخورده میمانند، دامنهٔ مشکل را یافتهاید. اگر همهٔ کاربران متوقف شوند، مقدار سمت سرور همان چیزی است که باید بررسی شود. هیچیک از دو نتیجه تغییر روی سختافزاری را توجیه نمیکند که هرگز در مسیر مشکلدار نبوده است.