我有一个防火墙后面的Linux Asterisk服务器。 防火墙有三个接口:
如果我放过东西,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跟踪也将更清楚地解决这个问题