Закрити вікно термінала — не те саме, що закрити тунель, а вбити процес — не те саме, що зупинити службу. У Linux команда, яка насправді розриває з’єднання, залежить від того, який компонент запустив з’єднання і тому володіє його життєвим циклом. Порівняння нижче охоплює чотири схеми, які ви найімовірніше зустрінете, і ідентифікатор, потрібний кожній із них.

Клієнти на передньому плані та демонізовані клієнти

Клієнт, запущений вручну в терміналі, належить цьому терміналу. Ctrl+C передає переривання, клієнт зносить свій інтерфейс, і тунель завершується. Більше нікого повідомляти не потрібно.

Клієнт, запущений через обгортку оболонки й залишений у фоні, не належить нікому конкретному, і саме тоді люди хапаються за killall. Спершу знайдіть процес, переконайтеся, що в його командному рядку згадано потрібний профіль, і потім надішліть звичайний сигнал завершення. Керований процес, убитий під своїм супервізором, просто перезапуститься, тому визначити власника важливіше, ніж вибрати сигнал. Надсилайте сигнал групі процесів лише після того, як переконалися, що її не поділяє жоден інший тунель.

SIGUSR1 — це не розрив; він просить клієнт перезапустити тунель.

Екземпляри systemd

Коли unit володіє з’єднанням, unit — це об’єкт, який треба зупинити. Шаблонні екземпляри на кшталт openvpn-client@office несуть ім’я профілю, і зупинка цілі шаблону замість екземпляра може зачепити кожного клієнта на хості.

systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]

Прочитайте ExecStart unit, якщо не впевнені, який профіль завантажив екземпляр.

Увімкнений unit повернеться під час наступного завантаження, і це окреме рішення від його зупинки зараз. Вимкніть його лише після того, як вирішите, що з’єднання не повинно повертатися, і запишіть це рішення там, де його знайде наступний адміністратор.

Профілі 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 — це три окремі вибори. Зробіть кожен із них явним.

Схожі статті