День добрый,
Поднял Asterisk 1.4.21.2~dfsg-3 на NSLU2-устройстве (ARM-процессор). OS - Debian
Linux NSLU 2.6.26-1-ixp4xx #1 Sat Mar 14 08:31:13 UTC 2009 armv5tel GNU/Linux
Asterisk устанавливал из пакаджей, т.е стандартной командой apt-get install
Все, вроде, работает, но есть проблема с терминированием звонков из Google Talk: звонок устанавливается, но в обе стороны тишина.
gtalk.conf
[general]
context=gtalk-in
allowguest=yes
[guest]
disallow=all
allow=ulaw
context=gtalk-in
connection=asterisk
jabber.conf
[general]
debug=yes
autoprune=no
autoregister=yes
[asterisk]
type=client
serverhost=talk.google.com
username=kameneved.pbx@gmail.com/Talk
secret=my_password
port=5222
usetls=yes
usesasl=yes
timeout=100
buddy=kameneved@gmail.com
кусок из
extensions.conf
[gtalk-in]
exten => s,1,JABBERSend(asterisk,${CALLERID(name)},You are calling my home Asterisk PBX. Please wait...)
exten => s,n,Macro(stdexten,3001,SIP/3001)
exten => t,1,Hangup
rtp.conf
[general]
rtpstart=10000
rtpend=20000
Порты на фаерволе проброшены следующие:
10000-20000 UDP (RTP)
4569 UDP (IAX)
5060 UDP (SIP)
Asterisk стоит во внутренней сети (192.168.1.253)
При звонке снаружи по GTalk вижу в логах следующее:
JABBER: asterisk INCOMING: <iq to="kameneved.pbx@gmail.com/TalkE2252938" type="set" id="212" from="kameneved@gmail.com/Talk.v105CC4D4FC6"><session type="initiate" id="853655770" initiator="kameneved@gmail.com/Talk.v105CC4D4FC6" xmlns="http://www.google.com/session"><description xmlns="http://www.google.com/session/phone"><payload-type id="103" name="ISAC"/><payload-type id="97" name="IPCMWB"/><payload-type id="4" name="G723"/><payload-type id="100" name="EG711U"/><payload-type id="101" name="EG711A"/><payload-type id="0" name="PCMU"/><payload-type id="8" name="PCMA"/><payload-type id="13" name="CN"/><payload-type id="102" name="iLBC"/><payload-type id="117" name="red"/><payload-type id="106" name="audio/telephone-event"/></description></session></iq>
NSLU*CLI>
JABBER: asterisk OUTGOING: <iq type='result' from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' id='212'/>
JABBER: asterisk OUTGOING: <iq from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' type='set' id='aaaad'><session type='transport-accept' id='853655770' initiator='kameneved@gmail.com/Talk.v105CC4D4FC6' xmlns='http://www.google.com/session'><transport xmlns='http://www.google.com/transport/p2p'/></session></iq>
JABBER: asterisk OUTGOING: <message type='chat' to='kameneved@gmail.com/Talk.v105CC4D4FC6' from='kameneved.pbx@gmail.com/TalkE2252938'><body>You are calling my home Asterisk PBX. Please wait...</body></message>
NSLU*CLI>
JABBER: asterisk OUTGOING: <iq from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' type='set' id='aaaae'><session type='transport-info' id='853655770' initiator='kameneved@gmail.com/Talk.v105CC4D4FC6' xmlns='http://www.google.com/session'><transport xmlns='http://www.google.com/transport/p2p'><candidate name='rtp' address='192.168.1.253' port='12480' username='28ab88a128e11c7b' password='26bf31d25cc170a3' preference='1.00' protocol='udp' type='local' network='0' generation='0'/></transport></session></iq>
NSLU*CLI>
JABBER: asterisk INCOMING: <iq type="error" to="kameneved.pbx@gmail.com/TalkE2252938" id="aaaad" from="kameneved@gmail.com/Talk.v105CC4D4FC6"><session type="transport-accept" id="853655770" initiator="kameneved@gmail.com/Talk.v105CC4D4FC6" xmlns="http://www.google.com/session"><transport xmlns="http://www.google.com/transport/p2p"/></session><error code="501" type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
JABBER: asterisk OUTGOING: <iq type='result' from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' id='aaaad'/>
NSLU*CLI>
JABBER: asterisk INCOMING: <iq type="error" to="kameneved.pbx@gmail.com/TalkE2252938" id="aaaae" from="kameneved@gmail.com/Talk.v105CC4D4FC6"><session type="transport-info" id="853655770" initiator="kameneved@gmail.com/Talk.v105CC4D4FC6" xmlns="http://www.google.com/session"><transport xmlns="http://www.google.com/transport/p2p"><candidate name="rtp" address="192.168.1.253" port="12480" username="28ab88a128e11c7b" password="26bf31d25cc170a3" preference="1.00" protocol="udp" type="local" network="0" generation="0"/></transport></session><error code="501" type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
JABBER: asterisk OUTGOING: <iq type='result' from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' id='aaaae'/>
[Apr 20 13:37:47] WARNING[25831]: app_dial.c:1202 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
NSLU*CLI>
JABBER: asterisk OUTGOING: <iq type='set' to='kameneved@gmail.com/Talk.v105CC4D4FC6' from='kameneved.pbx@gmail.com/TalkE2252938' id='aaaaf'><session xmlns='http://www.google.com/session' type='accept' initiator='kameneved@gmail.com/Talk.v105CC4D4FC6' id='853655770'><description xmlns='http://www.google.com/session/phone' xml:lang='en'><payload-type id='0' name='PCMU' clockrate='8000' bitrate='64000'/><payload-type id='100' name='EG711U' clockrate='8000' bitrate='64000'/><payload-type id='106' name='telephone-event' clockrate='8000'/></description><transport xmlns='http://www.google.com/transport/p2p'/></session></iq>
NSLU*CLI>
JABBER: asterisk INCOMING: <iq type="result" to="kameneved.pbx@gmail.com/TalkE2252938" id="aaaaf" from="kameneved@gmail.com/Talk.v105CC4D4FC6"/>
NSLU*CLI>
JABBER: asterisk INCOMING: <iq to="kameneved.pbx@gmail.com/TalkE2252938" type="set" id="214" from="kameneved@gmail.com/Talk.v105CC4D4FC6"><session type="candidates" id="853655770" initiator="kameneved@gmail.com/Talk.v105CC4D4FC6" xmlns="http://www.google.com/session"><candidate name="rtp" address="192.168.55.64" port="3085" username="SrjikOxZZe0tDz8B" password="F0gdVQlEBwiBwphE" preference="1" protocol="udp" type="local" network="0" generation="0"/></session></iq>
JABBER: asterisk OUTGOING: <iq type='result' from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' id='214'/>
NSLU*CLI>
JABBER: asterisk INCOMING: <iq to="kameneved.pbx@gmail.com/TalkE2252938" type="set" id="215" from="kameneved@gmail.com/Talk.v105CC4D4FC6"><session type="candidates" id="853655770" initiator="kameneved@gmail.com/Talk.v105CC4D4FC6" xmlns="http://www.google.com/session"><candidate name="rtp" address="209.85.137.126" port="19295" username="dyflG70lCzkvfiKY" password="u2iIAOLFYJtTZF5v" preference="0.5" protocol="udp" type="relay" network="0" generation="0"/></session></iq>
JABBER: asterisk OUTGOING: <iq type='result' from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' id='215'/>
[Apr 20 13:38:00] NOTICE[25831]: chan_gtalk.c:1480 gtalk_indicate: Don't know how to indicate condition '18'
[Apr 20 13:38:04] WARNING[25831]: app.c:611 __ast_play_and_record: No audio available on Gtalk/kameneved-6d62??
NSLU*CLI>
JABBER: asterisk OUTGOING: <iq type='set' from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' id='aaaag'><session type='terminate' id='853655770' initiator='kameneved@gmail.com/Talk.v105CC4D4FC6' xmlns='http://www.google.com/session'/></iq>
NSLU*CLI>
JABBER: asterisk INCOMING: <iq type="result" to="kameneved.pbx@gmail.com/TalkE2252938" id="aaaag" from="kameneved@gmail.com/Talk.v105CC4D4FC6"/>
NSLU*CLI>
JABBER: asterisk INCOMING: <iq to="kameneved.pbx@gmail.com/TalkE2252938" type="set" id="216" from="kameneved@gmail.com/Talk.v105CC4D4FC6"><session type="terminate" id="853655770" initiator="kameneved@gmail.com/Talk.v105CC4D4FC6" xmlns="http://www.google.com/session"/></iq>
[Apr 20 13:38:05] NOTICE[25808]: chan_gtalk.c:783 gtalk_hangup_farend: Whoa, didn't find call!
JABBER: asterisk OUTGOING: <iq type='result' from='kameneved.pbx@gmail.com/TalkE2252938' to='kameneved@gmail.com/Talk.v105CC4D4FC6' id='216'/>
NSLU*CLI>
В чем может быть проблема? Жирным цветом выделил то, что мне лично кажется странным. Получается, что мой Asterisk говорит наружу, что RTP находится на IP 192.168.1.253.
Если мое предположение верно, то это и есть проблема - сервис снаружи и не может достучаться до этого адреса во внутренней сети. Или нет? Подскажите, плз.