SIP Error 408 Request Timeout: диагностика сетевых потерь и таймаутов
- Клиент отправляет
INVITEилиREGISTERи не получает ответа (сброс по таймауту408 Request Timeout). - Вызовы прерываются через 32 секунды молчания после отправки запроса.
- Периодическая потеря регистрации внешних SIP-клиентов за NAT.
1. Проверка сетевой связности и прохождения UDP трафика
# Захват SIP пакетов на сетевом интерфейсе сервера
tcpdump -nnvv -i eth0 port 5060
# Проверка открытости порта через nmap / nc
nc -z -v -u 198.51.100.1 50602. Настройка прохождения NAT в Asterisk PJSIP
Добавьте внешние IP-адреса и локальные подсети в /etc/asterisk/pjsip.conf:
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
local_net=192.168.1.0/24
local_net=10.0.0.0/8
external_media_address=203.0.113.10 ; Публичный IP сервера
external_signaling_address=203.0.113.10
[endpoint_template](!)
type=endpoint
force_rport=yes
rewrite_contact=yes
rtp_symmetric=yes3. Увеличение таймеров ответа шлюза
Если вызываемая сторона долго отвечает (например, мобильный роуминг):
; Увеличение времени ожидания ответа на INVITE в extensions.conf (до 45 сек)
exten => _X.,1,Dial(PJSIP/${EXTEN}@trunk,45) Частые вопросы (FAQ)
Что означает 32 секунды до появления ошибки 408?
Это стандартный таймер Timer B ядра RFC 3261 (64 * T1, где T1 = 500ms = 32s). Если за это время сервер не прислал предварительный ответ 100 Trying или 180 Ringing, клиент принудительно завершает транзакцию с кодом 408.
Почему 408 ошибка часто возникает только за NAT?
Маршрутизатор закрывает сопоставление портов (NAT UDP state table) быстрее, чем клиент отправляет keep-alive пакеты. Уменьшите параметр qualify_frequency в PJSIP до 20-30 секунд.