最近想把公司内网的elastix 2.5版本的服务器设置成在公网也能使用,于是直接在路由器上面做了一条NAT映射,将服务器直接映射到了公网。结果发现,在内网使用公网地址进行注册时很顺利。当然了,内网要使用公网地址访问内网服务器,前提是要做好双向NAT映射,其实就是在内网接口也做个NAT,教程网上有很多就不讨论。当我回家使用时候发现,虽然软电话终端能够顺利注册到服务器,但是缺打不了电话,于是百度了一下,发现有的说是UDP在NAT穿越时的问题,有的直接说是NAT穿越问题,不光UDP,RTP,TCP也会出现类似问题,解决办法的理论有一堆了,看的我脑袋都要大了,似乎是个不能完成的任务。。。

    前面废话了一堆,其实到后来发现解决问题很简单,在elastix中pbx添加SIP扩展分机的时候,有个NAT选项,默认是不开启的,将NAT改成“yes”即可。具体做法如下:(以下方法摘录网上)

1。修改sip分机设置,在sip_additional.conf的[615]段中
nat=yes
qualify=yes ;貌似这项不是必须的

2。在sip_nat.conf中添加
;[general]    ;貌似需要把这个段名注释掉才行...
externip=55.66.77.88 ; Change to match our external IP address
localnet=192.168.1.0/255.255.255.0; Change to match our network settings

3。在rtp.conf中修改
rtpstart=10000
rtpend=11000

4。修改asterisk所在的无线路由器的设置
将sip端口5060和rtp端口10000-11000到asterisk的内网IP地址或者直接做IP映射。