Слушатель OpenVPN 2.5 на DD-WRT умер? Прочитайте созданный конфиг
OpenVPN 2.5 отвергает конфигурации, которые принимали старые сборки. На DD-WRT прочитайте созданный файл и журнал демона, прежде чем трогать firewall.
Мёртвый слушатель на DD-WRT обычно означает, что демон завершился при разборе своей конфигурации, а не что правило firewall заблокировало порт. OpenVPN 2.5 ужесточил несколько значений по умолчанию, на которые полагались старые конфигурации, и созданная конфигурация, работавшая на старой сборке, может быть отклонена ещё до открытия сокета. Причина в журнале самого роутера, а входные данные — в созданном файле. Читать и то и другое в таком порядке быстрее любого перехвата пакетов.
Демон — не firewall
Различие важно, потому что снаружи обе неисправности выглядят одинаково: клиент отправляет рукопожатие и ничего не получает. Одна — процесс, который не работает, другая — процесс, который работает и фильтрует.
Разделите их двумя проверками, прежде чем что-то менять, потому что правка firewall на мёртвом демоне лишь добавляет вторую переменную.
Прочитайте конфигурацию, которую создал DD-WRT
DD-WRT не передаёт OpenVPN текст, который вы ввели в веб-интерфейсе. Он записывает созданную конфигурацию в /tmp/openvpn/openvpn.conf и запускает демон с этим файлом, поэтому поля интерфейса и любой текст в Additional Config объединяются ещё до того, как OpenVPN их увидит. Если вы отлаживаете форму, а не созданный файл, вы читаете замысел, а не фактические входные данные. Скопируйте этот файл в постоянное место, пока перезагрузка /tmp его не очистила.
Сравните созданный файл с тем, что вы задумывали, особенно там, где интерфейс записывает директиву, которую вы никогда не выбирали. Раскрывающийся список, выдающий устаревшую опцию, невидим в форме и смертелен для демона.
Если созданный файл пуст или отсутствует, демон даже не дошёл до запуска, и проблема находится выше OpenVPN.
Что OpenVPN 2.5 перестал принимать
OpenVPN 2.5 заменил ncp-ciphers на data-ciphers, а также поднял минимальную версию TLS по умолчанию до 1.2. Он изменил и обработку сжатия: сторона, предлагающая сжатие, отклоняется, если конфигурация явно этого не разрешает, и объявил устаревшими старые имена опций, такие как ns-cert-type в пользу remote-cert-tls. Каждое из этих изменений превращает ранее рабочую конфигурацию в отказ разбора или согласования.
Режим отказа зависит от директивы. Неизвестная или удалённая опция останавливает демон при запуске — это ваш мёртвый слушатель. Несовпадение при согласовании оставляет демон работать и отвергает клиентов, что со стороны клиента выглядит как проблема firewall.
Читайте первую ошибку в журнале, а не последнюю. Разбор останавливается на первой плохой директиве, и всё после неё — шум от завершения.
Предусловия, специфичные для Broadcom
На сборках Broadcom туннельное устройство должно существовать до того, как демон сможет его использовать. Проверьте, что модуль tun загружен и что /dev/net/tun присутствует, потому что отсутствующее устройство даёт отказ запуска, не имеющий отношения к сертификатам. То же касается вспомогательных скриптов, которые DD-WRT создаёт для маршрутов и DNS: если их нет или они не исполняемые, демон может запуститься и всё равно не завершить настройку.
Запустите демон на переднем плане с большей подробностью на созданной конфигурации, когда нужна настоящая ошибка. Запуск на переднем плане печатает ошибку разбора, которую проглотил init-скрипт.
Затем верните обычную службу, потому что демон на переднем плане и init-скрипт будут бороться за порт.
Докажите, что слушатель существует, прежде чем отлаживать клиентов
Подтвердите процесс и сокет по отдельности: одна команда для работающего демона, другая — для привязанного порта UDP на ожидаемом адресе. Процесс без сокета означает, что он всё ещё настраивается или привязан к неверному интерфейсу. Эта пара — полезный тест именно потому, что одна половина не может быть верной без другой.
Отладка на стороне клиента имеет смысл только после того, как слушатель существует. Тогда проверьте, что шифр и настройки TLS клиента соответствуют списку data-ciphers сервера и его минимальной версии, и что порт действительно перенаправлен на роутер.
Сохраните созданную конфигурацию и строку журнала, которая доказала исправление. Следующее обновление прошивки может снова изменить значения по умолчанию, и именно эта запись превращает повтор в пятиминутную проверку.