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

Пройдите четыре уровня по порядку

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

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

Начните со службы, которая не работает дважды

В Windows корпоративный клиент обычно больше туннеля, потому что вместе с профилем устанавливает службу, драйвер фильтра и иногда поставщика учётных данных. Запишите, какие службы работают до изменения и снова после него, затем сравните два списка вместо перезагрузки, пока что-то не заработает. Службы могут исключать друг друга через зависимости, когда запуск одной останавливает другую, и тот же образец встречается в macOS с задачами launchd и общим демоном. Клиент, который запускается и завершается за секунды, сообщает о владении, а не о конфигурации.

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

Затем спросите, кому принадлежит порт

Владение портом — самое ясное доказательство, которое вы получите, потому что ошибка привязки прямо называет конфликт. Две реализации IKE не могут обе отвечать на одном и том же локальном адресе и порте UDP, и никакое количество повторов этого не меняет.

Get-NetUDPEndpoint -LocalPort 500,4500 | Select-Object LocalAddress,LocalPort,OwningProcess
netstat -ano | findstr :500
sudo lsof -nP -iUDP:500
ss -lunp | grep -E ':500|:4500'

Какая бы строка ни подходила вашей платформе, нужный вам ответ — это процесс и служба, которая его породила. Если слушателем является встроенная служба IKE, второй клиент — незваный гость; если это агент поставщика, то встроенный клиент — незваный гость. Решите, какой из них может запускаться при входе, и отключите автозапуск другого, а не убивайте его в каждой сессии.

Драйвер фильтра находится ниже ваших маршрутов

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

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

Решите, какой продукт владеет загрузкой, затем запишите это

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

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

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