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

Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 14 фев 2020, 15:43
ligo
Добрый день, господа, сейчас Вы можете лицезреть мое первое сообщение на этом форуме. Мне нужны советы от Вас, как от более опытных пользователей Asterisk(слышал я что здесь обитает некий всезнающий "ded").
Ситуация следующая, у меня есть два сервера Астериск, оба подняты на виртуальной машине, один из них Asterisk 16 на Ubuntu 18, второй - Asterisk 13 на Centos 8. Хочу связать эти два сервера между собой, чтобы совершать внутренние звонки по протоколу SIP.
В качестве примера я использовал диалплан и сип.конф из книги "Астериск-телефония будущего", подставив лишь свои пароли...
1) сип.конф для Торонто:

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

 
[general]
register => toronto:password1@192.168.88.1XX/osaka

[osaka]
type=friend
secret=password2
context=osaka_incoming
host=dynamic
disallow=all
allow=ulaw

[1000]
type=friend
host=dynamic
context=phones


2) сип.конф для Осака:

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

 
[general]
register => osaka:password2@192.168.88.2XX/toronto

[toronto]
type=friend
secret=password1
context=toronto_incoming 
host=dynamic 
disallow=all 
allow=ulaw 

[1001] 
type=friend 
host=dynamic 
context=phones


3) экстеншн.конф для Торонто:

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

[globals]

[general] 
autofallthrough=yes

[default]

[incoming_calls]

[phones]
 include => internal
 include => remote

[internal]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(SIP/${EXTEN},30) 
exten => _2XXX,n,Playback(the-party-you-are-calling&is-curntly-unavail) 
exten => _2XXX,n,Hangup()

[remote]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(SIP/osaka/${EXTEN}) 
exten => _1XXX,n,Hangup()

[osaka_incoming] 
include => internal
4) Экстеншн.конф для Осака:

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

[globals]

[general] 
autofallthrough=yes

[default]

[incoming_calls]

[phones]
include => internal 
include => remote

[internal] 
exten => _1XXX,1,NoOp() 
exten => _1XXX,n,Dial(SIP/${EXTEN},30) 
exten => _1XXX,n,Playback(the-party-you-are-calling&is-curntly-unavail) 
exten => _1XXX,n,Hangup()

[remote] 
exten => _2XXX,1,NoOp() 
exten => _2XXX,n,Dial(SIP/toronto/${EXTEN}) 
exten => _2XXX,n,Hangup()

[toronto_incoming] 
include => internal
при вводе команды "sip show registry" выводится в терминале что всё гуд, идентично тому как описано это в книге! Прилагаю сообщение из терминала
(сервер Торонто):

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

192.168.88.1XX:5060                     N      toronto            105 Registered           Fri, 14 Feb 2020 14:16:02
1 SIP registrations.
и, соответственно (сервер Осака):

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

192.168.88.2XX:5060                     N      osaka              105 Registered           Fri, 14 Feb 2020 14:16:12
1 SIP registrations.
Номера в софтфоне регистрируются успешно и казало бы что осталось дело за малым, однако при попытке вызова постоянно появляется ошибки либо предупреждение:
1) при вызове с 1001 на 1000:

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

Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
2) при вызове с 1000 на 1001:

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

chan_sip.c:24305 handle_response_invite: Received response: "Forbidden" from '"1000" <sip:1000@192.168.88.230>;tag=as0a4d9bd2'.
В итоге, вызов не проходит абсолютно. Прошу Вас, помогите разобраться что не так. Заранее спасибо

Re: Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 15 фев 2020, 09:24
virus_net
Тут даже ded не нужен, чтобы разобраться.
Нужна внимательность.

Подсказка: Посмотрите какие номера какой сервер считает INTERNAL, а какие remote согласно вашим конфигам. Затем подумайте, какой софтфон и где вы регистрируете и откуда куда вы набираете.

P. S. Выкладывая конфиг и или логи следует использовать форумные теги, такие как тег code.
P. S. S. Прятать внутренние адреса, тем более только последний октет, тем более не везде, за XXX бессмысленно, это внутренние адреса.

Re: Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 15 фев 2020, 15:15
Zavr2008
2 астера говорите..
Самое простое - просто транк без решистрации.
у пира прописываете

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

host=<статический ip>
insecure=port,invite
directmedia=no
А что там с NAT - это всё будет внутри гулять по серым?

