最近在看freeswitch,按照官网上装完,运行,用两个X-Lite当内网客户端,A呼B,B接通后30s左右就结束了,并且一端挂断另一端也没啥反应,Wireshark抓包查看问题,发现sip消息有问题,地址ip被替换为外网ip导致消息发送不到FS;
解决:打开/etc/freeswitch/sip_profiles下的配置文件internal.xml,将外网配置注释掉,重启FS;

分析:
FS的背靠背流程:

在给A发183和后面的200ok的时候contact地址被替换了,导致A的ack发送不到FS,FS就一直发200ok,A一直向错误的外网地址发送ack,最后30s左右FS结束了会话;(FS:192.168.1.117,A:192.168.1.30,B:192.168.1.96)
FS发的183振铃:

FS发的200OK:

A发送错误地址的ack:

导致FS的状态停留在200ok那里等待ack:

以至于后面的BYE消息也无效了;
FS跟B的消息里Via和Contact里用的也是外网的地址;
本文描述了使用Freeswitch搭建的电话系统中,遇到的SIP消息地址被错误替换为外网IP的问题,导致内网客户端间通话无法正常进行。通过调整配置文件internal.xml,注释掉外网配置,成功解决了SIP消息发送错误的问题。
462





