Импорт профиля — не то же самое, что замена клиента. NetworkManager хранит тип плагина вместе с данными и секретами, специфичными для плагина, и плагин, которому принадлежит этот тип, решает, что может делать соединение. Всё, что приложение поставщика надстраивает сверху, от регистрации до постоянной блокировки, живёт вне файла. Безопасно ли переключение, зависит от того, на какие из этих слоёв вы действительно полагаетесь.

Файл называет плагин, а не набор функций

Справочник по настройкам VPN в NetworkManager описывает тип службы, который выбирает плагин, а также непрозрачный словарь данных и словарь секретов, которые интерпретирует только плагин. Профиль — это договор с одной реализацией, а не описание поведения, которое может воспроизвести любой клиент. Два клиента могут говорить по одному протоколу и всё же различаться тем, о чём они договариваются и какие пути данных включают. Название протокола говорит, чем является туннель, и никогда — что делает с ним окружающий клиент.

Поэтому сравнивайте требования, а не обёртки. Вопрос не в том, может ли альтернатива подключиться, потому что обычно может; вопрос в том, переживёт ли переезд каждое требование, которое делало исходный клиент приемлемым. Запишите эти требования до того, как что-либо устанавливать, иначе сравнение превратится в поиск того, что сломается первым.

Что приложение поставщика добавляет вокруг туннеля

Клиенты поставщиков обычно объединяют регистрацию и проверки состояния устройства, поток второго фактора с собственным интерфейсом, постоянную блокировку, канал обновлений и средства поддержки. Часть этого стоит рядом с протоколом, а часть — отдельный продукт, который лишь делит установщик. NetworkManager может заменить туннель и его маршрутизацию, а сценарии диспетчера могут запускать действия при изменении состояния соединения. Но он не воспроизводит движок блокировки, процесс продления сертификата или предположение о том, какой пользователь вправе поднять соединение.

Больше компонентов не значит безопаснее, а меньше не значит слабее. Вопрос в том, какой компонент исполняет политику, которую вам велели соблюдать. Если аудитор спросит, что блокирует трафик, когда туннель падает, ответ должен назвать нечто, что действительно это делает, и профиль, который только подключается, таким ответом не является.

Где владение действительно различается

Читайте это как карту владения, а не как контрольный список, потому что сбои ниже — это пробелы во владении, и никакой объём настройки клиента их не закрывает. Каждая строка называет слой, сторону, которая обычно держит его сегодня, и место, где пробел проявляется первым.

LayerVendor applicationNetworkManager connectionWhere the gap shows up
Enrollment and posturebuilt into the clientabsent unless something else supplies ita managed device fails its next posture check
Address and resolver authoritythe client sets boththe plugin plus dispatcher scriptsnames resolve through the wrong resolver after a state change
Blocking on dropa bundled enginenothing by defaulttraffic continues in the clear after the tunnel dies
Upgrade paththe vendor's own channelthe distribution package and its plugina plugin update changes behaviour with no vendor note
Diagnostics and supportvendor tooling with client statejournal and dispatcher outputsupport cannot see why negotiation failed

Свяжите каждую строку с наблюдением, которое можно повторить, а не с ощущением о клиенте. Имя, разрешённое через предусмотренный резолвер, маршрут, исчезающий при остановке туннеля, и заблокированное соединение после имитации обрыва — это три наблюдения, которые вместе покрывают большую часть таблицы. Запишите наблюдение рядом с требованием, которое оно доказывает, и сохраните неудачные, потому что неудачное наблюдение — единственная часть записи, предсказывающая следующий инцидент.

Переключение без наложения владения

Одновременный запуск клиента поставщика и соединения NetworkManager для одной и той же службы — самый частый способ, которым эти сравнения идут не так. Оба устанавливают маршруты, оба могут задать DNS, и оба могут затронуть состояние межсетевого экрана. То, что вы тогда измеряете, — третья конфигурация, не соответствующая документированному поведению ни одного из двух клиентов.

nmcli -f NAME,UUID,TYPE connection show
nmcli connection show work --show-secrets | grep -E "^vpn\."
journalctl -u NetworkManager -b --since "10 min ago"

Первая команда говорит, является ли профиль вообще типом VPN. Вторая показывает тип службы плагина и какие секреты сохранены, что важно, когда ключ ожидается от агента, а не из файла. Журнал — это место, где плагин, который загрузился, но не смог договориться, скажет об этом. Если ни одна из трёх не показывает проблемы, пробел находится в слоях политики над туннелем, а не в соединении.

Отключите старый клиент до включения нового соединения, сохраните конечные точки и учётную запись одинаковыми и запишите, какой компонент владеет маршрутами, настройками резолвера и блокировкой. Именно эта заметка не даёт следующему обновлению закончиться двумя владельцами.

Похожие статьи