freeswitch局域网对接鼎信设备,同时供外网用户访问

2018-12-14 15:59:51   工作备份

  freeswitch   多网卡  

freeswitch踩坑记录

双网卡,em1走公网独立ip,em4网口走局域网,目的,服务器走192.168.0.0/16类型的ip时,走192.168.31.1网关,其余走公网网关
  1. 网卡路由配置
    1. cd /etc/sysconfig/network-scripts/
    2. vim ifcfg-em1 //配置网卡1
    3. .....
    4. NAME=em1
    5. ONBOOT=yes
    6. IPADDR=10.1.1.1
    7. PREFIX=24
    8. GATEWAY=10.1.1.254
    9. .......
    10. vim ifcfg-em4 网卡4不要配置网关,设置em1的网关即可
    11. .....
    12. NAME=em4
    13. ONBOOT=yes
    14. IPADDR=192.168.31.52
    15. PREFIX=24
    16. .....
    17. 添加内网访问路由
    18. vim /etc/sysconfig/network-scripts/route-em4
    19. 192.168.0.0/16 via 192.168.31.1 dev em4
    systemctl restart network.service 重启网络服务
    运行route -n,查看生效即可
  2. 这一步卡了我很久,我原以为更改了访问路由就可以了,但是抓包发现,freeswitch在收到公网注册用户的invite请求后,竟然还是默认使用公网ip:5080端口 向IP对接的鼎信设备发送invite消息,但是鼎信设备在局域网内啊,当然访问不到,所以通话流程一直无法建立,纠结了很久,发现,5080端口是freeswitch在vars.xml文件中定义的
    1. <X-PRE-PROCESS cmd="set" data="external_sip_port=5080"/>
    既然如此,那应该可能是freeswitch自动使用了外网ip导致的,通过修改sip_profiles/external.xml文件
    1. <param name="rtp-ip" value="$${local_ip_v4}"/> => <param name="rtp-ip" value="局域网ip"/>
    2. <param name="sip-ip" value="$${local_ip_v4}"/>=> <param name="sip" value="局域网ip"/>
    重试,恢复正常