Профиль OpenVPN для Windows не работает на Ubuntu: три уровня
Отправленная строка, предназначенная только для Windows, — всего лишь предупреждение. Тот же профиль не работает из терминала сначала из-за прав, а затем из-за отсутствующего помощника резолвера.
Запустите тот же профиль из терминала, и сообщение, которое большинство копирует, — это предупреждение, а не причина остановки клиента. Здесь отказывают три независимых уровня: отправленная директива, которую сборка Linux не реализует, права, необходимые для создания устройства tun, и помощник резолвера, превращающий соединение в работающий DNS. Проходите их по порядку, потому что каждый может скрывать следующий.
Сохраните загрузку такой, какой она пришла, и редактируйте копию, чтобы новая загрузка молча не отменила ваши изменения.
Прочитайте предупреждение, прежде чем винить его
block-outside-dns блокирует DNS в Windows через платформу фильтрации Windows, а клиенту Linux не к чему её привязать. Когда сервер отправляет её, клиент печатает строку о неизвестной опции для этой отправленной записи и продолжает, поскольку отправленная опция не считается фатальной. Но та же строка в вашем собственном файле — другое дело: там парсер останавливается. Решите, какая из двух у вас, прежде чем что-либо трогать, потому что только одна из них завершает запуск.
Чтобы убрать шум, отфильтруйте его до разбора: запись pull-filter ignore для этого имени или --ignore-unknown-option, когда строка находится в локальном файле. Оба заглушают строку, которую вы уже прочитали; ни один не исправляет сбой, который вы не диагностировали.
Права отказывают раньше всего остального
Устройство tun и сопровождающие его маршруты — привилегированные объекты, и обычная учётная запись не может их создать. Опция --user объясняет это разделение: демон отказывается от своих привилегий только после того, как привилегированная работа выполнена. Запустите его как root или через unit, который запускает его так, а затем ищите ошибку прав, прежде чем смотреть на сертификаты. Ослабление прав файла профиля не даёт процессу недостающих прав.
Ошибка TLS означает, что клиент прошёл этот уровень. Жалоба на устройство или маршрут означает, что он так и не достиг уровня выше.
Что делает GUI, а терминал — нет
Успешное подключение при том, что каждый запрос всё ещё не удаётся, — это третий уровень. NetworkManager сам выполняет работу резолвера, поэтому импорт с рабочего стола может раздавать DNS даже тогда, когда up-скрипт профиля ни разу не отработал успешно. Команда openvpn --config выполняет то, что называет --up, и если этого помощника нет, интерфейс появляется, а запросы продолжают идти к прежним серверам. Сравните скрипты двух путей, прежде чем что-либо устанавливать.
Используйте упакованный помощник для вашего дистрибутива; скрипт, скопированный из записи в блоге, обычно нацелен на другой резолвер. Интеграция, поставляемая для systemd-resolved, — не универсальный скрипт в стиле vpnc, и каждая ожидает собственных аргументов и переменных от клиента. Пользовательские up-скрипты также требуют script-security 2, прежде чем клиент вообще их выполнит.
Разделите уровни при следующем запуске
Запустите один раз с --verb 4 и читайте журнал в том порядке, в каком всё происходило: создание устройства, маршруты, рукопожатие TLS, затем вывод up-скрипта. Первый сбой в этой последовательности и стоит исправлять; всё после него обычно следствие. Туннель, который устанавливается, когда резолвер не работает, помещает вас на третий уровень, где сертификат не имеет значения. Оставьте загруженный профиль нетронутым, пока сравниваете.
Как только каждая правка оператора даёт ещё одну отклонённую строку, файл нацелен на другую платформу. Запросите экспорт для Linux вместо того, чтобы строить постоянный список фильтров.
Отметьте, какой уровень отказал и что его изменило, иначе следующий человек, получивший тот же файл, тоже остановится на предупреждении.