Asterisk, Avaya, SIP
Добавлено: 25 дек 2018, 18:21
Добрый день.
Постигаю азы астериска и немного запнулся.
Прошу помощи в борьбе с аваей
Изначально был голый Asterisk 16. IP 10.0.11.12
firewalld, selinux - выключены.
Есть два локальных телефона (софтфон ext. 501 и Cisco 7942 ext. 502). Живут в контексте ctx-office. с ними все ОК.
Есть SIP транк с Cisco CCME (в диалплане номера 82XX). Контекст ctx-ccme1 с ним тоже все ОК.
Также есть транк с Avaya CM6.3 (в диалплане номера 11XXXX). Контекст ctx-mso-avaya.
Вот с аваей интересная картина вырисовывается. C астериска звонки проходят, с аваи на астериск - никак.
В логах пусто.
Однако, если в sip.conf секции [general] сказать allowguest=yes, то тут же видим:
А если в extensions.conf создать контекст [default] и в него заинклудить ctx-office
то внезапно звонок с аваи на астериск начнет проходить.
Очевидно, астериск по каким-то причинам не хочет "признавать" в авае своего пира и под видом гостя пихает его в контекст [default].
Настройки для коллменеджера и аваи отличаются разве что только именем, адресом и контекстом. Ах да, еще протоколом.
Ниже приведен инвайт здорового человека, т.е. CCME. За ним следует инвайт с аваи. Далее - общий список пиров и вывод диалплана.
Что сразу бросается в различие двух инвайтов - наличие домена в инвайте от аваи.
CCME:
Avaya:
Peers:
Dialplan:
Собственно вопрос - кто виноват и что делать
Полагаю, обходное решение, описанное мною выше, оно не совсем правильное.
Премного благодарен )
Постигаю азы астериска и немного запнулся.
Прошу помощи в борьбе с аваей
Изначально был голый Asterisk 16. IP 10.0.11.12
firewalld, selinux - выключены.
Есть два локальных телефона (софтфон ext. 501 и Cisco 7942 ext. 502). Живут в контексте ctx-office. с ними все ОК.
Код: Выделить всё
[internal](!)
type=friend
context=ctx-office
host=dynamic
nat=no
qualify=yes
transport=udp
canreinvite=no
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
[501](internal)
callerid="501" <501>
secret=501
[502](internal)
callerid="502" <502>
secret=502
Код: Выделить всё
[ccme1]
type=friend
host=10.0.11.11
transport=udp
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow=g723
allow=g722
nat=no
canreinvite=yes
qualify=yes
insecure=port,invite
context=ctx-ccme1
Код: Выделить всё
[mso-avaya]
type=friend
host=10.0.10.11
transport=tcp
disallow=all
allow=ulaw
allow=alaw
nat=no
canreinvite=yes
qualify=yes
insecure=port,invite
context=ctx-mso-avaya
В логах пусто.
Однако, если в sip.conf секции [general] сказать allowguest=yes, то тут же видим:
Код: Выделить всё
[Dec 25 17:11:37] NOTICE[28045][C-00000007]: chan_sip.c:26672 handle_request_invite: Call from '' (10.0.10.11:21131) to extension '501' rejected because extension not found in context 'default'.
Код: Выделить всё
[default]
include => ctx-office
Очевидно, астериск по каким-то причинам не хочет "признавать" в авае своего пира и под видом гостя пихает его в контекст [default].
Настройки для коллменеджера и аваи отличаются разве что только именем, адресом и контекстом. Ах да, еще протоколом.
Ниже приведен инвайт здорового человека, т.е. CCME. За ним следует инвайт с аваи. Далее - общий список пиров и вывод диалплана.
Что сразу бросается в различие двух инвайтов - наличие домена в инвайте от аваи.
CCME:
Код: Выделить всё
INVITE sip:501@10.0.11.12:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.11.11:5060;branch=z9hG4bKC1D92FA
From: <sip:8204@10.0.11.11>;tag=C606DF18-18DE
To: <sip:501@10.0.11.12>
Date: Tue, 25 Dec 2018 14:55:00 GMT
Call-ID: E3564810-78B11E9-831FD791-F499EEAE@10.0.11.11
Supported: 100rel,timer,resource-priority,replaces,sdp-anat
Min-SE: 1800
Cisco-Guid: 3805282466-0126554601-2199574417-4103728814
User-Agent: Cisco-SIPGateway/IOS-12.x
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER
CSeq: 101 INVITE
Max-Forwards: 70
Timestamp: 1545749700
Contact: <sip:8204@10.0.11.11:5060>
Expires: 180
Allow-Events: telephone-event
P-Asserted-Identity: <sip:8204@10.0.11.11>
Content-Type: application/sdp
Content-Disposition: session;handling=required
Content-Length: 212
v=0
o=CiscoSystemsSIP-GW-UserAgent 1974 3578 IN IP4 10.0.11.11
s=SIP Call
c=IN IP4 10.0.11.11
t=0 0
m=audio 18812 RTP/AVP 8 19
c=IN IP4 10.0.11.11
a=rtpmap:8 PCMA/8000
a=rtpmap:19 CN/8000
a=ptime:20
<------------->
--- (21 headers 10 lines) ---
Sending to 10.0.11.11:5060 (no NAT)
Sending to 10.0.11.11:5060 (no NAT)
Using INVITE request as basis request - E3564810-78B11E9-831FD791-F499EEAE@10.0.11.11
Found peer 'ccme1' for '8204' from 10.0.11.11:63780
Found RTP audio format 8
Found RTP audio format 19
Found audio description format PCMA for ID 8
Found audio description format CN for ID 19
Capabilities: us - (ulaw|alaw|g729|g723|g722), peer - audio=(alaw)/video=(nothing)/text=(nothing), combined - (alaw)
Non-codec capabilities (dtmf): us - 0x1 (telephone-event|), peer - 0x2 (CN|), combined - 0x0 (nothing)
Peer audio RTP is at port 10.0.11.11:18812
Looking for 501 in ctx-ccme1 (domain 10.0.11.12)
sip_route_dump: route/path hop: <sip:8204@10.0.11.11:5060>
Код: Выделить всё
<--- SIP read from TCP:10.0.10.11:20239 --->
INVITE sip:502@10.0.11.12 SIP/2.0
From: "Ivanov, Andrey" <sip:113529@corp.local>;tag=80ec70bf89e919145b8ab45800
To: <sip:502@10.0.11.12>
Call-ID: 80ec70bf89e919245b8ab45800
CSeq: 1 INVITE
Max-Forwards: 70
Via: SIP/2.0/TCP 10.0.10.11;branch=z9hG4bK80ec70bf89e919345b8ab45800
Via: SIP/2.0/TCP 10.213.55.29;branch=z9hG4bK80ec70bf89e919345b8ab45800
Supported: 100rel,join,replaces,timer
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,SUBSCRIBE,NOTIFY,REFER,INFO,PRACK,PUBLISH,UPDATE
User-Agent: Avaya CM/R016x.03.0.124.0
Contact: "Ivanov, Andrey" <sip:113529@10.0.10.11;transport=tcp>
Route: <sip:10.0.11.12;transport=tcp;lr;phase=terminating>
Accept-Language: en
Alert-Info: <cid:internal@10.0.11.12>;avaya-cm-alert-type=internal
Min-SE: 1200
P-Asserted-Identity: "Ivanov, Andrey" <sip:113529@corp.local>
Record-Route: <sip:10.0.10.11;transport=tcp;lr>
Session-Expires: 1200;refresher=uac
Av-Global-Session-ID: 80ec700b-f809-4901-9004-5b8ab4580000
Content-Type: application/sdp
Content-Length: 304
v=0
o=- 1545659659 1 IN IP4 10.0.10.11
s=-
c=IN IP4 10.0.10.26
b=AS:64
t=0 0
a=avf:avc=n prio=n
a=csup:avf-v0
m=audio 2080 RTP/AVP 8 18 0 127
a=sendrecv
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:0 PCMU/8000
a=rtpmap:127 telephone-event/8000
a=ptime:20
<------------->
--- (22 headers 16 lines) ---
Sending to 10.0.10.11:5060 (no NAT)
Sending to 10.0.10.11:5060 (no NAT)
Using INVITE request as basis request - 80ec70bf89e919245b8ab45800
No matching peer for '113529' from '10.0.10.11:20239'
Код: Выделить всё
msk-asterisk01*CLI> sip show peers
Name/username Host Dyn Forcerport Comedia ACL Port Status Description
501/501 10.212.35.46 D No No 62054 OK (103 ms)
502/502 10.212.35.95 D No No 5060 OK (20 ms)
ccme1 10.0.11.11 No No 5060 OK (49 ms)
mso-avaya 10.0.10.11 No No 5060 OK (1 ms)
Код: Выделить всё
msk-asterisk01*CLI> dialplan show
[ Context '__func_periodic_hook_context__' created by 'func_periodic_hook' ]
'beep' (CID match '') => 1. Answer() [func_periodic_hook]
2. Playback(beep) [func_periodic_hook]
'hook' (CID match '') => 1. Set(EncodedChannel=${CUT(HOOK_CHANNEL,-,1-2)}) [func_periodic_hook]
2. Set(GROUP_NAME=${EncodedChannel}${HOOK_ID}) [func_periodic_hook]
3. Set(GROUP(periodic-hook)=${GROUP_NAME}) [func_periodic_hook]
4. ExecIf($[${GROUP_COUNT(${GROUP_NAME}@periodic-hook)} > 1]?Hangup()) [func_periodic_hook]
5. Set(ChannelToSpy=${URIDECODE(${EncodedChannel})}) [func_periodic_hook]
6. ChanSpy(${ChannelToSpy},qEB) [func_periodic_hook]
[ Context 'ctx-ccme1' created by 'pbx_config' ]
'_5XX' => 1. Log(Notice, Call from ccme1 to internal ext. ${EXTEN}) [extensions.conf:257]
2. Dial(SIP/${EXTEN}) [extensions.conf:258]
[ Context 'ctx-mso-avaya' created by 'pbx_config' ]
'_5XX' => 1. Log(Notice, Call from mso-avaya to internal ext. ${EXTEN}) [extensions.conf:252]
2. Dial(SIP/${EXTEN}) [extensions.conf:253]
[ Context 'ctx-office' created by 'pbx_config' ]
'_11XXXX' => 1. Log(Notice, Call from internal to mso-avaya ext. ${EXTEN}) [extensions.conf:245]
2. Dial(SIP/${EXTEN}@mso-avaya) [extensions.conf:246]
'_5XX' => 1. Log(Notice, Call from internal to internal ext. ${EXTEN}) [extensions.conf:241]
2. Dial(SIP/${EXTEN}) [extensions.conf:242]
'_82XX' => 1. Log(Notice, Call from internal to ccme1 ext. ${EXTEN}) [extensions.conf:243]
2. Dial(SIP/${EXTEN}@ccme1) [extensions.conf:244]
'_9.' => 1. Log(Notice, Call from internal to outside ext. ${EXTEN}) [extensions.conf:247]
2. Dial(SIP/${EXTEN}@mso-avaya) [extensions.conf:248]
-= 8 extensions (20 priorities) in 4 contexts. =-
Полагаю, обходное решение, описанное мною выше, оно не совсем правильное.
Премного благодарен )