По маске сети 192.168.88.x/24 вангую что микротик, отключаем там SIP ALG. http://wiki.otx.ru/wiki/Mikrotik_SIP_ALG_Disable

По диалпланам - у каждого сервера свои внутренние пиры (ip-телефоны), важно чтобы они между серверами не повторялись. Форбидден обычно от этого.
Чтобы этого не было, добавляйте каждому офису свой префикс или же делайте свои диапазоны экстенов.

Re: Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 15 фев 2020, 17:07
ded
ligo писал(а):Добрый день, господа, сейчас Вы можете лицезреть мое первое сообщение на этом форуме.
всем квасу и семак! Предвкушаем!
ligo писал(а):Мне нужны советы от Вас, как от более опытных пользователей Asterisk(слышал я что здесь обитает некий всезнающий "ded").
Я вся дрожу, это мой первый секс с Астериском!
Может спросить Muller7777?
ligo писал(а):Ситуация следующая, у меня есть два сервера Астериск, оба подняты на виртуальной машине,
наверное - на виртуальнЫХ машинАХ? А не на одной?
У вас оба пира (наверное всё же Лисичанск и Старобельск, а не Осака и Торонто) знают друг о друге как о неизвестном ИП адресе -
host=dynamic
То есть астероид с неизвестными ИП координатами и планета Нибиру. Строка регистрации не имеет отношения к описанию пира.
Знатно задумано!
Для соединения Астерисков был специально придуман протокол Inter-Asterisk exchange - IAX2, чтобы избавиться от наследования аутентификации SIP юзеров при звонках между ними. Форбидден обычно от этого.
Откройте учебник и настройте два IAX пира, со статическими адресами, друг в друга, без регистрации и секретов.
host=192.168.88.100
host=192.168.88.200
Ибо source IP каждого сервера достаточный идентификатор для аутентификации.
Zavr2008 писал(а):По маске сети 192.168.88.x/24 вангую что микротик, отключаем там SIP ALG.
При чём тут SIP ALG? Оба хоста 192.168.88.100 и 192.168.88.200 в одной подсети 192.168.88.0/24, Микротик не проходят.

Re: Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 17 фев 2020, 11:49
Zavr2008
При том что влияет и не ясно в одной или нет будут.

Re: Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 17 фев 2020, 14:35
ded
Zavr2008, сообщение
Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
говорит о том, что нет SIP пира при звонке
exten => _1XXX,n,Dial(SIP/osaka/${EXTEN})

То есть вот этот пир не существует, нет его ИП адреса, с точки зрения сервера Toronto:

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

[osaka]
type=friend
secret=password2
context=osaka_incoming
host=dynamic
disallow=all
allow=ulaw 
и это видно при
CLI> sip show peers

Уважаемый ТС! Наблюдаю процесс изучения Астериск по книге "Будущее телефонии". Ничего необычного в вашем случае нет, но есть попытка вовлечь в процесс обучения сообщество, типа - "помогите разобраться, я первый раз, многое не понимаю..." это неверный подход, об этом написано в условиях регистрации на форуме.

Re: Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 19 мар 2020, 10:06
ligo
Спасибо, дед!!! Я воспользовался протоколом IAX2 и у меня получилось связать два сервера Asterisk между собой.
Прошу еще совсем немного помощи, теперь мне необходимо звонить с одного сервера на второй, со второго на первый соответственно! (чую что ответ прост, но не поддается мне extension.conf никак)Прошу, помоги!
1й сервер, сборка MikoPBX, работает на основе Asterisk 16.
2й сервер, голый Asterisk 13, поднят на виртуалке Ubuntu 18.04.

Первый сервер имеет номерной план 67XXX и 85XXXX . 10.115.54.8 - IP adress
Второй сервер имеет номерной план 54ХХХ . 10.115.212.32 - IP adress

Перелопатил множество экстеншенов, пробовал самостоятельно импровизировать, максимум что мне удавалось достичь - это дозвониться с первого сервера на второй, но со второго выполнить исходящий вызов на первый сервер так и не удалось. Поможешь, дед??

Re: Связка двух и более серверов Asterisk для звонков по SIP

Добавлено: 19 мар 2020, 14:10
ded
Импровизация - это совсем не то, что можно делать в программировании (а язык диал плана - это именно программа).
Изучите тему контекстов, надо понять глубоко что это такое, тогда будет понятно.

https://forum.asterisk.ru/viewtopic.php?f=5&t=17223