一、SIP测试环境搭建:
常用组网:
代理服务器可用SIP Server 2008和miniSIPserver。其中SIP Server 2008会修改SDP消息,导致数据报文也会过服务器转发,无法测试SIP-ALG效果。所以测试SIP-ALG时,使用miniSIPserver。
安装完成miniSIPserver后,打开软件,左击分机,点击增加分机信息,点击确定就ok了:
终端设备使用X-Lite软电话:
window系统下安装完X-Lite后,打开软件,右击SIP Account Settings 点击add配置客户端参数。注意保持与服务器用户名密码一致。代理服务器填写miniSIPserver服务器地址。
如果客户端上显示Ready并且拨号显示绿色,表示已经设置成功,且已在代理服务器上注册。(注:若显示没有音频驱动,请插入耳机)
此时miniSIPserver服务器上会显示分机地址:
二、SIP-ALG
防火墙设备均做源NAT
终端A呼叫终端B:
终端A发送INVITE消息通过代理服务器转发至终端B,终端B从INVITE消息中获取到终端A的IP地址和端口。
终端B回应Ringing(响铃)消息和200OK(接听),终端A从200OK消息中获取到终端B的IP地址和端口。
然后终端A与终端B进行数据通信,而不经过代理服务器。
此时若不修改INVITE与200OK内的SDP信息字段。终端A与终端B语音数据无法正常传输。
当开启SIP-ALG后:
防火墙设备会对SIP协议的INVITE和200OK消息内容字段进行修改:
将终端A发出的INVITE消息SDP字段中的IP修改为源NAT地址池IP,端口随机。
终端B回应的200OK消息SDP字段中的IP修改为源NAT地址池IP,端口随机。
当防火墙设备收到终端A/终端B发送的语音数据后,会按ALG表项转换目的IP与端口,使数据报文到达终端B/终端A。
SIP常见问题:
-
内网终端A与终端B单通(即A到B数据报文正常转发,B到A数据报文被丢弃)
需在【会话管理】→【会话参数】关闭SIP检查。
2、终端B与终端A无法正常通信,抓包显示RTP/RTCP报文交互正常,但正反向报文端口不一致。(因为有些软电话收包时会检查源端口)
需要在命令行下开启alg sip src-port-hold(即只更改IP不更改端口)。