排除故障的SIP连接故障

我有一个防火墙后面的Linux Asterisk服务器。 防火墙有三个接口:

  • eth0是Asterisk所在的局域网,
  • eth2是互联网的默认网关(通过ADSL调制解调器/路由器),
  • eth3是次要的互联网连接

如果我放过东西,Asterisk连接到SIP中继就好了。 它将通过eth2通过默认路由进行路由。 eth2是MASQUERADED。

如果我通过eth3( ip route add sip.provider.ip via gateway.ip dev eth3 )定义一条到我的SIP提供商的静态路由,我可以ping SIP提供商。 来自我的SIP提供商的一切都是由防火墙允许的。 但是Asterisk会拒绝连接(peer变得无法访问)…

我已经使用iptables TRACE来查看数据包,他们肯定通过eth3离开。 但是我没有看到任何数据包回来。 eth3也有一个MASQUERADE规则…

通过eth3删除静态路由将恢复连接。

我正在寻找提示和提示来帮助解决问题。

我怀疑你的星号服务器被configuration为使用无连接的UDP,所以传出的SIP请求可能包含最终用户应该用来连接回你的返回IP地址。

检查您的SIPconfiguration文件中的externip设置:

另外看看下面有很多好东西在它http://www.asteriskguru.com/tutorials/sip_nat_oneway_or_no_audio_asterisk.html

使用eth2和eth3的wireshark或tcpdump获取networking跟踪也将更清楚地解决这个问题