Ломает ли общий файл параметров pppd второй VPN?
Два VPN-клиента на PPP могут читать одни и те же настройки pppd по умолчанию, поэтому исправление для одного молча меняет другой. Прежде чем править файл, выясните, какому слою принадлежит параметр.
Вы добавляете одну строку, чтобы упрямый профиль 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Повторите для второго клиента и сравните два вывода. Перенесённый параметр должен появиться ровно в одном из них. Если он есть в обоих, клиент создаёт его заново, и исправление относится к этому профилю, а не к общему файлу. Запишите, где теперь живёт настройка, рядом с соединением, чтобы следующий человек не открывал эту связку заново, снова её ломая.