Ошибка OpenVPN: PUSH_REQUEST: Client failed to obtain pushed server parameters
- Клиент успешно проходит 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
# Или явно включите запрос параметров:
pull2. Диагностика скриптов аутентификации (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 23. Проверка директивы pull-filter на стороне клиента
Проверьте, не отбрасывает ли клиент жизненно важные параметры (например, шлюз или топологию):
# Убедитесь, что нет блокирующих фильтров вида:
# pull-filter ignore "topology"
# pull-filter ignore "ip-win32"4. Увеличение времени ожидания push-reply
Для каналов с высокой задержкой увеличьте окно рукопожатия:
# Добавьте в конфиг клиента:
handshake-window 30
push-peer-info Частые вопросы (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).