Клиент говорит, что подключён, сервер видит партнёра, а приложение всё равно никуда не попадает. В этот момент полезный вопрос не о том, какой шифр менять, а о том, какой канал отказал. OpenVPN явно называет две функции: канал управления, который договаривается о сеансе и управляет им, и канал данных, который несёт защищённый трафик. IKEv2 выражает похожее разделение через ассоциацию IKE и ассоциацию CHILD. Выполняйте проверки ниже по порядку, потому что исправление пути данных, применённое к сбою пути управления, тратит окно изменений.

Назовите канал до начала отладки

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

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

Проверьте обмен управления

Убедитесь, что рукопожатие завершается и что обе стороны согласны насчёт транспорта, версии TLS и метода аутентификации. Журналы OpenVPN печатают отдельные строки для канала управления и канала данных, и именно в строке управления проявляется несовпадение сертификата, версии TLS или tls-crypt.

Если обмен управления срывается, проверьте доступный порт, цепочку сертификатов и даты её действия, системные часы, пересечение шифров клиента и сервера и любой ключ tls-auth или tls-crypt. Большая цепочка сертификатов может также отказать на MTU пути до завершения любой аутентификации, что выглядит как тайм-аут, а не как криптографическая ошибка.

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

Проверьте канал данных отдельно

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

Затем проверьте, что установил сеанс. PUSH_REPLY может добавить маршруты, DNS-сервер и директиву redirect-gateway, и любое из этого может отправить трафик туда, где приложение не сможет его использовать. Для IKEv2 эквивалентный вопрос — совпадают ли селекторы ассоциации CHILD с адресами в реальном потоке.

tls-auth и tls-crypt относятся к каналу управления. Они аутентифицируют или шифруют рукопожатие и не выбирают шифр данных приложения. Если вы добавляете один из них в ожидании изменения пути данных, единственное, что вы изменили, — это рукопожатие.

Соотнесите названия с IKEv2 и OpenVPN

У IKEv2 есть ассоциация безопасности IKE и одна или несколько ассоциаций CHILD. Ассоциация IKE несёт обмены управления; ассоциация CHILD несёт защищённый трафик и свои селекторы. Они согласуются и обновляют ключи по отдельным графикам, поэтому одна может быть здоровой, пока другая нет.

У ESP внутри нет канала управления в стиле TLS. Протокол управления — это IKE, а ESP — защищённая полезная нагрузка. Называть ESP каналом данных — вольное сокращение, которое начинает путать при чтении перехвата пакетов, потому что перехват показывает сообщения IKE и пакеты ESP как разные протоколы на линии.

Держите соответствие явным в своих заметках: канал управления OpenVPN и IKE SA — это сторона управления, канал данных OpenVPN и CHILD SA — это сторона трафика, и реализации не взаимозаменяемы, даже когда разделение выглядит похоже.

Перестаньте менять не ту настройку

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

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

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

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