
工作需要访问一个外网视频监控平台之前一直使用没有问题突然有一天发现平台能正常访问但无法看到监控视频。联系了平台方也没有找到问题原因最后对方说不能做NAT。网络一直在做NAT怎么会突然有问题同事把公网IP配置在本地计算机上跳过NAT后故障消失说明确实NAT导致问题。这个网络的NAT配置在了紫光防火墙上可以通过抓包可以分析下问题。一、抓包分析原因先在本机计算机上用wireshark进行抓包看看和服务器是如何通信的。通过抓包可以找到很多通信报文其中比较特别的是SIP协议报文我以为监控平台直接用的HTTP协议通信。把SIP协议报文发给AI帮忙分析一下AI确实很有帮助解释的很清楚但没有真的解决问题这是个伏笔。通过AI帮助分析得知提供监控视频的服务器采用了SIP协议注册RTP协议拉监控视频流的方式工作。通过上图中的SIP注册报文可以看到携带的注册信息Via部分为局域网本地ip x.x.x.217箭头处。如果SIP服务器收到的注册报文该字段也是局域网ip x.x.x.217sip可能会把此IP地址作为回包地址。RTP的视频流会给到此局域网IP而非实际通信的公网IP则会出现通信故障。是否是这么回事需要在防火墙的外网口上抓包进一步查看。在防火墙外网口抓包同样抓到SIP注册报文。通过上图注册报文可以看到报文源IP已经经过防火墙的NAT转换替换成了公网IP x.x.x.252但是报文中的Via注册信息仍显示局域网IP x.x.x.217。如果SIP服务器没有特殊设置或者本地计算机上程序没有特殊设置SIP会使用这个注册IP地址进行通信导致故障。二、故障解决之前了解sip协议还是在视频会议系统中有SIP、H.323两个协议视频会议终端有会有nat穿越设置应该就是视频会议终端发起SIP注册时使用公网IP注册规避NAT问题。联系了平台方对方还是说不能NAT只能从防火墙上想办法。实际上一般防火墙有一个ALG功能就是解决NAT后FTP、H.323、SIP等协议通信问题的。像sip alg会在报文NAT转换时同时把注册信息中的ip替换成公网ip。但是紫光防火墙的ALG功能好像没生效紫光防火墙web界面也没有alg相关配置。联系了紫光400售后客服提醒39824不是sip标准端口可以自定义SIP端口。按售后建议修改后故障解决。SIP ALG生效后在出接口抓包如下图。上面这个NAT后的报文可以看到注册IP已经是公网IP x.x.x.252这样SIP回包也就正常了。很奇怪查了一下39824确实不是标准sip端口但wireshark却能正确识别协议让我一开始没往非标准端口上考虑。总结一下因非标准SIP端口防火墙SIP ALG未生效导致监控视频流异常。