我有FreeSWITCH SIP服务器启动并运行。 它具有公共IP,并位于1对1 NAT(实际上是Amazon EC2实例)之后。
我可以连接到它,打电话给其他端点(即我的Android设备到我的电脑,反之亦然)和信号发送没有问题(呼叫,回答,挂断等)。 不幸的是,让我疯狂的是,没有audio能够通过,也没有video。
服务器不会抛出错误,但会报告很多重传,看起来像这样:
switch_rtp.c:915 [zrtp引擎]:警告! HELLO最大重传数达到(20次重试)。 ID = 15
编解码器设置正确(在我的局域网上本地configuration相同的configuration)。 客户端的NAT /防火墙可能是一个问题,信号通过(可能是由于固定端口,数据stream随机运行,这是目前我最好的select)。 客户端上的STUN / TURN / ICE设置似乎没有效果。 端点位于对称NAT之后。 在服务器上没有iptables规则,安全组的设置就像这里提示的那样: http : //wiki.freeswitch.org/wiki/Firewall
请帮助。 如何使其工作或至less诊断出什么问题?
沉默意味着没有RTP,请仔细检查您的防火墙设置
同时检查在SIP响应的SDP部分中是否有正确的公共IP地址,EC2实例在NAT后面
tcpdump和wireshark是你的朋友在这里
研究部分 :(感谢Matthias,tcpdump日志分析帮助)当通信客户端 – 服务器信号会话的一部分被路由到正确的IP(这就是我第一次检查),而媒体没有(我没有注意到,argh) 。 RTPstream向前10 。 *networking(服务器的私有IP)和192.168。 。 networking(我的电脑私人IP)。 一旦你知道你在找什么,就很容易发现。
解决scheme由两部分组成。 首先,我不得不在我的家庭路由器上禁用ALG支持,因为它干扰了我的客户端用来突破NAT的STUN。 基本上,什么STUNfind了,ALG扭转。 在这个简单的改变之后,来自服务器的RTP被引导到正确的地址。
其次,在设置SECOND服务器之后,我错过了在FreeSWITCHconfiguration中为内部configuration文件configuration了外部IP。 手动在这里: http : //wiki.freeswitch.org/wiki/Amazon_ec2是正确的,我只是设法省略build议configuration两行。 基本上,香草configuration与引用链接中描述的变化对我来说是有用的。