Страница 1 из 4

Проблема с IAX2

Добавлено: 07 окт 2019, 00:13
itsec
Добрый вечер!
Есть железный Астериск 1.8.13.1, решили обновить до версии 13.14.1.
Развернули на новой вирт. машине Астериск и скопировали конфигурационные файлы со старого Астериска.
Все работает, кроме IAX2 транков и IAX2 абонентов.
1. При попытке позвонить с нового Астериска по IAX2 пакеты NEW улетают по транку, прилетают на другой Астериск, он отвечает пакетом CTOKEN, пакет прилетает на новый Астериск (через tcpdump видно), но Астериск его не обрабатывает, и в консоли нет по этому поводу событий.
2. Также не получается IAX2 абонентов подключить, модуль IAX2 по какой то причине не обрабатывает входящие пакеты.

Если смотреть через netstat, то видим, что на сокете IAX2 накапливается очередь не обработанных пакетов:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 304480 0 0.0.0.0:4569 0.0.0.0:* 3849/asterisk


Итог: исходящие пакеты обрабатываются модулем IAX2, входящие нет.

Куда копать? Что смотреть?

На сайте openwrt, есть похожая тема с проблемой прям у меня http://dev.archive.openwrt.org/ticket/13727 , но у меня не openwrt.

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 10:36
ded
requirecalltoken=
calltokenoptional=

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 10:47
itsec
Спасибо, что откликнулись.

На пирах IAX2
requirecalltoken=0
Этот параметр закомментирован
calltokenoptional=

Я думаю, дело не в calltoken.
Потому что, когда звонишь с другого астериска на новый по IAX2, он NEW и пакеты регистрации тоже не обрабатывает.
Тоже самое когда из локальной сети пытаюсь подключиться через софтфон по IAX2, запрос в консоли Астериска не вижу. Только количество Recv-Q растет.

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 11:47
ded
itsec писал(а):1. При попытке позвонить с нового Астериска по IAX2 пакеты NEW улетают по транку, прилетают на другой Астериск, он отвечает пакетом CTOKEN, пакет прилетает на новый Астериск (через tcpdump видно)
itsec писал(а):Я думаю, дело не в calltoken.
Я думал, что вы думаете.
CTOKEN = Calltoken
itsec писал(а):requirecalltoken=0
??

https://wiki.asterisk.org/wiki/display/ ... Validation

Поработал за вас в Google, ясно, что вам некогда.
http://asterisk-support.ru/question/568 ... 2-resheno/

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 15:09
itsec
Спасибо, что помогаете в решении моей проблемы, но почему мы зациклились на CTOKEN сейчас?
Проблема в же в том, что IAX2 модуль ВООБЩЕ не обрабатывает входящие запросы (NEW, REGREQ, и т.д.)
То есть, в консоли астерика при включенном debug iax2 нет вообще событий, только появляются события NEW, когда с него совершаешь звонок по IAX2.
Даже при попытке подключиться через софтфон к номеру 500 по IAX2, в консоли НЕ ВИЖУ сообщений NEW, хотя судя по дампу трафика они прилетают.
Настройки на новом астериске:
Входяшие звонки по транку IAX2 из Питера

Код: Выделить всё

[piterpbx]
type=friend
host=dynamic
trunk=yes
auth=rsa
inkeys=piterpbx
outkey=mskpbx
context=piterpbx_incoming
deny=0.0.0.0/0.0.0.0
permit=192.168.1.5/255.255.255.255
requirecalltoken=no
disallow=all
allow=alaw
allow=ulaw
allow=gsm
Пользователь IAX2

Код: Выделить всё

[500]
type=friend
user=500
context=office
requirecalltoken=no
secret=12345678
host=dynamic
maxcallnumbers=16
disallow=all
allow=alaw
allow=ulaw
allow=gsm
Питерский Астериск звонит так:

Код: Выделить всё

