Звездный сервер на базе Linux, программный телефон SIP, способный слышать звук, но не отправлять звук другим
Запуск Ubuntu 14.04 LTS и Asterisk 11.7.0. Сервер настроен для SIP-телефонов, чтобы использовать нашу магистраль SIP через voip.ms/didlogic (две разные службы, потому что нам нравятся международные тарифы на didlogic, но он не имеет всех внутренних функций, которые имеет voip.ms; Не относится к вопрос под рукой, хотя). Достаточно сказать, что у меня мало знаний об IP-телефонии.
Когда программный телефон SIP от работающего на дому сотрудника пытается позвонить, скажем, на стационарную линию, программный телефон SIP будет принимать аудио, но не отправлять его. Лицо, находящееся на стационарной линии, не получит звук с софтфона SIP. Классическая проблема односторонней передачи звука, от которой страдает SIP.
Я не могу воссоздать проблему. 100% софтфонов сотрудников работают локально в офисе. Я также протестировал программный телефон из своего домашнего подключения, я использовал VPN для туннелирования и подключения через страны на полпути по всему миру, чтобы проверить наличие задержек, и у меня был член семьи, который жил на расстоянии многих миль, и они были успешными. Я сбит с толку.
Также имейте в виду, что я пробовал разные системы сотрудников, как Mac, так и ПК, и я открыл порты на их брандмауэрах, полностью отключил брандмауэры и так далее.
В целях тестирования у меня нет правил в IPTables, и сервер не находится за NAT нашего локального маршрутизатора (потребительские маршрутизаторы называют это DMZ).
Конфигурация Asterisk является стандартной из двух, за исключением двух: порт связывания SIP - 5070, а диапазон портов RTP - 20001-30000. Это позволяет избежать спама в соединении от иностранных роботов, которые ищут бесплатную поездку.
Ниже приведен отрывок из sip.conf от Asterisk (определенные детали отредактированы, вам может понадобиться прокрутить этот образец)
[general]
register => REDACTED:REDACTED@sip.didlogic.net:5060
register => REDACTED:REDACTED@losangeles.voip.ms:5060
externip=REDACTED
localnet=192.168.0.0/255.255.255.0
bindaddr=0.0.0.0
bindport=5070
allowguest=no
alwaysauthreject=yes
cancallforward=yes
canreinvite=nonat
disallow=all
allow=g722
allow=ulaw
allow=alaw
qualify=yes
nat=force_rport,comedia
[didlogic]
host=sip.didlogic.net
username=REDACTED
authname=REDACTED
secret=REDACTED
insecure=port
type=peer
[vms-incoming]
host=losangeles.voip.ms
user=REDACTED
username=REDACTED
fromuser=REDACTED
authuser=REDACTED
secret=REDACTED
context=vms-incoming
insecure=invite
type=peer
trustrpid=yes
sendrpid=yes
[sip-softphone]
context=Sales
secret=REDACTED
type=friend
host=dynamic
fromuser=sip-softphone
authuser=sip-softphone
insecure=port
Две мысли приходят на ум на стороне сервера: я должен настроить свои магистральные сервисы на type = friend? И правильные ли параметры конфигурации, связанные с NAT, находятся в нужном месте? Особенно canreinvite = nonat и nat = force_rport, комедии
Мне не повезло поменять софтфоны. Для нашего теста давайте рассмотрим готовую установку Zoiper. Это настроено для подключения к нашему IP-адресу и нестандартному SIP-порту 5070, и оно настроено на использование службы STUN по умолчанию, stun.zoiper.com. Он отлично регистрируется и набирает номер, поэтому кажется, что SIP-сигнализация в порядке, это просто проблема с RTP-аудио. У меня есть подозрение, что я должен выбрать фиксированный порт RTP ("Предпочтения"> "Дополнительно"), который находится в диапазоне 20001–30000, но, опять же, личное тестирование, похоже, подтверждает, что установка из коробки работает.
Я открыт для публикации отладочных отрывков SIP, когда я могу проверить с сотрудником, но есть идеи, почему это сработало бы для меня и моего родственника в нескольких ситуациях, но не для моих общих сотрудников? Может ли быть так, что у некоторых людей дома есть маршрутизаторы с просто ужасно сломанными реализациями NAT, или я должен переключиться на кодек с гораздо меньшей пропускной способностью, такой как iLBC?
Другая возможность состоит в том, что мой дом, мои родственники (40 миль) и наш офис используют Time Warner в качестве нашего интернет-провайдера. Возможно, есть некоторые проблемы с интернет-провайдерами, которые необходимо обойти с умной конфигурацией.
Изменить: я смог сделать некоторые интересные испытания, найдя открытую случайную сеть Wi-Fi. В rtp.conf я установил strictrtp = нет. В sip.conf я перенес настройки nat и canreinvite для отдельных пользователей, так что это не общие настройки, что-то вроде этого:
[sip-softphone]
context=Sales
secret=REDACTED
type=friend
host=dynamic
fromuser=sip-softphone
authuser=sip-softphone
insecure=port
canreinvite=nonat
nat=force_rport,comedia
На программном телефоне я отключил Stun (отключен в Zoiper, установлен на ICE в X-Lite), и я надежно получаю двусторонний звук. Я еще не проверил с сотрудником, но все выглядит интересно.
1 ответ
Как и вы, я ничего не знаю о мире VoIP, но попробуйте следующее в sip.conf:
[general]
directmedia=no
Если это работает, то отлично, но я не могу предложить объяснение, поскольку я не проверял это, начните здесь, хотя.