公有云配置NAT
第一步:将内网ip广播至公网ip,编辑/etc/kamailio/kamailio.cfg文件,搜索listen,添加如下配置
# listen=udp:10.0.0.10:5060 listen=0.0.0.0:5060 advertise PUBLIC_IP:5060
第二部:绑定NAT。这一步有坑,请注意!!
1. 根据kamailio文档,需要在/etc/kamailio/kamailio.cfg添加#!define WITH_NAT,如下:
#!KAMAILIO #!define WITH_NAT
2. 搜索WITH_NAT你会看到kamailio的介绍,安装rtpproxy 启动时用 -l 参数传递 you public ip。要是按照这个操作就呵呵了,当你invite时,会在公网ip和内网ip之间循环route,知道too many hops!!! 因为当前版本的rtpproxy缺少了一个公有云部署的必要的功能,使用广播地址。
# *** To enable nat traversal execute: # - define WITH_NAT # - install RTPProxy: http://www.rtpproxy.org # - start RTPProxy: # rtpproxy -l _your_public_ip_ -s udp:localhost:7722 # - option for NAT SIP OPTIONS keepalives: WITH_NATSIPPING
3. 很幸运有人修复了这个问题,你可以自己编译rtpproxy,如下:
#下载源码 wget https://github.com/miconda/rtpproxy/archive/master.zip # 解压并编译 unzip master.zip cd rtpproxy-master ./configure make make install #启动 rtpproxy ./rtpproxy -A PUBLIC_IP -l PRIVADE_IP -d INFO -s udp:*:7722