Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

SIP_NAT_TRAVERSAL_FAIL IP-Телефония и СКУД

Траблшутинг прохождения SIP-трафика через NAT: STUN, TURN, ICE и rport

Обновлено: 24.08.2026 · Официальная документация ↗
  • Абонент успешно регистрируется на АТС, но входящие вызовы не доходят (сигнальный таймаут).
  • Односторонняя слышимость: инициатор звонка слышит собеседника, а в обратную сторону идет тишина.
  • SIP-ответы от АТС (200 OK, 180 Ringing) отправляются на серый локальный IP клиента вместо публичного IP маршрутизатора.
  • Разрыв соединения ровно через 30-32 секунды из-за отсутствия подтверждения ACK.

1. Проверка работы параметра rport (RFC 3581)

Убедитесь, что клиент отправляет параметр rport в заголовке Via. Ответ сервера должен содержать публичный IP и порт:

Via: SIP/2.0/UDP 192.168.1.50:5060;branch=z9hG4bK-abc123;rport=45123;received=203.0.113.10

2. Конфигурация NAT в FreeSWITCH / Asterisk

Для Asterisk (pjsip.conf):

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
local_net=192.168.0.0/16
local_net=10.0.0.0/8
external_media_address=203.0.113.1
external_signaling_address=203.0.113.1

[endpoint-template](!)
type=endpoint
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
direct_media=no

3. Настройка STUN/TURN на стороне SIP-клиента

Если IP-телефон находится за Symmetric NAT, укажите публичный STUN-сервер (например, stun.l.google.com:19302) или разверните Coturn для TURN-релеинга:

turnserver -a -o -v -u user:password -r realm.domain.com --listen-port=3478

4. Сокращение интервала Keep-Alive и регистрации

Для предотвращения закрытия NAT-сессий межсетевыми экранами установите QualifyFrequency = 25 и интервал регистрации Register Expiration = 120 секунд.

💡 Практика специалистов: Никогда не используйте опцию Direct Media (canreinvite=yes) для клиентов, находящихся за разными NAT-шлюзами. Медиапотоки должны всегда замыкаться на публичный IP вашей АТС/SBC.

Частые вопросы (FAQ)

Зачем нужен заголовок rport в SIP?

Без rport сервер отвечает на порт, указанный в теле Via (обычно стандартный 5060 клиента), который закрыт со стороны NAT. Параметр rport заставляет сервер слать ответ на реальный исходящий порт трансляции NAT.

В каких случаях STUN не помогает пройти NAT?

STUN не работает за Symmetric NAT (симметричной трансляцией), так как NAT выделяет разные внешние порты для разных целевых хостов. В этом случае требуется TURN-реле или режим rtp_symmetric на SBC/PBX.

Почему вызов сбрасывается ровно через 30 секунд?

Из-за NAT пакет ACK на 200 OK не доходит до сервера. Сервер считает транзакцию неподтвержденной, повторяет 200 OK несколько раз и отправляет BYE по истечении таймера T1/B (32 секунды).

Что делает опция rewrite_contact в Asterisk PJSIP?

Она заменяет адрес в заголовке Contact на фактический адрес источника пакета (IP:port), с которого пришел запрос, игнорируя локальный IP внутри тела SIP-сообщения.

Полезные материалы
Рекомендуем