这是我的第一篇文章,我非常感谢这个网站和答案的质量。
我使用pjsip在docker容器中有一个Asterisk 14.2.1。我已经为外部SIP帐户创建了注册。来电工作正常,选择正确的分机,语音就可以了。
Caller => SIP Account => Asterisk => Voice message
但是,当语音消息结束并执行Hangup时,SIP网关无法理解BYE。使用pjsip历史记录,我看到当SIP网关发送ACK时,它是使用的Asterisk公共IP(109.210.193.110),而不是原始的(91.121.228.210)。
那么,为什么Asterisk不接收ACK消息发送的信息? 这是错误还是配置问题? 任何线索?
No. Timestamp (Dir) Address SIP Message
===== ========== ============================== ===================================
00000 1482865880 * <== 91.121.228.210:5060 INVITE sip:s@81.251.101.22:5060 SIP/2.0
00001 1482865880 * ==> 91.121.228.210:5060 SIP/2.0 100 Trying
00002 1482865880 * ==> 91.121.228.210:5060 SIP/2.0 200 OK
00003 1482865880 * <== 91.121.228.210:5060 ACK sip:109.210.193.110:1024 SIP/2.0
00004 1482865883 * ==> 91.121.228.210:5060 BYE sip:06XXXXXXXX@192.168.51.60:5060;transport=udp SIP/2.0
00005 1482865884 * ==> 91.121.228.210:5060 BYE sip:06XXXXXXXX@192.168.51.60:5060;transport=udp SIP/2.0
00006 1482865884 * <== 91.121.228.210:5060 OPTIONS sip:109.210.193.110:1024 SIP/2.0
00007 1482865884 * ==> 91.121.228.210:5060 SIP/2.0 200 OK
00008 1482865885 * ==> 91.121.228.210:5060 BYE sip:06XXXXXXXX@192.168.51.60:5060;transport=udp SIP/2.0
00009 1482865887 * ==> 91.121.228.210:5060 BYE sip:06XXXXXXXX@192.168.51.60:5060;transport=udp SIP/2.0
00010 1482865891 * ==> 91.121.228.210:5060 BYE sip:06XXXXXXXX@192.168.51.60:5060;transport=udp SIP/2.0
00011 1482865892 * <== 91.121.228.210:5060 BYE sip:109.210.193.110:1024 SIP/2.0
00012 1482865892 * ==> 91.121.228.210:5060 SIP/2.0 200 OK
00013 1482865895 * ==> 91.121.228.210:5060 BYE sip:06XXXXXXXX@192.168.51.60:5060;transport=udp SIP/2.0
更新
172.17.28.217是呼叫者的私有IP,公共电话06XX已注册。 5.135.65.49是到达呼叫者的公共运营商网关。呼叫者在此网关后面注册。
91.121.228.210是我的星号注册的mixxit网关的公共IP。 192.168.51.60是mixxit网络的私有IP之一。
109.210.193.110是Asterisk的公共IP。 172.17.0.2是Asterisk的私有IP。
网络连接
[公共运营商]&lt; =&gt; [mixxit gateway]&lt; =&gt; [星号]
[(来电者06XX)172.17.28.217&lt; =&gt; 5.135.65.49]&lt; =&gt; [192.168.51.60&lt; =&gt; 91.121.228.210(GateWay 0970XX)]&lt; =&gt; [109.210.193.110&lt; =&gt; 172.17.0.2]
谢谢, 克里斯托夫