با کارخواه 2.x وصل شوید و نمایه کار می‌کند؛ همان فایل را به کارخواه 3.x بدهید و در اعلان گذرواژه متوقف می‌شود. --auth-user-pass creds.txt را به openvpn3 session-start بدهید و نتیجه همان است، چون کارخواه تازه‌تر هیچ مرحله‌ای ندارد که فایل را بخواند. رد کردن عمدی است: اعتبارنامه‌ها به یک نشست تعلق دارند، و نشست را یک سرویس می‌سازد، نه فرآیند داخل ترمینال شما. میان اعلان تعاملی و کمک‌کننده بارگذاری خودکار یکی را انتخاب کنید و بدانید هرکدام چه چیزی ذخیره می‌کند.

چرا فایل ذخیره‌شده جایی برای رفتن ندارد

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

ارزش دارد الگوی قدیمی را نام ببریم تا رها کردنش آسان‌تر شود: نمایه به یک فایل اعتبارنامه اشاره می‌کند و سرویس‌گیرنده هنگام آغاز تونل آن را می‌خواند. در مدل تازه، اعتبارنامه‌ها به یک نشست تعلق دارند و هنگام آغاز آن نشست عرضه می‌شوند. openvpn3 session-start --config work.ovpn آنها را می‌پرسد و --auth-user-pass creds.txt رد می‌شود، چون هیچ چیز در آن مسیر فایل را باز نمی‌کرد. هر دستورالعمل 2.x که پیدا کنید مرحله‌ای را فرض می‌کند که دیگر وجود ندارد.

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

مسیر اعلان و نشستی که برجای می‌گذارد

عرضه گذرواژه در آغاز نشست همان گردش‌کار درنظرگرفته‌شده است. کارخواه یک بار می‌پرسد، اعتبارنامه‌ها را به بخش پشتی نشست می‌سپارد و ادامه می‌دهد:

openvpn3 session-start --config work.ovpn
openvpn3 sessions-list

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

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

خودکارسازی بدون انسان پشت صفحه‌کلید

جایی که ماشین باید بدون انسان وصل شود، پروژه openvpn3-autoload را عرضه می‌کند. یک پوشه از نمایه‌ها و یک توصیفگر متناظر برای هر نمایه را می‌خواند، و توصیفگر اعتبارنامه‌ها را به متن ساده عرضه می‌کند. کمک‌کننده یک فایل دودویی جداگانه است، معمولاً در /usr/sbin/openvpn3-autoload، نه یک گزینه روی session-start. راه‌اندازی آن یعنی ساختن پوشه، کپی کردن نمایه با نامی که توصیفگر انتظار دارد، و نوشتن توصیفگر.

یک راه‌اندازی برای هر کاربر چنین است و با حسابی اجرا می‌شود که مالک نشست خواهد بود. حالت پوشه کاربران محلی دیگر را بیرون نگه می‌دارد:

mkdir -m700 -p ~/.openvpn3/autoload
cp work.ovpn ~/.openvpn3/autoload/client.conf
$EDITOR ~/.openvpn3/autoload/client.autoload

توصیفگر اعتبارنامه‌ها را نام می‌برد و آغاز خودکار می‌خواهد. مقدار گذرواژه را بیرون از کنترل نسخه نگه دارید:

{
  "autostart": true,
  "user-auth": {
    "autologin": true,
    "username": "svc-vpn",
    "password": "change-this-value"
  }
}

سپس کمک‌کننده را یک بار فراخوانی کنید و تأیید کنید که نشست پدیدار می‌شود. فرمان دوم بررسی است، نه گام راه‌اندازی دیگر:

/usr/sbin/openvpn3-autoload --directory ~/.openvpn3/autoload
openvpn3 sessions-list

هنگام راه‌اندازی، یک واحد بسته‌بندی‌شده به نام openvpn3-autoload.service از پوشه سراسری سیستم /etc/openvpn3/autoload استفاده می‌کند، نه پوشه هر کاربر. آن مکان مالکیت root و حالتی سخت‌گیرانه‌تر می‌خواهد، و توصیفگر همچنان گذرواژه را به متن روشن نگه می‌دارد. بده‌بستان آشکار است: گذرواژه اکنون روی دیسک است، پس با آن پوشه مانند یک راز رفتار کنید، آن را از پشتیبان‌گیری بیرون از میزبان کنار بگذارید، و هرگاه انسانی حاضر است مسیر تعاملی را انتخاب کنید.

خرابی‌های گذرگاه که شبیه خرابی گذرواژه‌اند

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

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

systemctl status openvpn3-service-client
journalctl -b -u openvpn3-service-client --no-pager | tail -20

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

وقتی کارخواه قدیمی هنوز به کار می‌رود

کارخواه 2.x هنوز فایل اعتبارنامه را می‌پذیرد، و یک دسته‌کلید می‌تواند به اعلان آن پاسخ دهد بی‌آنکه راز هرگز به دیسک برسد. یک پوشش‌دهنده مدخل را حل می‌کند، پس فایل جستجو را نام می‌برد نه گذرواژه را. این ترتیب به دسته‌کلید بازشده وابسته است، چیزی که یک کانتینر بدون نشست ورود یا واحدی که پیش از ورود کسی آغاز می‌شود نمی‌تواند فراهم کند. آنگاه ابزار جستجو مجموعه‌ای را گزارش می‌کند که نمی‌تواند در آن بنویسد، پس خطا شبیه عیب اعتبارنامه دیده می‌شود در حالی که عیب دسته‌کلید است.

پیش از ساختن هر یک از این‌ها، بررسی کنید آیا تنظیم keepalive در نمایه نیاز به راه‌اندازی دوباره را کاملاً برمی‌دارد. نشستی که بالا می‌ماند هرگز به اعلانی که می‌کوشید خودکار کنید نمی‌رسد.

مقالات مرتبط