Вы добавляете одну строку, чтобы упрямый профиль PPTP наконец подключился, а через неделю перестаёт работать клиент L2TP, который стабильно работал месяцами. Напрашивается вывод, что два протокола теперь конфликтуют. Гораздо чаще оба клиента запускают pppd, оба читают одни и те же настройки по умолчанию, а добавленная строка никогда не была привязана к тому профилю, который вы исправляли. Связующим звеном оказывается общий файл параметров, а протоколы тут ни при чём.

Что клиент наследует при запуске

Клиент на PPP редко строит командную строку с нуля. Он запускает pppd, тот читает системные настройки по умолчанию, затем пользовательский файл или файл терминала, затем аргументы, которые передаёт клиент, а сам клиент может ещё указать peer-файл. Любой из этих слоёв может нести плагин, метод аутентификации или директиву маршрутизации, и первый слой, задавший защищённый параметр, может закрепить его, заблокировав изменения из более поздних слоёв.

Поэтому полезный вопрос не в том, какой VPN сломан, а в том, какой слой задал настройку. Клиент, который формирует аргументы сам, выглядит самодостаточным, но всё равно наследует всё, что лежит в системном файле.

Определите источник строки, прежде чем её менять

Начните с процесса, который работает, пока соединение установлено. Командная строка показывает, какие файлы были переданы явно, а всё, что там не названо, пришло из пути по умолчанию.

ps -o pid=,args= -C pppd

Если в списке аргументов есть имя peer, прочитайте этот файл. Если его нет, искомая настройка находится в общем пути. Руководство pppd перечисляет порядок чтения этих файлов и параметры, которые обычный пользователь не может переопределить, поэтому более поздняя строка иногда не делает ничего. Защищённый параметр, например путь к плагину, нельзя заменить более поздней строкой уровня пользователя, так что правка не того файла не даёт видимого эффекта.

Строка плагина, которая тянется за каждым клиентом

Плагин, загруженный в системном файле, — худший из случаев: он меняет то, что попытается загрузить новый процесс PPP, независимо от того, какую кнопку нажал пользователь. Плагин L2TP — классический пример: он верен для одного профиля, но бессмысленен или вреден для профиля PPTP, который стартует с теми же настройками по умолчанию.

Перенесите его в peer-файл, который выбирает клиент, или в собственные настройки клиента для конкретного соединения, если он их поддерживает. Полное удаление чинит второй клиент и ломает первый — так эти проблемы и путешествуют между командами.

Проверьте каждый клиент после переноса

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

sudo pppd call office debug dump

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

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