SIP 502 Bad Gateway: недоступность вышестоящего шлюза и транков PSTN
Сбой вызовов на внешние городские и мобильные направления через операторов связи:
- При попытке звонка во внешнюю сеть абонент получает ответ
SIP/2.0 502 Bad Gateway. - Промежуточный сервер (SBC или прокси) не смог получить корректный ответ от целевого медиашлюза или вышестоящей телефонной сети (PSTN/ТфОП).
- В логах цифрового шлюза E1/ISDN PRI регистрируются аварии физического уровня:
Red Alarm,Yellow Alarm,Loss of Signal (LOS). - Вышестоящий транзитный узел возвращает некорректный ответ (Invalid Response) или сбрасывает TCP/TLS соединение.
1. Проверка доступности вышестоящего шлюза / SBC
Проверьте сетевую связность и задержки до вышестоящего SIP-сервера:
ping -c 5 <IP_upstream_шлюза>
# Проверка прохождения SIP пакетов:
asterisk -rx "pjsip show endpoints" | grep -E "trunk|outbound"2. Диагностика E1 / T1 PRI потоков на медиашлюзах
Если 502 генерируется шлюзом цифровых потоков (например, шлюзом Dinstar, Cisco или платой Digium/Sangoma):
# Для плат DAHDI в Linux:
dahdi_scan
dahdi_tool
asterisk -rx "pri show spans"Убедитесь, что состояние потока находится в статусе Up, Active. При наличии Alarm проверьте кабель распиновки RJ-48 (витая пара 1-2 и 4-5) и согласование синхронизации (Master/Slave Clocking).
3. Анализ таймаутов прокси-сервера (Kamailio / OpenSIPS)
Если Kamailio выступает в роли балансировщика и не получает ответ от downstream серверов:
failure_route[FAIL_GW] {
if (t_check_status("502|503")) {
# Переключение на резервный транк оператора
if (use_next_gw()) {
t_relay();
exit;
} else {
t_reply("502", "All Upstream Gateways Failed");
exit;
}
}
}4. Настройка Failover маршрутов в диалплане FreePBX
В веб-интерфейсе FreePBX (Connectivity -> Outbound Routes) добавьте несколько транков в список Trunk Sequence for Matched Routes. Если основной провайдер вернет 502, АТС автоматически направит вызов через резервный канал.
Частые вопросы (FAQ)
В чем разница между SIP 502 Bad Gateway и SIP 504 Server Time-out?
Код 502 означает, что вышестоящий сервер ответил, но прислал недопустимый или ошибочный ответ (Invalid/Bogus response), либо сообщил о физической недоступности своей сети. Код 504 означает полное отсутствие какого-либо ответа по таймауту.
Может ли DNS-сбой вызывать ошибку 502?
Да, если прокси-сервер пытается смаршрутизировать вызов на доменное имя оператора по SRV/NAPTR записям, но DNS возвращает некорректный хост или несуществующий IP-адрес.
Что означает 502 при звонках на аналоговые FXO шлюзы?
Это указывает на то, что шлюз зафиксировал обрыв физической телефонной линии (Line Unplugged / No Loop Current) и не может занять транк для набора номера.
Как перехватить 502 в диалплане Asterisk?
Используйте проверку переменной ${HANGUPCAUSE}: same => n,GotoIf($["${HANGUPCAUSE}" = "38"]?try_backup_trunk). (Код ISDN Cause 38 соответствует Network out of order / Bad Gateway).