Я пытаюсь настроить сервер Asterisk для приема вызовов от клиента в другой сети. Сервер и клиент находятся за NAT.
Я уже активировал STUN на клиенте, но все еще не могу слышать другую сторону на обоих. Через некоторое время вызов завершается, и в журнале Asterisk появляется сообщение о том, что истекло время ожидания повторной передачи, и появляется сообщение Нет ответа на полученный критический пакет.
Самый простой и ленивый способ обойти это - установить для вашего поля звездочки конфигурацию 1: 1 nat (часто называемую хостом DMZ на домашних маршрутизаторах) и убедиться, что externip = установлен в sip.conf.
Обычные проблемы с SIP и NAT:
Предполагая, что вы не можете использовать звездочку NAT 1: 1, попробуйте следующее:
В общем разделе sip.conf:
В разделе устройств для проблемного телефона: - qualify = 5000 (Это приведет к тому, что звездочка будет проверять добавочный номер каждые 5 секунд. Отрегулируйте по желанию, если он короче тайм-аута NAT, сопоставление должно сохраняться)
На вашем NAT / брандмауэре - убедитесь, что весь диапазон портов UDP, перечисленных в rtp.conf, имеет записи пересылки на ваш сервер asterisk. Обычно это примерно 10000-12000 (каждый вызов может использовать до 4 каналов RTP, так что этот параметр будет обрабатывать не менее 500 одновременных вызовов). И конечно же 5060 (сигнализация SIP)
Я нашел эту страницу полезной в прошлом: http://asteriskguru.com/tutorials/sip_nat_oneway_or_no_audio_asterisk.html
Если вы используете один из дистрибутивов звездочки с веб-интерфейсом (FreePBX, Elastix, Trixbox, PBX-in-a-flash и т.д.), дайте мне знать, и я могу предложить некоторые настройки графического интерфейса, а не редактировать файлы conf напрямую. У меня было неудовольствие отладить проблемы с большинством из них ...
Стоит отметить, что после настройки внешнего IP-адреса вам может не понадобиться (и, возможно, не нужно) настраивать локальный сетевой адрес. Комментарий Джеймса: если ваш брандмауэр обрабатывает это за вас, он может создать невероятно загадочную петлевую ситуацию.