FreePBX working with an unstable router

办公室里的 FreePBX 经过多次调试,初步可以稳定运行。无奈物业管理公司配送的 ZyXEL AMG1302-T10A ADSL router 是个家用系列产品,用起来非常糟糕:设置了一批端口转发至 FreePBX,但会莫名其妙地失效。这种失效是个别端口转发失效,最要紧的是 Asterisk bind port 失效,这样外网的 SIP 分机就注册不了,运行若干天定会发生这样的事故。联想到外网分机通话时经常出现的单向语音或干脆无语音,估计也是路由器无法稳定地转发 RTP port 造成的。

物业管理公司外包 IT support 给一个外地的公司,虽然离得不远,但英国公司本身就效率低下,又不是在同一个城市,根本就指望不上。本来我也不指望别人来做 IT support,但物业管理公司和 IT support 公司不愿告诉我 ADSL 上网密码,我就无法换掉它的路由器;它也不愿告诉我路由器管理密码,搞得我在路由器端口转发失效的情况下,也无法远程重启路由器。

我已经跟物业管理公司要求独立装宽带,并自己管理。在没有得到答复前,怎么解决外网分机无法在特定端口注册的问题?我想了个办法,就是开启多个 Asterisk bind ports。严格地说,Asterisk只能有一个 bind port,而多个 bind ports 的效果,其实是在 FreePBX OS 层面的防火墙上达到。

iptables -t nat -A PREROUTING -i eth0 -p udp --dport (another port number) -j REDIRECT --to-ports (original port number)

这条规则把 (another port number) request 转给 (original port number)。我一口气添了 10 条同样的规则,这下有 11 个 SIP 注册端口可用,希望 ZyXEL ADSL router 不会一夜全坏掉吧?!

/etc/init.d/iptables save

保存路由规则,让重启后不丢失。

顺便说一下,我对 ZyXEL 的质量没有信心,它的家用系列产品不稳定不是个别现象,它的商用系列我也不敢去尝试。

Leave a comment

Your email address will not be published. Required fields are marked *