OpenVPN TLS Error: Local/remote TLS keys are out of sync — устранение
Во время активной передачи данных через OpenVPN туннель фиксируются следующие проблемы:
- Внезапный разрыв сессии раз в час со следующей ошибкой в логах:
TLS Error: local/remote TLS keys are out of sync: [0] 1 [0] 2илиTLS Error: Unknown TLSError. - Зависание SSH-сессий и передачи больших файлов ровно через 3600 секунд после подключения.
- Клиент пытается выполнить повторную аутентификацию (Renegotiation), но сервер сбрасывает соединение.
1. Механизм планового пересогласования ключей (Renegotiation)
OpenVPN в целях безопасности по умолчанию инициирует процедуру ротации сессионных ключей TLS каждые 3600 секунд (1 час), управляемую директивой reneg-sec. Во время этого процесса создается новый параллельный канал TLS. Если в момент пересогласования в сети происходят потери пакетов или на сервере и клиенте выставлены конфликтующие параметры времени жизни сессии, структуры ключей рассинхронизируются, и туннель падает.
2. Синхронизация параметра reneg-sec
Если на сервере и клиенте заданы разные интервалы reneg-sec, приоритет имеет меньшее значение. Рекомендуется настроить единое значение на обоих концах или увеличить интервал до 0 (отключение ротации по времени, не рекомендуется для открытых сетей):
# Добавьте в конфигурацию сервера (/etc/openvpn/server.conf)
reneg-sec 28800 # Ротация ключей каждые 8 часов
# Добавьте в конфигурацию клиента (.ovpn)
reneg-sec 288003. Увеличение таймаута перехода на новые ключи
Для каналов с высоким джиттером и потерями увеличьте допустимый интервал перехода на новую SA через директиву hand-window (по умолчанию 60 сек):
# Увеличение допустимого окна согласования до 120 секунд
hand-window 120
tran-window 36004. Устранение проблем с фрагментацией пакетов управления
# Добавьте для стабилизации доставки TLS пакетов
link-mtu 1500
tun-mtu 1500
mssfix 13605. Перезапуск сервиса OpenVPN
systemctl restart openvpn-server@server Частые вопросы (FAQ)
Почему соединение OpenVPN обрывается ровно через 60 минут?
Это стандартное поведение директивы 'reneg-sec 3600'. Через 60 минут клиент и сервер начинают процедуру ротации ключей. Если процесс завершается неудачно из-за потерь в сети, сессия принудительно закрывается.
Безопасно ли отключать ротацию ключей с помощью reneg-sec 0?
Полное отключение не рекомендуется, так как при передаче сотен терабайт данных на одном ключе возрастает риск криптоаналитических атак на шифр.
Что делает директива tran-window?
Директива tran-window определяет период времени (в секундах), в течение которого старый и новый сессионные ключи являются одновременно действительными для расшифровки опоздавших пакетов.
Как влияет параметр ping-restart на ошибку рассинхронизации?
Если во время пересогласования ключей обмен задерживается, таймер ping-restart может сработать раньше завершения рукопожатия и аварийно перезапустить весь процесс.