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

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

بازنشانی نرم را از راه‌اندازی دوباره بازشناسید

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

journalctl -u openvpn-client@office -b --no-pager | grep -nE 'soft reset|Connection reset|reneg|TLS Error'
openvpn --version | head -n 1

خط نسخه مهم است زیرا عبارت‌پردازی گزارش میان انتشارها جابه‌جا می‌شود، و پیامی که از 2.3 به یاد دارید ممکن است در 2.6 به‌گونه‌ای دیگر نوشته شده باشد. گزارش خودتان را بخوانید، نه بریده‌ای از انجمن از شخص دیگری. وقتی کمک می‌خواهید همان خط دقیق را نقل کنید، زیرا بازگویی جزئیاتی را که رویداد را مشخص می‌کند از دست می‌دهد. اگر نشانی واسط در طول رویداد بی‌تغییر بماند و فهرست نشست‌ها زنده بماند، شما شاهد تازه‌سازی هستید و بخش‌های باقی‌مانده اعمال می‌شوند.

زمان‌سنج مؤثر را بخوانید، نه پرونده خودتان را

reneg-sec شمار ثانیه‌های میان مذاکره‌های مجدد کانال داده است و پیش‌فرض آن 3600 است. هر طرف مقدار خودش را دارد، و کوچک‌تر از دو مقدار همان است که واقعاً تازه‌سازی را برمی‌انگیزد. همین یک قاعده بیشتر گزارش‌ها را توضیح می‌دهد: نمایه کار‌خواه‌ای که عدد بزرگی می‌گذارد همچنان هر ساعت بازنشانی می‌شود، در حالی که کار‌ساز پیش‌فرض را نگه می‌دارد.

grep -Rn --include='*.conf' -E 'reneg-sec|reneg-bytes' /etc/openvpn
# server side, including included files
grep -Rn -E '^reneg-sec' /etc/openvpn/server/

پیکربندی مؤثر کار‌ساز را هم بخوانید، همراه با هر چیزی که هل می‌دهد، پیش از آنکه از پرونده کار‌خواه نتیجه‌ای بگیرید. سپس سطح جزئیات را بالا ببرید و یک بازه را از آغاز تا پایان ببینید: سطح 3 همین حالا خطوط مذاکره مجدد را نشان می‌دهد، و برچسب‌های زمانی می‌گویند آیا رویداد هر 3600 ثانیه تکرار می‌شود یا به‌جای آن از فعالیت پیروی می‌کند.

آن را جایی تغییر دهید که واقعاً هل داده می‌شود

داروی رایج یک خط در نمایه کار‌خواه است، و حدود نیمی از وقت‌ها جای اشتباهی است. چون مقدار کوچک‌تر طرف پیروز می‌شود، کار‌خواه‌ای که زمان‌سنج را صفر می‌گذارد باز هم می‌تواند توسط کار‌سازی که تغییر نکرده مذاکره مجدد شود.

# on both ends, or on the side that owns the pushed configuration
reneg-sec 0

وقتی نمایه‌ها به‌صورت مرکزی ساخته می‌شوند، قالب را ویرایش کنید نه نسخه مستقر‌شده را، وگرنه اجرای تأمین بعدی مقداری را که همین حالا برداشتید بازمی‌گرداند. با دیدن دو بازه تأیید کنید، نه یکی: یک ساعت آرام با زمان‌سنجی که روی 7200 تنظیم شده هم سازگار است.

همچنین تصمیم بگیرید در استقرار مختلط چه می‌شود. اگر تغییر را نخست به کار‌خواه‌ها برسانید، پنجره‌ای می‌ماند که کار‌ساز هنوز تازه‌سازی را برمی‌انگیزد؛ بی‌خطر است اما اگر برای تأیید گزارش‌ها را می‌پایید گیج‌کننده است. نخست طرفی را که مقدار کوچک‌تر دارد تغییر دهید و نشانه در همان نقطه‌ای که انتظار دارید ناپدید می‌شود.

با غیرفعال کردن مذاکره مجدد از چه چیزی می‌گذرید

مذاکره مجدد منظم محدود می‌کند که یک مجموعه کلید کانال داده چه مدت از ترافیک محافظت کند. خاموش کردن زمان‌سنج تونل را نمی‌شکند، و روی یک روتر خانگی یا دروازه دفتر کوچک مواجهه عملی اندک است. با این حال یک معاوضه است، و ارزش دارد پیش از انجام آن نام برده شود. آنچه تغییر می‌کند این است که یک مجموعه کلید چه مدت از یک نشست محافظت می‌کند، نه اینکه تونل اصلاً کار می‌کند یا نه.

دلیل معقول برای غیرفعال کردن، بازنشانی‌ای است که چیزی را می‌شکند که قابل ادامه نیست: تماسی که قطع می‌شود، نشست رومیزی دوری که باید از نو برقرار شود، پشتیبانی که از آغاز شروع می‌شود. اگر مکث برای کاربران نامرئی است، نگه داشتن پیش‌فرض هیچ هزینه‌ای ندارد و چرخش کلیدی را که گرفته‌اید حفظ می‌کند.

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

وقتی بازه به جای دیگری اشاره می‌کند

دو همسایه در پیکربندی نشانه‌های مشابه و رفع‌های متفاوت تولید می‌کنند. ping-restart وقتی در بازه‌ای تعیین‌شده چیزی نمی‌رسد تونل را دوباره راه می‌اندازد، در حالی که ping-exit کار‌خواه را کاملاً پایین می‌آورد. قطع‌ه‌ای بی‌کار بدون هیچ مذاکره مجددی در گزارش به این‌ها تعلق دارد، یا به دستگاه NAT که نگاشت UDP را بر اساس زمان‌بندی خودش منقضی کرده است.

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

پیش از تغییر یک چیز چهارم، سه چیز را بنویسید: بازه‌ای که اندازه گرفتید، مقدار مؤثری که یافتید، و فرمانی که آن را نشان داد. اگر بازه با جابه‌جایی زمان‌سنج جابه‌جا شود، سازوکار شناسایی شده و رفع، تصمیمی درباره معاوضه بالاست. اگر جابه‌جا نشود، تنظیم را برگردانید و به پاییدن keepalive، وضعیت NAT و افت بسته ادامه دهید.

مقالات مرتبط