Остановите правильное подключение 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 юнита, если не уверены, какой профиль загрузил экземпляр.
Включённый 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 — три отдельных выбора. Сделайте каждый из них явным.