آدرس همتا در میانه نشست تغییر کرد: float در OpenVPN چه میکند
float به همتای احراز هویتشده اجازه میدهد آدرس بیرونی خود را در میانه نشست تغییر دهد. این گزینه نقاط پایانی را کشف نمیکند، پیوند مرده را دوباره باز نمیکند و بررسیهای هویت را دور نمیزند.
لپتاپ از Wi-Fi دفتر به هاتاسپات گوشی منتقل میشود، تونل چند ثانیه دیگر برپا میماند و سپس ترافیک متوقف میشود، در حالی که رابط همچنان ادعا میکند متصل است. روی سرور، فهرست وضعیت هنوز آدرس عمومی قدیمی را نشان میدهد. این همان وضعیتی است که float برای آن وجود دارد، و همچنین همان وضعیتی است که مردم انتظار دارند بسیار بیشتر از کار واقعیاش انجام دهد. درست شناختن این مرز، یک توقف گیجکننده را یا به تغییری یکخطی در پیکربندی یا به تحقیقی کاملاً متفاوت تبدیل میکند.
float چه چیزی را شل میکند و هرگز چه چیزی را شل نمیکند
بهطور معمول یک نشست به گفتگو با همان آدرس بیرونی و پورتی ادامه میدهد که با آن آغاز شده، و بستههایی که از هر جای دیگری برسند نادیده گرفته میشوند. گزینه float این پیوند سختگیرانه را پس از آنکه همتا خود را اثبات کرد برمیدارد، بنابراین نگاشت مبدأِ تغییرکرده میتواند همان نشست را ادامه دهد نه اینکه دور ریخته شود. هیچ چیز در بررسیهای رمزنگاری تغییر نمیکند: کلیدها، گواهیها و هر حفاظت HMAC دقیقاً همان میمانند که پیکربندی شدهاند.
این تصمیمی برای هر بسته است، نه سیاستی درباره اینکه چه کسی میتواند متصل شود. ماشین ناشناسی که بستهای از آدرس جدید میفرستد چیزی اثبات نکرده و بستهاش مانند هر ترافیک احراز هویتنشده دیگری دور انداخته میشود. تنها ترافیکی که از احراز هویت خودِ نشست بگذرد میتواند آدرس ثبتشده همتا را جابهجا کند، و به همین دلیل است که روشن ماندن float در محیطهایی که کلاینتها جابهجا میشوند ایمن است.
همچنین درباره تونل درونی چیزی نمیگوید. آدرس بیرونی جابهجاشده آدرس تونل را دوباره تخصیص نمیدهد، استخر را تغییر نمیدهد و به همتا دسترسی به چیز تازهای نمیدهد. درون تونل، همان هویت و همان مسیرهای فشردهشده پیش و پس از جابهجایی اعمال میشوند. جابهجایی کانال داده را دوباره مذاکره نمیکند، بنابراین رمز و کلیدهای مذاکرهشده ادامه مییابند.
بستهای که نشست را جابهجا میکند باید احراز هویت شود
نشست را به روش معمول در برابر مقصد راهدور پیکربندیشده آغاز کنید و float آنچه را هنگام تغییر نگاشت رخ میدهد مدیریت میکند. اپراتور موبایلی که در میانه جریان شمارهگذاری را عوض میکند، دروازه NAT که نگاشت پورت خود را بازنویسی میکند، یا لپتاپی که پیوند بالا را عوض میکند همگی یک شکل میسازند: بستههای احراز هویتشده از چندگانهای جدید که به نشستی میرسند که هنوز به قدیمی باور دارد.
وقتی میپرسند آیا float کار میکند، شاهد مفید یک دستدهی کامل و سپس تغییری پذیرفتهشده در مبدأ است، نه یک خط گزارش فقط درباره آدرس. آدرسهای بیرونی قدیم و جدید را با نشستی که زنده ماند مرتبط کنید، سپس تأیید کنید که ترافیک واقعاً از تونل ادامه یافته است.
اگر نشست بهجای جابهجایی بمیرد، بستهای که از آدرس جدید رسیده احتمالاً در احراز هویت شکست خورده یا اصلاً نرسیده است. هر دو حالت از دید کلاینت یکسان به نظر میرسند. روی سرور، یک ضبط روی رابط عمومی پیش از آنکه به هیچ پیکربندی دست بزنید میگوید کدام حالت را دارید.
کشف، سازوکاری کاملاً جداگانه است
float نامها را با زمانسنج حل نمیکند و یک رکورد DNS پویا را ردیابی نمیکند. اگر نام میزبان سرور به آدرس جدیدی حل شود، کلاینت بیکار دلیلی برای توجه به آن ندارد و بستهای از نقطه پایانی جدید برای احراز هویت ندارد. آن مشکل به منطق اتصال مجدد، به رفتار تلاش مجدد خود کلاینت و به DNS تعلق دارد، نه به float.
افزودن دوباره این گزینه نمیتواند نبودِ مسیر به آدرس جدید را جبران کند. وقتی همتا ساکت است نیز کمکی نمیکند، زیرا همتای ساکت هرگز آن بسته احراز هویتشدهای را نمیفرستد که چیزی را جابهجا کند.
دیوار آتش زیرین هم رأی دارد. قاعدهای که تنها نقطه پایانی بیرونی قدیمی را مجاز میداند، آدرس تغییرکرده را پیش از آنکه OpenVPN آن را ببیند مسدود میکند، و هیچ مقدار پیکربندی سمت کلاینت این را درست نمیکند. چرخه عمر آدرسهای مجاز را بهعنوان کاری مستقل بازبینی کنید؛ گشودن قاعده به هر مبدأ، مشکلی کوچک را با مشکلی بزرگ عوض میکند.
وقتی NetworkManager مالک پروفایل است
پروفایل خط فرمان و اتصال واردشده دو پیکربندی جداگانهاند و ویرایش یکی به دیگری دست نمیزند. پیش از آنکه فرض کنید گزینه پشتیبانی نمیشود، مشخص کنید پروفایل ذخیرهشده در واقع از کدام نوع افزونه استفاده میکند و مقادیرش کجا زندگی میکنند. UUID پروفایل همان شناسهای است که هنگام بررسی یا تغییر هر چیزی اهمیت دارد.
اتصال ذخیرهشده را بررسی کنید نه فایل واردات اصلی را. خطی که در فایل .ovpn باقی میماند اگر مدیر فعال هرگز آن را اعمال نکرده باشد چیزی اثبات نمیکند، و ویرایشگری که برای گزینهای مشخص کادر انتخاب ندارد نیز چیزی درباره تواناییهای پروتکل اثبات نمیکند.
برای افزودن این رفتار یک افزونه بستهبندیشده را وصله نکنید، بهویژه نه با diffی که برای نسخهای تاریخی از مؤلفهای نامرتبط نوشته شده است. اگر یکپارچهسازی نصبشده واقعاً نمیتواند این تنظیم را بیان کند، گام درست یک پروفایل پشتیبانیشده یا مسیر کلاینت دیگری است که مالک استقرار تأیید کرده باشد.
گذار را اثبات کنید نه اینکه فرض بگیرید
آزمون را همانگونه که شکست رخ میدهد اجرا کنید. متصل شوید، ترافیک را از تونل بررسی کنید، آدرس بیرونی را به تغییر وادارید و سپس سه چیز را بررسی کنید: نشست هنوز وجود دارد، آدرس ثبتشده همتا جابهجا شده و یک درخواست واقعی هنوز به مقصد میرسد. هر چیزی کمتر از این سه، پاسخ ناقص است.
هنگام آزمون، دسترسی بازیابی را در دسترس نگه دارید، زیرا آزمایشهای جابهجایی عادت دارند ماشینی را که از آن کار میکنید در بنبست بگذارند. یک کنسول سریال یا مسیر خارج از باند، آزمون ناموفق را به بازیابی پنجدقیقهای بدل میکند نه بازدید حضوری.
سرانجام، تنها همان موردی را توصیف کنید که آزمودید. تغییر موفق آدرس در طول یک نشست شاهدی بر این نیست که مهاجرتهای DNS، پیادهسازی دیگر کلاینت یا پروفایل بازساختهشده همانگونه رفتار خواهند کرد. مستندات link-options دامنه این گزینه را دقیق بیان میکند؛ گزارش آزمون شما باید بگوید کدام بخش از آن دامنه را واقعاً پوشش دادهاید.