اتصال درست OpenVPN را متوقف کنید: پیشزمینه، systemd یا NM
فرمانی که یک تونل را قطع میکند به این بستگی دارد که چه کسی آن را آغاز کرده است. پیش از ارسال سیگنال، مالکان پیشزمینه، systemd، NetworkManager و OpenVPN 3 را مقایسه کنید.
بستن پنجرهٔ ترمینال با بستن تونل یکی نیست، و کشتن یک فرایند با متوقف کردن یک سرویس یکی نیست. در Linux فرمانی که واقعاً اتصال را قطع میکند به این بستگی دارد که کدام مؤلفه اتصال را آغاز کرده و بنابراین چرخهٔ عمر آن را در اختیار دارد. مقایسهٔ زیر چهار ترتیبی را پوشش میدهد که به احتمال زیاد با آنها روبهرو میشوید، و شناسهای که هر یک نیاز دارد.
کلاینتهای پیشزمینه و کلاینتهای دیمنشده
کلاینتی که دستی در ترمینال آغاز شده به همان ترمینال تعلق دارد. Ctrl+C یک وقفه میرساند، کلاینت رابط خود را برمیچیند و تونل پایان مییابد. لازم نیست به چیز دیگری اطلاع داده شود.
کلاینتی که از طریق پوشش پوسته آغاز و در پسزمینه رها شده به هیچکس خاصی تعلق ندارد، و همین جایی است که مردم به killall روی میآورند. نخست فرایند را پیدا کنید، تأیید کنید که خط فرمانش پروفایل مورد نظر را ذکر میکند، و سپس سیگنال خاتمهٔ عادی را بفرستید. فرایند تحت نظارتی که زیر نظر ناظرش کشته شود صرفاً دوباره راهاندازی میشود، از این رو شناسایی مالک مهمتر از انتخاب سیگنال است. سیگنال به گروه فرایند را تنها زمانی بفرستید که تأیید کرده باشید هیچ تونل دیگری آن را شریک نیست.
SIGUSR1 قطع اتصال نیست؛ از کلاینت میخواهد تونل را دوباره راهاندازی کند.
نمونههای systemd
وقتی یک unit مالک اتصال است، همان unit شیئی است که باید متوقف شود. نمونههای قالبی مانند openvpn-client@office نام پروفایل را حمل میکنند، و متوقف کردن هدف قالب بهجای نمونه میتواند هر کلاینت روی میزبان را تحت تأثیر قرار دهد.
systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]
وقتی مطمئن نیستید نمونه کدام پروفایل را بار کرده، ExecStart واحد را بخوانید.
واحدی که فعال شده در بوت بعدی برمیگردد، که تصمیمی جدا از متوقف کردن آن در حال حاضر است. آن را فقط پس از تصمیم به اینکه اتصال نباید برگردد غیرفعال کنید، و آن تصمیم را جایی ثبت کنید که مدیر بعدی آن را پیدا کند.
پروفایلهای NetworkManager
پروفایلی که NetworkManager مدیریت میکند فرایندی نیست که بتوانید به آن سیگنال بفرستید. مدیر مالک چرخهٔ عمر است، و شیئی که باید روی آن عمل شود اتصال فعال است که با UUID شناسایی میشود نه با نام نمایشی. خواندن فهرست فعال در ابتدا همچنین نشان میدهد آیا تونل دومی با نامی که انتظارش را نداشتید در حال اجراست.
nmcli connection show --active
nmcli connection down uuid actual-uuid
نامهای نمایشی تکرار میشوند و نام فایل پروفایل شناسهٔ آن نیست، پس UUID را از فهرست کپی کنید. اگر اتصال فوراً برگردد، چیزی آن را فعال میکند: یک ورودی secondaries روی اتصال پایه، یک اسکریپت dispatcher، یا یک پرچم اتصال خودکار. متوقف کردن اتصال مدیر نخستین گام درست است، و فعالسازی دوباره پرسش بعدی است. پروفایل را برای متوقف کردن فعالسازی دوباره حذف نکنید، چون این کار اعتبارنامههایی را هم برمیدارد که فردا ممکن است لازم داشته باشید.
مرجع فرمانهای مدیر مستند میکند که هدف down چگونه انتخاب میشود.
نشستهای OpenVPN 3
OpenVPN 3 Linux بهجای یک فرایند برای هر تونل از مدل نشست استفاده میکند. نشستهایی را که سرویس میشناسد بررسی میکنید و سپس روی یک مسیر نشست عمل میکنید. مسیر شناسه است و با نام پیکربندی قابل مبادله نیست.
openvpn3 sessions-list
openvpn3 session-manage --path /net/openvpn/v3/sessions/... --disconnect
قطع همهٔ نشستها کنشی متفاوت است و باید سنجیده باشد.
یک میزبان میتواند نشستهای چند کاربر را نگه دارد، پس پیش از عمل فهرست بگیرید و مالک نشستی را که میخواهید پایان دهید تأیید کنید.
آنچه باید بعداً بررسی شود
پس از هر یک از این توقفها سه چیز را بررسی کنید: فهرست اتصالات فعال دیگر تونل را ندارد، رابط از میان رفته است، و جستوجوی مسیر برای یک نشانی داخلی دیگر دستگاه تونل را انتخاب نمیکند. سپس تصمیم بگیرید در بوت بعدی چه میشود.
ip -brief address
ip route get 10.8.0.1
حذف دستی یک رابط مالک را متوقف نمیکند و پاکسازی را نیمهکاره میگذارد.
قطع کردن اکنون، جلوگیری از شروع خودکار بعدی، و اجازه دادن به ترافیک غیر VPN پس از آن سه انتخاب جدا هستند. هر یک را صریح انجام دهید.