Переносимость профиля OpenVPN: переносимые ключи против опций платформы
Файл .ovpn смешивает переносимый материал удостоверения с директивами, которые понимает только один клиент. Сравните и то и другое, прежде чем винить сертификат в сбое.
Один и тот же файл .ovpn в одном клиенте поднимает туннель, а в другом не запускается, и сертификат обычно первый подозреваемый. Чаще всего файл содержит директиву, которую реализует только один движок. Профиль — это договор с конкретным клиентом, а не переносимый скрипт.
Отделите то, что путешествует вместе с удостоверением, от того, что относится к платформе. Тогда сбой обычно называет себя сам.
Один файл, два договора
Профиль объединяет три вида содержимого: материал удостоверения, например сертификаты CA и клиента и закрытый ключ, транспортные факты, например удалённая конечная точка и протокол, и директивы поведения, например обработка DNS или параметры устройства. Первые два широко переносимы между движками, поддерживающими один протокол. Третий — это место, где реализации расходятся. Именно отношение ко всему файлу как к одной переносимой единице порождает запутанные сбои.
Файл, который работает в GUI на одной платформе, не обязательно годится для клиента командной строки на другой. Даже когда оба — OpenVPN, синтаксические анализаторы и наборы опций различаются. Поэтому успешный импорт не доказывает переносимость профиля.
Переносимый материал против опций платформы
Разделы удостоверения и транспорта — та часть, которую нужно сохранить. ca, cert, key и remote описывают, кто и куда подключается, и означают одно и то же для любого соответствующего клиента.
Директивы поведения — та часть, которую нужно сравнивать. block-outside-dns, например, существует, чтобы изменить поведение DNS в Windows. Клиент Unix может её вообще не распознать.
Читайте список опций принимающего клиента, а не отправляющего. Справочное руководство OpenVPN 2.6 описывает опции движка, и диалог импорта в GUI — не этот список.
Сначала ошибка анализатора, потом сертификат
Ошибка, называющая нераспознанную опцию, — это сбой анализатора, а не сбой аутентификации. Соединение так и не дошло до TLS, поэтому замена сертификатов не поможет. Прочитайте первую ошибку реального клиента и версии, затем удалите или замените только ту директиву, которую этот клиент не может реализовать. Удаление разделов сертификата или маршрутов, чтобы файл загрузился, — это путь, на котором работающий профиль становится небезопасным.
Если ошибка упоминает рукопожатие, сертификат или шифр, профиль разобран, и проблема в другом месте.
Держите исходный файл рядом с адаптированным. Когда адаптированный файл позже сломается, исходный — это контроль, который показывает, сдвинулось ли изменение или окружение.
Привилегии — вторая граница
Привилегии — другая граница: создание туннельного устройства, установка маршрутов и чтение закрытого ключа зависят от локальных разрешений. Файл ключа, доступный на чтение только root, — это обычное развёртывание, а не дефект профиля. Исправление относится к владению или возможностям, а не к файлу.
Запуск клиента с sudo может устранить локальный отказ в разрешении, но не может добавить директиву, которую двоичный файл не реализует. Он также меняет то, чьё связка ключей, пути конфигурации и контекст менеджера сети действуют, поэтому результат — не та же проверка.
Адаптируйте осознанно
Когда провайдер публикует отдельные профили, берите предназначенный для принимающего клиента. Адаптация файла другой платформы — последнее средство. Для неё нужна запись каждой изменённой опции и копия оригинала.
Проверяйте удостоверение, маршрутизацию и DNS как три отдельных результата. Профиль, который проходит аутентификацию и маршрутизацию, но ломает разрешение имён, — это частично адаптированный профиль, а не работающий.