Интересно следующее.
Проблема решилась - Поставили TrixBox - и все заработало.
То есть на шлюзе вообще ничего не меняли, кроме IP SIP шлюза. После этого поменяли IP обратно на Elastix - продолжает работать. Я ничего не понял. Покрутил параметры и так и сяк - работает.
Теперь другая проблема с тем же шлюзом.
Попробовали зарегистрировать FXS порты. Зарегистрировались прекрасно, между собой звонят. Входящие звонки с FXO также проходят через Elastix на FXS.
Снова отвалился исход.
Правда по другому. Теперь при попытке позвонить по внешнему маршруту - дает сбой.
Насколько я понял Asterisk принимает правильный запрос с IP шлюза (запрос приходит с FXS порта), обрабатывает его и отсылает инвайт вида:
INVITE sip:101@192.168.0.249 SIP/2.0
На тот же самый IP с которого он его принял. Шлюз пытается найти у себя номер 101 - и не находя его отвечает - Busy here.
Как забодать?
Вот SIP лог: (сорри зс большой лог...)
Код:
<------------->
--- (8 headers 0 lines) ---
elastix*CLI>
<--- SIP read from 192.168.0.249:5060 --->
INVITE sip:99101@192.168.0.149:5060;user=phone SIP/2.0
v: SIP/2.0/UDP 192.168.0.249:5060;branch=z9hG4bK0b43499750c8adf1
f: <sip:2242@192.168.0.149>;tag=d2a5dee8-685270
t: <sip:99101@192.168.0.149;user=phone>
i: D1B9-111B-466852701148D6A26165-017@SipHost
CSeq: 17 INVITE
m: <sip:2242@192.168.0.249:5060>
Expires: 90
Max-Forwards: 70
Proxy-Authorization: Digest username="2242",realm="asterisk",nonce="1cbb28d5",uri="sip:99101@192.168.0.149:5060;user=phone",response="c1156b9f50c45029e08a448a6c4200f6",algorithm=MD5
k: replaces
User-Agent: dlink
c: application/sdp
l: 117
v=0
o=2242 5740 5740 IN IP4 192.168.0.249
s=Session SDP
c=IN IP4 192.168.0.249
t=0 0
m=audio 9002 RTP/AVP 0 18
<------------->
--- (14 headers 6 lines) ---
Sending to 192.168.0.249 : 5060 (NAT)
Using INVITE request as basis request - D1B9-111B-466852701148D6A26165-017@SipHost
Found user '2242'
Found RTP audio format 0
Found RTP audio format 18
Peer audio RTP is at port 192.168.0.249:9002
Capabilities: us - 0x104 (ulaw|g729), peer - audio=0x104 (ulaw|g729)/video=0x0 (nothing), combined - 0x104 (ulaw|g729)
Non-codec capabilities (dtmf): us - 0x1 (telephone-event), peer - 0x0 (nothing), combined - 0x0 (nothing)
Peer audio RTP is at port 192.168.0.249:9002
Looking for 99101 in from-internal (domain 192.168.0.149)
list_route: hop: <sip:2242@192.168.0.249:5060>
<--- Transmitting (NAT) to 192.168.0.249:5060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.0.249:5060;branch=z9hG4bK0b43499750c8adf1;received=192.168.0.249
From: <sip:2242@192.168.0.149>;tag=d2a5dee8-685270
To: <sip:99101@192.168.0.149;user=phone>
Call-ID: D1B9-111B-466852701148D6A26165-017@SipHost
CSeq: 17 INVITE
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Contact: <sip:99101@192.168.0.149>
Content-Length: 0
<------------>
-- Executing [99101@from-internal:1] Macro("SIP/2242-08e8f3f8", "user-callerid|SKIPTTL|") in new stack
-- Executing [s@macro-user-callerid:1] NoOp("SIP/2242-08e8f3f8", "user-callerid: device 2242") in new stack
-- Executing [s@macro-user-callerid:2] Set("SIP/2242-08e8f3f8", "AMPUSER=2242") in new stack
-- Executing [s@macro-user-callerid:3] GotoIf("SIP/2242-08e8f3f8", "0?report") in new stack
-- Executing [s@macro-user-callerid:4] ExecIf("SIP/2242-08e8f3f8", "1|Set|REALCALLERIDNUM=2242") in new stack
-- Executing [s@macro-user-callerid:5] NoOp("SIP/2242-08e8f3f8", "REALCALLERIDNUM is 2242") in new stack
-- Executing [s@macro-user-callerid:6] Set("SIP/2242-08e8f3f8", "AMPUSER=2242") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/2242-08e8f3f8", "AMPUSERCIDNAME=2242") in new stack
-- Executing [s@macro-user-callerid:8] GotoIf("SIP/2242-08e8f3f8", "0?report") in new stack
-- Executing [s@macro-user-callerid:9] Set("SIP/2242-08e8f3f8", "AMPUSERCID=2242") in new stack
-- Executing [s@macro-user-callerid:10] Set("SIP/2242-08e8f3f8", "CALLERID(all)="2242" <2242>") in new stack
-- Executing [s@macro-user-callerid:11] Set("SIP/2242-08e8f3f8", "REALCALLERIDNUM=2242") in new stack
-- Executing [s@macro-user-callerid:12] ExecIf("SIP/2242-08e8f3f8", "0|Set|CHANNEL(language)=") in new stack
-- Executing [s@macro-user-callerid:13] NoOp("SIP/2242-08e8f3f8", "TTL: ARG1: SKIPTTL") in new stack
-- Executing [s@macro-user-callerid:14] GotoIf("SIP/2242-08e8f3f8", "1?continue") in new stack
-- Goto (macro-user-callerid,s,23)
-- Executing [s@macro-user-callerid:23] NoOp("SIP/2242-08e8f3f8", "Using CallerID "2242" <2242>") in new stack
-- Executing [99101@from-internal:2] Set("SIP/2242-08e8f3f8", "_NODEST=") in new stack
-- Executing [99101@from-internal:3] Macro("SIP/2242-08e8f3f8", "record-enable|2242|OUT|") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("SIP/2242-08e8f3f8", "0?2:4") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] AGI("SIP/2242-08e8f3f8", "recordingcheck|20081212-173029|1229081429.32") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
recordingcheck|20081212-173029|1229081429.32: Outbound recording enabled.
recordingcheck|20081212-173029|1229081429.32: CALLFILENAME=OUT2242-20081212-173029-1229081429.32
-- AGI Script recordingcheck completed, returning 0
-- Executing [s@macro-record-enable:999] MixMonitor("SIP/2242-08e8f3f8", "OUT2242-20081212-173029-1229081429.32.wav") in new stack
-- Executing [99101@from-internal:4] Macro("SIP/2242-08e8f3f8", "dialout-trunk|2|101||") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/2242-08e8f3f8", "DIAL_TRUNK=2") in new stack
-- Executing [s@macro-dialout-trunk:2] ExecIf("SIP/2242-08e8f3f8", "0|Authenticate|") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/2242-08e8f3f8", "0?disabletrunk|1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("SIP/2242-08e8f3f8", "DIAL_NUMBER=101") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("SIP/2242-08e8f3f8", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("SIP/2242-08e8f3f8", "GROUP()=OUT_2") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/2242-08e8f3f8", "1?nomax") in new stack
-- Goto (macro-dialout-trunk,s,9)
-- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/2242-08e8f3f8", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("SIP/2242-08e8f3f8", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:11] Macro("SIP/2242-08e8f3f8", "outbound-callerid|2") in new stack
-- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/2242-08e8f3f8", "0|SetCallerPres|") in new stack
-- Executing [s@macro-outbound-callerid:2] GotoIf("SIP/2242-08e8f3f8", "1?start") in new stack
-- Goto (macro-outbound-callerid,s,4)
-- Executing [s@macro-outbound-callerid:4] NoOp("SIP/2242-08e8f3f8", "REALCALLERIDNUM is 2242") in new stack
-- Executing [s@macro-outbound-callerid:5] GotoIf("SIP/2242-08e8f3f8", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,10)
-- Executing [s@macro-outbound-callerid:10] Set("SIP/2242-08e8f3f8", "USEROUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:11] Set("SIP/2242-08e8f3f8", "EMERGENCYCID=") in new stack
-- Executing [s@macro-outbound-callerid:12] Set("SIP/2242-08e8f3f8", "TRUNKOUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:13] GotoIf("SIP/2242-08e8f3f8", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,17)
-- Executing [s@macro-outbound-callerid:17] GotoIf("SIP/2242-08e8f3f8", "1?usercid") in new stack
-- Goto (macro-outbound-callerid,s,19)
-- Executing [s@macro-outbound-callerid:19] GotoIf("SIP/2242-08e8f3f8", "1?report") in new stack
-- Goto (macro-outbound-callerid,s,23)
-- Executing [s@macro-outbound-callerid:23] NoOp("SIP/2242-08e8f3f8", "CallerID set to "2242" <2242>") in new stack
-- Executing [s@macro-dialout-trunk:12] AGI("SIP/2242-08e8f3f8", "fixlocalprefix") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/fixlocalprefix
== Begin MixMonitor Recording SIP/2242-08e8f3f8
-- AGI Script fixlocalprefix completed, returning 0
-- Executing [s@macro-dialout-trunk:13] Set("SIP/2242-08e8f3f8", "OUTNUM=101") in new stack
-- Executing [s@macro-dialout-trunk:14] Set("SIP/2242-08e8f3f8", "custom=SIP/717210734") in new stack
-- Executing [s@macro-dialout-trunk:15] GotoIf("SIP/2242-08e8f3f8", "1?gocall") in new stack
-- Goto (macro-dialout-trunk,s,17)
-- Executing [s@macro-dialout-trunk:17] Macro("SIP/2242-08e8f3f8", "dialout-trunk-predial-hook|") in new stack
-- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/2242-08e8f3f8", "0?bypass|1") in new stack
-- Executing [s@macro-dialout-trunk:19] GotoIf("SIP/2242-08e8f3f8", "0?customtrunk") in new stack
-- Executing [s@macro-dialout-trunk:20] Dial("SIP/2242-08e8f3f8", "SIP/717210734/101|300|") in new stack
Audio is at 192.168.0.149 port 15604
Adding codec 0x4 (ulaw) to SDP
Adding codec 0x100 (g729) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (NAT) to 192.168.0.249:5060:
INVITE sip:101@192.168.0.249 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.149:5060;branch=z9hG4bK5792ae4f;rport
From: "2242" <sip:2242@192.168.0.149>;tag=as3356dfcd
To: <sip:101@192.168.0.249>
Contact: <sip:2242@192.168.0.149>
Call-ID: 7e37f31e180afd8e42d6c5d47b688caf@192.168.0.149
CSeq: 102 INVITE
User-Agent: Asterisk PBX
Max-Forwards: 70
Date: Fri, 12 Dec 2008 11:30:29 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: 287
v=0
o=root 2858 2858 IN IP4 192.168.0.149
s=session
c=IN IP4 192.168.0.149
t=0 0
m=audio 15604 RTP/AVP 0 18 101
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
---
-- Called 717210734/101
elastix*CLI>
<--- SIP read from 192.168.0.249:5060 --->
SIP/2.0 100 Trying
v: SIP/2.0/UDP 192.168.0.149:5060;rport;branch=z9hG4bK5792ae4f
f: <sip:2242@192.168.0.149>;tag=as3356dfcd
t: <sip:101@192.168.0.249>
i: 7e37f31e180afd8e42d6c5d47b688caf@192.168.0.149
CSeq: 102 INVITE
c: application/sdp
l: 0
<------------->
--- (8 headers 0 lines) ---
elastix*CLI>
<--- SIP read from 192.168.0.249:5060 --->
SIP/2.0 486 Busy here
v: SIP/2.0/UDP 192.168.0.149:5060;rport;branch=z9hG4bK5792ae4f
f: <sip:2242@192.168.0.149>;tag=as3356dfcd
t: <sip:101@192.168.0.249>;tag=96964afe-685271
i: 7e37f31e180afd8e42d6c5d47b688caf@192.168.0.149
CSeq: 102 INVITE
m: <sip:717210734@192.168.0.249:5060>
User-Agent: dlink
l: 0
<------------->
--- (9 headers 0 lines) ---
-- Got SIP response 486 "Busy here" back from 192.168.0.249
Transmitting (NAT) to 192.168.0.249:5060:
ACK sip:101@192.168.0.249 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.149:5060;branch=z9hG4bK5792ae4f;rport
From: "2242" <sip:2242@192.168.0.149>;tag=as3356dfcd
To: <sip:101@192.168.0.249>;tag=96964afe-685271
Contact: <sip:2242@192.168.0.149>
Call-ID: 7e37f31e180afd8e42d6c5d47b688caf@192.168.0.149
CSeq: 102 ACK
User-Agent: Asterisk PBX
Max-Forwards: 70
Content-Length: 0
---
-- SIP/717210734-08e69a40 is busy
== Everyone is busy/congested at this time (1:1/0/0)
-- Executing [s@macro-dialout-trunk:21] Goto("SIP/2242-08e8f3f8", "s-BUSY|1") in new stack
-- Goto (macro-dialout-trunk,s-BUSY,1)
Really destroying SIP dialog '7e37f31e180afd8e42d6c5d47b688caf@192.168.0.149' Method: INVITE
-- Executing [s-BUSY@macro-dialout-trunk:1] NoOp("SIP/2242-08e8f3f8", "Dial failed due to trunk reporting BUSY - giving up") in new stack
-- Executing [s-BUSY@macro-dialout-trunk:2] PlayTones("SIP/2242-08e8f3f8", "busy") in new stack
Audio is at 192.168.0.149 port 10208
Adding codec 0x4 (ulaw) to SDP
Adding codec 0x100 (g729) to SDP
elastix*CLI>
<--- Transmitting (NAT) to 192.168.0.249:5060 --->
SIP/2.0 183 Session Progress
Via: SIP/2.0/UDP 192.168.0.249:5060;branch=z9hG4bK0b43499750c8adf1;received=192.168.0.249
From: <sip:2242@192.168.0.149>;tag=d2a5dee8-685270
To: <sip:99101@192.168.0.149;user=phone>;tag=as5e5ff044
Call-ID: D1B9-111B-466852701148D6A26165-017@SipHost
CSeq: 17 INVITE
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Contact: <sip:99101@192.168.0.149>
Content-Type: application/sdp
Content-Length: 231
v=0
o=root 2858 2858 IN IP4 192.168.0.149
s=session
c=IN IP4 192.168.0.149
t=0 0
m=audio 10208 RTP/AVP 0 18
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
<------------>
-- Executing [s-BUSY@macro-dialout-trunk:3] Busy("SIP/2242-08e8f3f8", "20") in new stack
elastix*CLI>
<--- Reliably Transmitting (NAT) to 192.168.0.249:5060 --->
SIP/2.0 486 Busy Here
Via: SIP/2.0/UDP 192.168.0.249:5060;branch=z9hG4bK0b43499750c8adf1;received=192.168.0.249
From: <sip:2242@192.168.0.149>;tag=d2a5dee8-685270
To: <sip:99101@192.168.0.149;user=phone>;tag=as5e5ff044
Call-ID: D1B9-111B-466852701148D6A26165-017@SipHost
CSeq: 17 INVITE
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Length: 0
X-Asterisk-HangupCause: User busy
X-Asterisk-HangupCauseCode: 17
<------------>
== Spawn extension (macro-dialout-trunk, s-BUSY, 3) exited non-zero on 'SIP/2242-08e8f3f8' in macro 'dialout-trunk'
== Spawn extension (macro-dialout-trunk, s-BUSY, 3) exited non-zero on 'SIP/2242-08e8f3f8'
-- Executing [h@macro-dialout-trunk:1] Macro("SIP/2242-08e8f3f8", "hangupcall|") in new stack
-- Executing [s@macro-hangupcall:1] ResetCDR("SIP/2242-08e8f3f8", "w") in new stack
-- Executing [s@macro-hangupcall:2] NoCDR("SIP/2242-08e8f3f8", "") in new stack
-- Executing [s@macro-hangupcall:3] GotoIf("SIP/2242-08e8f3f8", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,6)
-- Executing [s@macro-hangupcall:6] GotoIf("SIP/2242-08e8f3f8", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] GotoIf("SIP/2242-08e8f3f8", "1?theend") in new stack
-- Goto (macro-hangupcall,s,11)
-- Executing [s@macro-hangupcall:11] Hangup("SIP/2242-08e8f3f8", "") in new stack
== Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'SIP/2242-08e8f3f8' in macro 'hangupcall'
== Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'SIP/2242-08e8f3f8'
== End MixMonitor Recording SIP/2242-08e8f3f8
elastix*CLI>
<--- SIP read from 192.168.0.249:5060 --->
ACK sip:99101@192.168.0.149:5060;user=phone SIP/2.0
v: SIP/2.0/UDP 192.168.0.249:5060;branch=z9hG4bK0b43499750c8adf1
f: <sip:2242@192.168.0.149>;tag=d2a5dee8-685270
t: <sip:99101@192.168.0.149;user=phone>;tag=as5e5ff044
i: D1B9-111B-466852701148D6A26165-017@SipHost
CSeq: 17 ACK
Max-Forwards: 70
l: 0