Asterisk и SIP за NAT

Я пытаюсь настроить Asterisk-Server для приема звонков от клиента в другой сети. Сервер и клиент находятся за NAT.

Я уже активировал STUN на клиенте, но у меня все еще есть проблемы со звуком другой стороны. Через некоторое время вызов завершается, и в Asterisk регистрируется сообщение об истечении времени ожидания повторной передачи и появляется сообщение "Нет ответа на полученный критический пакет".

2 ответа

Самый простой и ленивый способ - установить поле звездочки в конфигурации 1:1 nat (часто называемое DMZ-хостом на домашних маршрутизаторах) и убедиться, что externip= установлен в sip.conf.

Обычные проблемы с SIP и NAT:

  • Заголовки SIP содержат информацию об источнике и адресате вызова (IP-адресах), которые могут быть недоступны для / от клиентов и серверов за пределами сети.
  • Обычно широкий диапазон портов должен быть перенаправлен для потоков RTP (аудио и все остальное)
  • Многие устройства NAT (например, упомянутый Ciscos James Sneeringer) пытаются "помочь" и обычно плохо справляются с манипулированием заголовками.
  • Некоторые SIP-устройства будут пытаться "перезвонить", что в основном означает установление прямого соединения с вызывающим устройством, а не маршрутизацию его через УАТС. NAT полностью ломает это.

Предполагая, что вы не можете использовать 1: 1 звездочку NAT, попробуйте следующее:

В общем разделе sip.conf:

  • Убедитесь, что установлен externip (externip=)
  • Установите nat=yes (это часто злоупотребляют / неправильно понимают, но попробуйте)
  • убедитесь, что установлена ​​маска localnet=/subnet (например, 192.168.1.23/255.255.255.0) (это приведет к тому, что asterisk будет записывать свой частный IP-адрес в заголовки SIP, отправленные на телефоны в этой сети, но везде будет использовать externip)

В разделе устройства для проблемного телефона: - qualify=5000 (Это приведет к тому, что звездочка будет проверять добавочный номер каждые 5 секунд. Отрегулируйте по желанию, если оно короче, чем тайм-аут NAT, должно сохраняться сопоставление)

На вашем NAT/ брандмауэре - убедитесь, что весь диапазон портов UDP, указанный в rtp.conf, имеет записи для пересылки на ваш сервер звездочек. Обычно это будет что-то вроде 10000-12000 (каждый вызов может использовать до 4 каналов RTP, так что настройка будет обрабатывать не менее 500 одновременных вызовов). И конечно же 5060 (SIP сигнализация)

Я нашел эту страницу полезной в прошлом: http://asteriskguru.com/tutorials/sip_nat_oneway_or_no_audio_asterisk.html

Если вы используете один из дистрибутивов Asterisk с веб-интерфейсом (FreePBX, Elastix, Trixbox, PBX-in-a-flash и т. Д.), Дайте мне знать, и я могу предложить некоторые настройки графического интерфейса, а не редактировать файлы conf напрямую. У меня было неудовольствие отладки проблем с большинством из них...

Стоит отметить, что после настройки внешнего IP-адреса вам, возможно, не потребуется (и, возможно, не нужно) настраивать адрес локальной сети. Согласно комментарию Джеймса: если ваш брандмауэр обрабатывает это для вас, это может создать невероятно загадочную ситуацию с обратной связью.

Другие вопросы по тегам