چگونه OpenConnect را پس از ورود تعاملی به پسزمینه ببریم
ورود را در پیشزمینه تمام کنید و سپس تونل را به حالت پسزمینهٔ خودِ کلاینت بسپارید. بررسیهایی که آن را یافتنی و قابلتوقف نگه میدارند.
درخواست MFA را تمام میکنید، تونل بالا میآید و بستن ترمینال اتصال را با خود پایین میبرد. این مشکل نظارت است نه احراز هویت، و OpenConnect همان کلیدی را دارد که آن را حل میکند. راهحل این است که بگذارید کلاینت پس از پایان راهاندازی به پسزمینه منشعب شود، وقتی بخش تعاملی واقعاً تمام شده است. در ادامه زنجیرهای از بررسیها میآید: به ترتیب پیش بروید و در نخستین موردی که برای دروازهٔ شما برقرار نیست بایستید.
تأیید کنید دروازه هنگام ورود چه میخواهد
پیش از تایپ فرمان، مسیر اعتبارنامهای را که استقرار تحمیل میکند بنویسید. فقط گواهی، گذرواژه بههمراه توکن، و رفتوبرگشت مرورگر از طریق ارائهدهندهٔ SAML رفتار متفاوتی دارند و حالت پسزمینه نمیتواند هیچکدام را رد کند. این گزینه آنچه پس از راهاندازی رخ میدهد را تغییر میدهد، هرگز آنچه در طول آن رخ میدهد را نه.
راهحل وسوسهانگیز خودکارکردن درخواست است. پوششی که هر بار درخواست گذرواژه را تشخیص دهد پاسخ ثابتی تایپ میکند، همان لحظهای که دروازه کد یکبارمصرف میخواهد میشکند و اعتبارنامهای در فایلی میگذارد که حسابهای دیگر میتوانند بخوانند. اگر شخصی باید نشست را تأیید کند، شخص را در چرخه نگه دارید.
نخستین نشست را در پیشزمینه اجرا کنید و خروجی را بخوانید
یک بار بهطور عادی وصل شوید و بگذارید کل دستدادن چاپ شود. پروتکل مورد استفاده، مسیر گواهی یا توکن، نشانی تونلی که سرور اختصاص میدهد و هر هشدار پیش از پذیرش اتصال را یادداشت کنید. آن رونوشت خط پایهٔ شماست و تنها راه ارزان برای تشخیص بعدی مشکل کلاینت از تغییر دروازه. آن را بیرون از بافر ترمینال ذخیره کنید.
سپس همان فرمان را با حالت پسزمینه و افزودن فایل PID تکرار کنید، برای نمونه openconnect --background --pid-file /run/openconnect.pid vpn.example.net، و گزینههای پروتکل و احراز هویتی را که دروازهٔ شما لازم دارد در همان خط نگه دارید. راهنمای OpenConnect این گزینه را ادامه در پسزمینه پس از پایان راهاندازی توصیف میکند و دقیقاً به همین دلیل مرحلهٔ تعاملی باید نخست تمام شود.
فرایند در حال اجرا را یافتنی و قابلتوقف کنید
فایل PID تنها تا زمانی مدرک است که با فرایندی زنده بخواند. آن را در پوشهای بگذارید که حساب سرویس مالک آن است و پیش از ارسال هر سیگنال، شمارهٔ ثبتشده را با جدول فرایندها مقایسه کنید. راهاندازیهای دوباره و خرابیها فایل را جا میگذارند و فایل کهنه معمولاً دلیل آن است که اسکریپت توقف موفقیت گزارش میکند در حالی که تونل هنوز بالاست. بررسی را بخشی از رویهٔ توقف بدانید، نه گامی اختیاری.
سیگنال را به PID تأییدشده بفرستید، سپس بهجای اعتماد به وضعیت خروج تأیید کنید که رابط تونل واقعاً ناپدید شده است. اگر کلاینت برای پیکربندی رابط به دسترسی بالا نیاز دارد، سیگنال باید از حسابی بیاید که اجازهٔ ارسال آن را دارد.
حالت پسزمینه را زیر یک ناظر انباشته نکنید
systemd و ناظرهای مشابه انتظار دارند مالک فرایندی باشند که راه انداختهاند، و به همین دلیل کلاینتی که منشعب میشود گیجشان میکند. ناظر خروج راهانداز را میبیند در حالی که اتصال واقعی ادامه دارد، پس منطق راهاندازی دوباره، گزارش وضعیت و مهلتهای توقف چیزی را توصیف میکنند که دیگر درست نیست. واحد را در چیدمان پیشزمینهٔ پشتیبانیشده بنویسید و کار دیمن را به ناظر بسپارید.
--background را برای نشستهایی نگه دارید که شخصی آغاز میکند و سپس میرود. اگر نیاز تونلی است که پیش از ورود کسی وجود داشته باشد، قطعهٔ گمشده هویت غیرتعاملی تأییدشده بههمراه برنامهای برای تمدید آن است و هیچ پرچم خط فرمانی هیچیک را فراهم نمیکند. افزودن پرچم به اسکریپت بوت تونلی میسازد که در نخستین اعتبارنامهٔ منقضی بیصدا شکست میخورد.
کوکی نشست را اعتبارنامه بدانید
OpenConnect مرحلهٔ احراز هویت جداگانهای را از طریق --authenticate مستند میکند و مواد حاصل را میتوان با --cookie-on-stdin بازگرداند. این جفت برای کار یکپارچهسازی وجود دارد و آنچه تولید میکند بهاندازهٔ گذرواژهای که آن را ساخته حساس است.
مقدار را از تاریخچهٔ پوسته، از گزارشها و از هر تیکتی که باز میکنید دور نگه دارید. اسکریپت تحویل همچنین باید اطلاعات نقطهٔ پایانی تأییدشدهای را که کلاینت همراه کوکی دریافت کرده حفظ کند؛ اگر از دست برود، اجرای بعدی ممکن است به میزبانی وصل شود که هرگز آن را احراز نکردهاید، که از اتصالی که صرفاً شکست میخورد بدتر است.
پیش از بستن ترمینال فهرست را کامل کنید
چهار چیز باید درست باشد: ورود تعاملی در پیشزمینه تمام شده، فایل PID به فرایندی اشاره میکند که تأیید کردهاید، مسئلهٔ ناظر به یک سو روشن شده و کوکی برنامهٔ ذخیرهای دارد که فایل متنی ساده نیست. وقتی هر چهار مورد برقرار باشد، دور شدن از ترمینال ایمن است و تونل به کار ادامه میدهد.
اگر یکی شکست بخورد، پیش از دست زدن به بقیه همان مورد را درست کنید، چون بررسیهای باقیمانده نمیتوانند آن را جبران کنند. رونوشت پیشزمینهٔ نخستین اجرا را هم نگه دارید: بار بعد که تونل بیهشدار بیفتد، همان خط پایه تغییر سمت دروازه را از تغییر سمت کلاینت جدا میکند.