Asterisk PJSIP: Temporal response 408 Request Timeout на исходящей регистрации
- В системном журнале фиксируется
WARNING res_pjsip_outbound_registration.c: Temporal response '408 Request Timeout' received on registration attempt to 'sip:trunk.net'. - Регистрация транка переходит в статус
Unregisteredили циклическое состояниеRetrying. - Пакеты SIP REGISTER уходят с сервера, но ответы от оборудования провайдера не возвращаются.
- Периодическое падение транка при отсутствии голосовой активности в течение 5-15 минут.
1. Природа ошибки 408 Request Timeout при регистрации
Код 408 Request Timeout на исходящей регистрации генерируется внутренним стеком транзакций PJSIP, когда после отправки пакета REGISTER сервер не получил ни одного ответа (ни 100 Trying, ни 401 Unauthorized, ни 200 OK) в течение таймера транзакции Timer B (32 секунды).
2. Проверка маршрутизации и сетевой доступности
# Проверка доступности порта оператора
nc -z -v -u sip.trunk.net 5060
# Проверка разрешения DNS SRV записей
dig _sip._udp.sip.trunk.net SRVЗапустите онлайн-мониторинг исходящих пакетов:
sngrep host sip.trunk.net3. Оптимизация NAT и локального сетевого транспорта
В файле /etc/asterisk/pjsip.conf настройте транспорт и внешний адрес:
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
; Укажите реальный публичный IP сервера при работе за NAT
local_net=192.168.0.0/16
local_net=10.0.0.0/8
external_media_address=203.0.113.10
external_signaling_address=203.0.113.104. Тюнинг интервалов повтора регистрации в секции registration
[provider_reg]
type=registration
transport=transport-udp
outbound_auth=provider_auth
server_uri=sip:sip.trunk.net:5060
client_uri=sip:74950001122@sip.trunk.net:5060
; Уменьшение интервала регистрации для поддержания NAT таблицы
expiration=120
retry_interval=15
max_retries=100
auth_rejection_permanent=no5. Проверка правил локального брандмауэра
iptables -A INPUT -p udp -m udp --sport 5060 -j ACCEPT
conntrack -F # Очистка зависших состояний conntrack таблицы Частые вопросы (FAQ)
В чем разница между реальным ответом 408 от сервера и локальным таймаутом PJSIP?
В 99% случаев 408 генерируется локально самим Asterisk, так как удаленный сервер провайдера просто не ответил на UDP-пакет (потеря пакета в сети или блокировка файрволом).
Почему регистрация работает по TCP, но падает по UDP с ошибкой 408?
Размер пакета REGISTER с учетом дополнительных заголовков может превышать MTU (1500 байт), вызывая фрагментацию IP-пакетов, которые отбрасываются промежуточными маршрутизаторами.
Как уменьшить время обнаружения недоступности провайдера?
Уменьшите параметр retry_interval в секции type=registration (например, до 10-15 секунд).
Поможет ли смена порта bind на нестандартный?
Да, если интернет-провайдер фильтрует стандартный UDP порт 5060 или на клиентском роутере некорректно работает встроенный модуль SIP ALG.