解决使用USG2100传输语音电话故障问题

发布时间:  2015-07-29 浏览次数:  313 下载次数:  0
问题描述

   客户反馈使用USG2100 下接语音电话,映射地址到外网。设置后发现内网呼叫外网,或者外网呼叫内网,呼叫请求能够建立,语音能够从内网出去,但是外网的语音不能发送进内网。

规划如下: 
1.客户端的地址是192.168.0.2 直接连接到防护墙的FE1/0/0接口上面,未配置网关
2.内部服务器的地址是30.3.0.10,在防火墙上做了nat-server配置,被映射为192.168.0.3
3.客户端指定目标地址是192.168.0.3登录到服务器上,从服务器一端向防火墙外面发语音正常,信令正常。


告警信息

查看会话,发现有发送的数据,没有回包。

[USG2100]display firewall session table verbose
09:49:17  2015/06/03
Current Total Sessions : 4
  1  udp  VPN:public --> public
  Zone: trust--> untrust  PolicyID: default  TTL: 00:02:00  Left: 00:01:52
  Output-interface: Vlanif1  NextHop: 192.168.0.4  MAC: 00-00-00-00-00-00
  <--packets:0 bytes:0   -->packets:349 bytes:44672
  10.4.8.5:29876[192.168.0.3:29876]-->192.168.0.4:1024


处理过程

关键配置:
firewall tcp-mss 1200
nat server 0 protocol udp global 192.168.0.3 any inside 10.4.8.5 any
firewall interzone trust untrust
detect sip


客户表示:从客户端向服务器端发信令正常,语音不通。 咨询过我们的研发,是防火墙未对SIP包内部分地址做替换

抓包信息:

从抓包来看这个端口不是sip的知名端口,需确定现网sip信令交互端口后做一下端口映射。要确保会话中有+号,一般情况下,是invite

报文携带SDP信息,但是现网是ACK报文携带SDP信息。

经确定这个是客户那边自己开发的sip通讯软件

根因

根据之前抓包情况分析,黑色的是标记出的关键报文:


通常SIP通信,都是invite报文携带SDP信息,但是故障的这通电话,invite没有携带SDP报文,而由最后的ACK报文来携带了最终的SDP信息。当前,华为防火墙不支持ACK携带SDP的情况做nat alg(也就是改内部的IP地址),只支持invite和200OK的SDP报文的内部IP修改。

经查询RFC,里面是这样写的:



通常invite都会携带SDP信息。


         ACK可能会携带最终的SDP信息。

根据当前现网环境,可以在终端语音SIP通信软件做修改,用以支持在invite中携带SDP。

解决方案

在对端语音SIP通信软件中做修改,保证在invite中携带SDP,不要在ACK中携带SDP信息即可解决问题。

建议与总结

END