← Все кейсы
КЕЙС Root Cause Analysis Телефония

Регистрация есть, а звонка нет: как NAT душил телефонию

Не все протоколы одинаково дружат с NAT. Реальная рабочая история. Название компании намеренно не указано.

Проблема

Внешние звонки периодически ломались одинаково странно: номер регистрировался нормально, звонок как будто устанавливался, а голос не шёл ни в одну сторону. Первое подозрение всегда падало на оператора или качество линии, но проблема повторялась у разных абонентов и разных провайдеров.

Что я сделал

Я знал, что телефония в целом плохо дружит с NAT, а конкретно SIP страдает от этого сильнее других: сигнализация и медиа-поток идут отдельно, и если голосовой RTC-трафик не пробивает NAT, регистрация номера может пройти успешно, а звук так и не пойдёт. При этом у Asterisk есть собственный протокол IAX2, изначально спроектированный именно для нормальной работы через NAT, потому что он использует один UDP-порт и для сигнализации, и для голоса.

Вместо того чтобы точечно чинить каждый жалобный случай, я перевёл пару номеров на IAX2 и протестировал звонки в тех же условиях, где раньше пропадал звук. Всё отработало стабильно с первого раза.

Результат

Убедившись, что гипотеза подтвердилась, я перевёл всю номерную ёмкость на IAX2. Проблема с пропадающим звуком на внешних звонках закрылась полностью и больше не возвращалась, без смены оборудования, операторов или очередной охоты за проблемным абонентом.

Знать инструмент глубже, чем требует тикет Иногда правильное решение это не workaround вокруг ограничения, а выбор протокола или инструмента, изначально спроектированного под ваше конкретное ограничение. Чтобы это увидеть, нужно понимать систему на уровне ниже, чем обычно требует роль продакта.