Одностороннее аудио только при регистрации на OpenSIP перед Asterisk
Давний пользователь Asterisk, но новичок в OpenSIP. У меня есть SIP-телефон, работающий со звуком в обоих направлениях при регистрации и получении звонков непосредственно из Asterisk. Тот же телефон работает с двухсторонним звуком, если я регистрируюсь на OpenSIP и получаю звонок от OpenSIP, но только ЕСЛИ звонок исходил из другого места, а не из нашего сервера Asterisk.
Пример, который работает:
Звонок из PSTN > OpenSIP> SIP-телефон (зарегистрированный на OpenSIP)
Звонок из PSTN > Asterisk > SIP-телефон (зарегистрирован в Asterisk)
Пример, который НЕ работает, проблемы со звуком в одну сторону:
Звонок из PSTN > Asterisk > OpenSIP> SIP-телефон (зарегистрированный на OpenSIP)
Я пытаюсь выгрузить все наши регистрации из Asterisk в OpenSIP, но когда мы передаем вызов из Asterisk в OpenSIP, звонок идет на телефон, зарегистрированный в OpenSIP, но с односторонним звуком.
Не верьте, что это проблема брандмауэра, потому что мы тестировали, когда брандмауэры как на Asterisk, так и на OpenSIP отключены.
Я проверил множество теорий, но сейчас у меня нет идей. Я думал, что попрошу здесь умных людей.
Заранее благодарю за любую помощь.
1 ответ
Я исправил это, установив nat=yes в sip.conf на сервере Asterisk в конфигурации для сервера OpenSIPs.
Я заметил, что когда я тестировал более новую версию Asterisk, у меня было больше ошибок в консоли Asterisk. Я заметил, что Asterisk пытается отправить RTP на частный IP-адрес локальной сети конечной точки (мой sip-телефон) вместо общедоступного IP-адреса моего интернет-соединения, где находится телефон. Не знаю, почему он пытался это сделать. Мне интересно, нужно ли модифицировать OpenSIP. Меня озадачило то, что мне НИКОГДА не приходилось устанавливать nat=yes на Asterisk при отправке вызовов на серверы со статическим публичным IP. В этом случае я отправляю вызовы на добавочный номер, например 456@xxx.xxx.xxx.xxx, где xxx - это общедоступный статический IP-адрес моего сервера OpenSIP, поэтому NAT не задействован. NAT вступает в игру, когда вызов отправляется в конечную точку, которая находится за NAT. Для меня не имеет смысла, почему я должен был установить nat=yes, чтобы эта работа работала, но это было немедленное исправление.Позже исследую подробнее, возможно, потребуется изменить на стороне OpenSIP вместо nat=yes на стороне Asterisk.