LINUX.ORG.RU
решено ФорумAdmin

Нет звука при звонке через IAX-канал в Asterisk

 , ,


0

1

Всем привет!

Есть два астериска, видят друг друга через VPN, имеют адреса 0.102 и 1.79. Назовем их new_test и old_stable соответственно. У них есть пользователи SIP.

При звонке с сервера old_stable из под пользователя 2070, вызывая абонента 1041 на сервере new_test, проблем нет. Звук есть в обе стороны, в логе:

    -- Accepting AUTHENTICATED call from 192.168.1.79:4569:
    --        > requested format = ulaw,

Но при звонке с сервера new_test, с пользователя 1041, вызывая пользователя 2070 на сервере old_stable, не слышно звука от пользователя 1041. Но слышно пользователя 2070. А в логе появляется:

    -- Accepting UNAUTHENTICATED call from 192.168.0.102:
       > requested format = ulaw,

и потом:

[Jul 23 17:50:47] WARNING[21526]: channel.c:4519 ast_indicate_data: Unable to handle indication 3 for 'SIP/2070-00000000'

Как победить отсутствие звука на клиенте?

Сервера соединяются друг с другом нормально (есть в регистрациях и пирах соответствующие записи). Версии астерисков разные, на new_test Asterisk 13.14.1~dfsg-2+deb9u4 built by buildd @ x86-csail-01 on a x86_64 running Linux on 2018-10-14 22:18:46 UTC

а на old_stable: Asterisk 1.8.13.1 built by root @ ubuntu-pkg2 on a x86_64 running Linux on 2014-02-21 18:41:40 UTC

В момент звонка udp пакеты на порту 4569 бегут между хостами.

Соединяю сервера через IAX канал со следующей конфигурацией:

iax.conf с сервера new_test:

[general]
bindport=4569
autokill=yes
disallow=all
allow=ulaw
jitterbuffer=yes
maxjitterbuffer=500
delayreject=yes
iaxthreads=15
iaxmaxthreads=50

register => new_test@192.168.0.79

[old_stable]
type=friend
qualify=yes
host=dynamic
nat=yes
auth=md5
trunk=yes
username=old_stable
secret=old_stable
insecure=invite,port;Стоит от безысходности
context=DLPN_WorkDialPlan
deny=0.0.0.0/0.0.0.0
permit=192.168.1.79/255.255.255.255

А так пишу в диалплане:

exten => _20XX,1,NoOp()
exten => _20XX,n,Dial(IAX2/new_test:new_test@192.168.1.79/${EXTEN},60,tT)
exten => _20XX,n,Hangup

Такие настройки на втором сервере old_stable: iax.conf:

[general]
bindport=4569
autokill=yes
disallow=all
allow=ulaw
jitterbuffer=yes
delayreject=yes
iaxthreads=15
iaxmaxthreads=50

register => old_stable:old_stable@192.168.0.102

[new_test]
type=friend
qualify=yes
host=dynamic
trunk=yes
nat=yes
auth=md5
username=new_test
password=new_test
insecure=invite,port;Стоит от безысходности
context=Dial_outgoing_local
deny=0.0.0.0/0.0.0.0
permit=192.168.0.102/255.255.255.255

extensions.conf:

exten => _104X,1,NoOp     
exten => _104X,n,Dial(IAX2/old_stable:old_stable@192.168.0.102/${EXTEN},60,tT)
exten => _104X,n,Hangup

Посмею позвать zgen

Ответ на: комментарий от Turbid

чтобы наблюдать состояние соединения всегда, а не только в момент звонка.

Aborigen1020 ()
Ответ на: комментарий от Turbid
asterisk*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status      Description
iaxmodem4        10.126.96.104   (D)  255.255.255.255  4574          OK (3 ms)
iaxmodem1        10.126.96.104   (D)  255.255.255.255  4571          OK (1 ms)
iaxmodem2        10.126.96.104   (D)  255.255.255.255  4572          OK (3 ms)
iaxmodem3        10.126.96.104   (D)  255.255.255.255  4573          OK (3 ms)
voip/asterisk    10.126.80.2     (S)  255.255.255.255  4569          OK (1 ms)
5 iax2 peers [5 online, 0 offline, 0 unmonitored]

# grep registr ./iax.conf | wc -l
0

Turbid ★★★★★ ()
Ответ на: комментарий от Turbid

Прекрасно. А чем register то мешает прохождению звука в одну сторону?

Мне тут говорят, что это проблема с RTP-пакетами, что их фаейрвол не выпускает наружу/не принимает.

RTP пакеты на проблемном сервере действительно ходят однобоко. И дело не в регистерах, вестимо.

Aborigen1020 ()
Ответ на: комментарий от Turbid

И я не пойму, причем тут он, если все упаковывается в iax и отправляется во вне.

Только у меня клиенты по SIP подключаются, и в момент диалога на нормальном сервере есть rtp-пакеты в стороны, а на проблемном - только GOT, а SENT отсутствует. Как и звук от клиента с того сервера.

Aborigen1020 ()
Последнее исправление: Aborigen1020 (всего исправлений: 1)
Ответ на: комментарий от Turbid

Клиенты SIP за NAT?

Сейчас да, проверяю работу, цепляясь клиентом, который за nat

Вы знаете зачем это?

Чтобы несколько активных звонков использовало один канал IAX

Aborigen1020 ()
Ответ на: комментарий от Aborigen1020

It should be noted that trunking requires both sides to know each other (i.e. they need to be valid peers). If one side has trunk=yes and the other does not cannot validate the peer, you will get one-way audio. The easiest way to make this work is to use a register line to register to the systems you want to trunk with.

https://www.voip-info.org/iax/

Попробуй убрать trunk=yes и регистрацию, host=<ip>

nat=yes точно не нужен.

Turbid ★★★★★ ()
Ответ на: комментарий от Turbid

Регистрацию не убирал, убрал nat, убрал trunk=yes. И звонок с проблемного сервера прошел со всеми звуковыми эффектами. RTP пакеты побежали.

Однако другой астериск потерял регистрацию и не видит пира на рабочем сервере. И не переподнимается по module unload chan_iax2.so

Попробую убрать регистрацию и отпишусь. Спасибо большое.

Aborigen1020 ()
Ответ на: комментарий от Aborigen1020

Убрал регистрацию, сделал host=i.p.add.ress, в пирах всё подхватилось, при звонке статус на одном из хостов все также

-- Accepting UNAUTHENTICATED call from 192.168.0.102:
       > requested format = alaw,

Однако, голос появился и там и там. Спасибо большое за наставление, Turbid

Вижу, что это не сильно влияет на голосовую связь. Наверное, поживу с этой ошибкой ;D

Aborigen1020 ()
Ответ на: комментарий от Aborigen1020

а, ну и кодек сменил на alaw, но не думаю, что это сильно играет роль.

Aborigen1020 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.