Haike Nan's Blog

T市SIP时间同步问题小结

Haike Nan 于 2020-06-11 发布
一,办公室做实验

入职第一天,被告知市里有台NTP服务器会同步我们本地的时间,因为业务的特殊原因,不想要它同步,遂有了这次T市各县之旅。从分析问题到解决问题,尝试了各种方法,经历了各种坑,总结如下:

刚听到这个问题的时候,脑海里闪过的第一个念头就是ACL过滤。因为之前接触的都是思科的设备,而办公室只有华三的一台路由器,就在上面做了实验,经过厂商的确认,最终知道了这台路由器并不能实现二层方面的过滤,也即不能实现对设备两端的透明传输。因为是在VPN网络里,所以放弃使用三层的设备,最终决定用一台华为弱三层交换机,在不启用三层口的时候,它就是一台二层交换机,而且还可以做ACL过滤,正符合要求。

弱三层交换机到货后,第一时间在办公室做了实验,把它连在办公室的服务器和网络硬盘录像机(以下简称NVR)之间。服务器开启了NTP。

交换机出厂默认有管理密码,为了方便做实验,把它去掉(console线连接笔记本和交换机,在开机时按Ctrl+B,然后再按7,再按1)。

在交换机连服务器的这个口上配置ACL:

acl number 3001 //开启编号为3001的扩展ACL

rule 1 deny udp source any source-port eq 123 destination 192.168.100.100 0.0.0.0 destination-port eq 123 //编写规则号为1的ACL,其过滤了源地址为任意、源端口为123、目标地址为192.168.100.100、目标端口为123的数据包。

quit //退出

interface GigabitEthernet0/0/24 //进入端口

traffic-filter outbound acl 3001 //在端口上启用编号为3001的ACL,方向为out。

开启过滤前,NVR能收到来自服务器的NTP同步,开启过滤后,收不到。看来是成功了。

剩下的事就是抓包找出市里那个NTP服务器的地址,依样画葫芦配好就应该OK。但是,坑还在后面:

二,T市之旅

第一站Q县科目二,把交换机连在VPN(准确地说应该是专线)进线的上游,在连VPN的口上开启端口镜像,在其他任意一个空闲口上捕获来自这个端口的数据包。

observe-port 1 interface GigabitEthernet0/0/10 //观察端口

interface GigabitEthernet0/0/2 //镜像端口

port-mirroring to observe-port 1 both //开启端口镜像

抓包开始。

在wireshark上可以看到经过G0/0/2端口的数据包,在过滤框里输入NTP……咦,说好的NTP呢,怎么没有?

不怕,让我们稍做过滤,只显示目标地址为其中一台NVR的数据包吧。

看样子我们找到了一个可疑的家伙,SIP,好,让我们看看在NVR时间跳过的那一刹那,是不是它在作祟。

经过一次复现之后,确定是它没错了。

展开它,发现这一个binding(捆绑),正是时间同步字段。

问题的根源找到了,就把这个SIP给过滤掉吧!

acl number 3001

rule 1 deny udp source any source-port eq 5060 destination X.X.X.X 0.0.0.0 destination-port eq 5061

quit

interface GigabitEthernet0/0/24

traffic-filter outbound acl 3001

晚上回住处后左思右想,不对,万一这个SIP协议还有别的用途呢,上网一查:

啊,多媒体通信协议……好像还牵扯了多媒体的通信呢。没事,现在只能这样搞了,先过滤掉再看吧。

果然,不想看到的事还是发生了,据传,市里面看不到监控了。

稳住,我们能赢。向多方求证后,得知,上级监管单位是通过GB28181平台连接的我们,而这个国标平台,用的协议正好是SIP。登NVR的配置页面查看了下,果然是的。而且,那个SIP地址就四平八稳地躺在上面,这不就是我抓包抓来的那个地址嘛,要是早一点登进来看看,就不用走这个弯路了。因为想着之前处理这个问题的人应该把NVR的配置能改的都试着改了,一开始就没登进来看。但是经过抓包后,也能深入了解它的运行原理。

既然这个时间同步字段是可选的,那就应该可以去掉它。

三,和宇视的沟通

在得知上级平台用的是宇视的平台之后,打了他们的400电话,最终他们的技术支持告诉我,这个时间同步功能默认是关闭的,并把开启的方法告诉了我,我们想要关闭它,反其道而行之就可以了。

然而在具体实施的过程中,牵扯了太多的现实原因,此方法作罢。

之后询问他们,有没有单独为我们一家不做同步的方法,没有,也作罢。

四,和海康的沟通

和宇视沟通未果后,问海康,有没有办法把NTP校时的优先级调高一些(也是宇视的建议),经过一番曲折后,告诉我们,需要由客户经理反馈给他们,做一个评估,再决定是否可行。截至本文写作日,还没有得到他们的回馈,此方法也作罢。

五,最终解决方案

也是一开始定的备选方案,就是加一台视频服务器(不要存储功能,可以对接GB28181),由它做中转,提取NVR的摄像机的通道,供上级平台观看(就是没有了回放功能)。具体拓扑如下:

具体实施的时候,可以把其中一台NVR的地址配给视频服务器,再给这台NVR配一个未使用的地址,这样上级平台就不用改配置了。然后所有NVR关闭GB28181平台的接入,只由视频服务器接入GB28181平台,这样SIP协议就只会同步视频服务器的时间,而不同步NVR的时间。

目前此方案还在实施中,不出差错的话,是可以永久解决时间同步的问题的。