exten => _1XX,n,Dial(IAX2/piterpbx:[piterpbx]@ip_address_new_asterisk/${EXTEN:0})
Если смотреть через netstat, то видим, что на сокете IAX2 накапливается очередь не обработанных пакетов:

Код: Выделить всё

Proto [b]Recv-Q[/b] Send-Q Local Address Foreign Address State PID/Program name
udp [b]304480[/b] 0 0.0.0.0:4569 0.0.0.0:* 3849/asterisk
И да, когда выгружаю и загружаю модуль iax2, то вижу сообщения
[Oct 6 14:14:41] WARNING[11541]: chan_iax2.c:13207 build_user: Unable to support trunking on user 'piterpbx' without a timing interface
[Oct 6 14:14:41] WARNING[11541]: chan_iax2.c:12888 build_peer: Unable to support trunking on peer 'piterpbx' without a timing interface

Если в настройке для piterpbx выставить trunk=no, то эти ошибки пропадают.

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 16:44
ded
У вас пир - динамический

Код: Выделить всё

[piterpbx]
type=friend
host=dynamic
это значит он не будет отзываться на вашу строку
exten => _1XX,n,Dial(IAX2/piterpbx:[piterpbx]@ip_address_new_asterisk/${EXTEN:0})
потому что не зарегистрирован.
CLI> iax2 show peers
покажет
piterpbx (Unspecified)

Разберите все проблемы на отдельные задачи.
[piterpbx] и [500] - это принципиально разные пиры, один из них [piterpbx] - транк, там может включаться timing (trunk=yes)
а в другом [500] - нет.
1) Разбейте их, каждый, на user & peer. Получится 4 отдельно взятые проблемы. Решайте последовательно.
2) Попытайтесь зарегистрировать сначала, используя строку регистрации
register = piterpbx:piterpasswd@ip_address_new_asterisk
на этом этапе можно наблюдать tcpdump port 4569 and host ip_address_new_asterisk на обоих концах, и iax2 debug также. Статус
CLI> iax2 show regitry
3) Затем, если всё ОК, можно попробовать звонить по такой формуле:
exten => _1XX,n,Dial(IAX2/piterpbx/${EXTEN})
и мониторить через tcpdump port 4569 and host ip_address_new_asterisk на обоих концах, и iax2 debug также.

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 17:35
itsec
У вас пир - динамический
это значит он не будет отзываться на вашу строку
exten => _1XX,n,Dial(IAX2/piterpbx:[piterpbx]@ip_address_new_asterisk/${EXTEN:0})
потому что не зарегистрирован.
Прописывал регистрацию в iax.conf. В Астериске Питера вижу в консоли, что запросы на регистрацию прилетают, а ответные пакеты улетают и их нет в консоли нового Астериска. Также и все пакеты регистрации REGREQ, которые прилетают в новый Астериск из Питера - их не видно в консоли. Попытки подключения с софтфона из локальной сети на пир 500, тоже не видны в консоли.
Такое ощущение, что IAX модуль просто не обрабатывает входящие пакеты.

P.S. В Питере Астериск 11.13.1 с аналогичными настройками iax.conf и все работало со старым Астериском без регистрации.

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 18:03
ded
Если запросы на регистрацию прилетают, а ответные пакеты улетают и их нет в консоли нового Астериска, то проблема на уровне iptables.
Наиболее наглядно - включить на новом Астериске tcpdump port 4569
и iax2 set debug on
core set debug 10

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 18:33
itsec
проблема на уровне iptables
это была сразу первая мысль.. выключал fail2ban, чистил все правила iptables, пробовал добавлять разрешающее правило для порта 4569
включить на новом Астериске tcpdump port 4569
так и смотрел, пакеты прилетают, но в консоли никакого события по IAX (iax2 set debug on)
core set debug 10
сегодня посмотрю в этом режиме логирования

Re: Проблема с IAX2

Добавлено: 07 окт 2019, 18:37
ded
netstat -nlp | grep 4569 ??