最近有客户在外地办公室使用我们提供的VOIP服务,然后发现一开始外呼就被挂断,而且是几率的……请了呼叫系统技术支持的同学帮忙抓包看了报文,发现是客户网络中有设备篡改了SIP信令。好了,现在问题来了,到底是谁干的呢?开始以为是地方代理商搞鬼,不过发现是客户办公网IP,所以推测是出口网关设备干扰了SIP信令。
OPS同事跟我们说怀疑是一个ALG功能造成的。网上搜了下,ALG全称Application Level Gateway,是可以在做NAT的时候针对特定协议的包做一些过滤和处理,wiki上的介绍是 It allows customized NAT traversal filters to be plugged into the gateway to support address and port translation for certain application layer "control/data" protocols such as FTP, BitTorrent, SIP, RTSP, file transfer in IM applications, etc.
。相当于说,本来NAT的时候并不关心走的流量是啥,但是ALG会做一些应用层的分析,对特定流量做一些处理。这样一来就说的通了,肯定是被做了手脚了呗。
问到客户使用的网关是华为的H3C ER6300
,果然在里面找到ALG的设置页面。 勾选掉这个设置,再测试果然一跑就通了,job done!