最近在看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里用的也是外网的地址;