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