DNS SRV故障转移无法在星号中运行

时间:2017-01-05 14:13:22

标签: dns asterisk failover srv

我已添加以下两个DNS SRV记录(TTL为10秒)进行测试:

_sip._udp.example.com.  SRV   1   0  5060   sip101.example.com.
_sip._udp.example.com.  SRV   2   0  5060   sip102.example.com.

sip101.example.com和sip102.example.com均为两个Asterisk服务器的有效A记录(版本11.17.1)。

我正在使用IP X.X.X.X从另一个Asterisk服务器(版本11.17.1)发送呼叫,并带有以下拨号方案:

[default]
exten => 0900,1,NoOP(This is test call for checking DNS SRV example.com)
exten => 0900,n,Dial(SIP/XXXX@example.com)

以下是发送呼叫的分机的配置:

[XXXX]
type=friend
username=XXXX
secret=temp
host=dynamic
context=default
canreinvite=no
srvlookup=yes
qualify=yes
nat=force_rport,comedia

为了测试DNS SRV的故障转移,我在第一个priroty上的sip101.example.com上禁用了Asterisk;所以在sip101.example.com上没有响应直到10秒后,它应该故障转移到sip102.example.com。

但是它没有失败到第二优先级的Asterisk,但是时间如下:

== Using SIP RTP CoS mark 5
-- Executing [0900@default:1] NoOp("SIP/XXXX-0000014e", "This is test call for checking DNS SRV example.com") in new stack
-- Executing [0900@deafult:2] Dial("SIP/XXXX-0000014e", "SIP/XXXX@example.com") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/XXXX@example.com
-- SIP/example.com-0000014f is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
-- Auto fallthrough, channel 'SIP/XXXX-0000014e' status is 'CONGESTION'
-- Executing [h@default:1] Hangup("SIP/XXXX-0000014e", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'SIP/XXXX-0000014e'
[Jan  3 13:48:43] WARNING[3168]: chan_sip.c:4024 retrans_pkt: Retransmission timeout reached on transmission 18da7dbf6e671fc34a20b74a64cff9a8@X.X.X.X:5060 for seqno 102 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32000ms with no response

任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

一些谷歌搜索(1234)表明旧版本:

  

Asterisk只读取第一个SRV条目而不用考虑优先级和权重。

所以你可能想尝试使用Asterisk 13和PJSIP。

答案 1 :(得分:0)

Asterisk不会成为第二优先。它只做一次尝试。如果您需要第二次尝试(到其他IP),您可以在拨号方案中进行第二次呼叫。

如果使用chan_sip,第二次调用将被解析为第一次SRV记录。使用pjsip,它可以切换(但不允许)。

如果您需要garanted switch,请使用不同的dns名称或ips,并在dialplan中进行故障转移(例如,请查看extensions.conf.sample)。

答案 2 :(得分:0)

感谢伙计们给我回复。

现在很清楚,Asterisk 11.17.2无法解析多个DNS SRV记录。

为了进一步测试,我切换了客户端(流量生成器),它将来自Asterisk 11.17的DNS SRV星号的呼叫发送到Freeswitch 1.7,它运行良好。

Freeswitch成功向DNS SRV发送/故障转移呼叫,即example.com。但仍然有一个问题,Freeswitch在恢复后永远不会将呼叫发送回主节点。它需要重新启动Freeswitch以再次选择主节点来发送呼叫。