Мёртвый слушатель на 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 сервера и его минимальной версии, и что порт действительно перенаправлен на роутер.

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

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