Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PUSH_REQUEST_FAILED Сетевое оборудование и VPN

Ошибка OpenVPN: PUSH_REQUEST: Client failed to obtain pushed server parameters

Обновлено: 24.08.2026 · Официальная документация ↗
  • Клиент успешно проходит TLS аутентификацию, но застревает на строке: SENT CONTROL [server]: 'PUSH_REQUEST' (status=1).
  • После нескольких попыток клиент выдает: No response from server during push request и разрывает соединение.
  • Клиент не получает от сервера IP-адрес, сетевую маску, DNS и маршруты.
  • В серверных логах фиксируется зависание auth-плагинов или блокировка пула IP-адресов.

1. Проверка конфигурации клиента: наличие директивы pull

Если клиентский конфигурационный файл не содержит директиву client или явную команду pull, он не будет запрашивать параметры конфигурации у сервера:

# Убедитесь, что в начале client.ovpn указано:
client
dev tun
proto udp

# Или явно включите запрос параметров:
pull

2. Диагностика скриптов аутентификации (auth-user-pass-verify)

Если на сервере настроена аутентификация по логину/паролю, сервер не ответит на PUSH_REQUEST до тех пор, пока внешний auth-скрипт не вернет код 0:

# Проверка времени выполнения auth-скрипта в server.conf
# Скрипт должен отрабатывать быстрее, чем handshake-window (обычно < 5 сек)
auth-user-pass-verify /etc/openvpn/scripts/auth.sh via-env
script-security 2

3. Проверка директивы pull-filter на стороне клиента

Проверьте, не отбрасывает ли клиент жизненно важные параметры (например, шлюз или топологию):

# Убедитесь, что нет блокирующих фильтров вида:
# pull-filter ignore "topology"
# pull-filter ignore "ip-win32"

4. Увеличение времени ожидания push-reply

Для каналов с высокой задержкой увеличьте окно рукопожатия:

# Добавьте в конфиг клиента:
handshake-window 30
push-peer-info
💡 Практика специалистов: Если вы используете двухфакторную аутентификацию (2FA/OTP), используйте директиву static-challenge или auth-gen-token на сервере, чтобы избежать зависания клиента в ожидании ответа при повторной смене ключей.

Частые вопросы (FAQ)

Что именно передает сервер в ответ на PUSH_REQUEST?

Сервер отправляет директиву PUSH_REPLY со списком сетевых настроек: ip-адрес клиента (ifconfig), маску, маршруты (route), DNS серверы (dhcp-option DNS) и параметры шлюза.

Почему клиент не принимает push 'route ...' от сервера?

Если на клиенте установлена директива route-nopull, он игнорирует все переданные маршруты от сервера, требуя их статического описания в клиентском конфиге.

Как посмотреть точный текст отправленного PUSH_REPLY?

Установите verb 4 или verb 5 в файле конфигурации клиента, и в логах появится расшифровка всего блока переданных параметров.

Что делать, если сервер исчерпал свободные адреса в ifconfig-pool?

Сервер проигнорирует PUSH_REQUEST, если в пуле нет свободных IP. Расширьте размер маски подсети в директиве server (например, с /24 на /22).

Полезные материалы
Рекомендуем