黄宏志,路懿,刘娜
(1.渤海大学信息化建设与管理中心,锦州121000;2.渤海大学信息科学与技术学院,锦州121000)
校园网进行了升级改造,启用了IPv6,IPv4 也由原来的静态配置改成动态获取,同时,也改变了原来的实名认证方式,由锐捷的SAM 认证改变为锐捷的SAM+认证,去掉了认证客户端,变成WebPortal 认证,只要终端上有浏览器就可以进行实名认证,这样,原来无法进行实名认证的移动终端也可以进行实名认证了,极大地方便了用户的上网体验。同时,又带来了一个新的问题,原来的网络流量监测只能获取到IPv4 的流量信息,如何获取实名用户的IPv6 流量,如何把不固定的IP(IPv4+IPv6)的流量与某个实名用户对应。在现有的网络体系和技术条件下,已经无法解决这个问题了。结合渤海大学校园网的管理,本文提出了一个全新的解决思路,把某个时段的流量信息与实名用户对应起来,很好地解决了实名用户的网络流量监测问题。
关于IP 的网络流量的采集,目前比较常用的方法有:NetFlow 技术[1-2]、sFlow 技术[3-4]、IPFIX 技术[5]、Net⁃Stream 技术[6]等,这些技术都是基于硬件实现的,需要特定的设备支持,有很大的局限性。还有一些研究机构,研究出一些基于x86 平台实现的软件方式对流量进行采集,例如DPDK[7]、nProbe[8]、PF-RING[9]等。另外,一些研究工作者也对网络数据包的捕获及分析做过一些研究,例如王煜骢等人研究的NTCI-Flow 技术[10]、孟庆娟等人进行的网络数据捕获及分析的研究[11]、赵宁等人基于DPDK 进行的研究[12]、于跃等人进行的嗅探技术的研究[13]等。而武昊等人则研究出了网络流量测量的研究装置[14]。朱俚治等人进行了网络流量检测算法的研究[15]。网络嗅探技术部署比较灵活,既可以在交换机上通过端口镜像的方式进行监测,又可以在路由器或者网关设备上通过端口镜像或者使用分光设备来进行监测。因此,本方案中的流量采集部分采用嗅探技术。
在现有设备和网络状态下,通过与核心交换机交互,获取某个时段的IP(IPv4+IPv6)与MAC 的对应关系,然后再查找锐捷SAM+的用户上网记录和在线记录,获取某个时段IPv4+MAC 与实名用户的对应关系,然后结合流量监测设备,把某个时段的流量信息与实名用户对应。
解决方案的技术架构如图1 所示。
图1 网络流量监测技术架构图
IP 流量采集设备,使用普通的x86 架构的PC 服务器,安装Debian 操作系统,流量采集软件使用C 语言编写,调用使用比较广泛的数据抓包库libpcap[16]捕获数据报并分析。采集设备的部署位置比较灵活,既可以在核心交换机上配置一个上行端口的镜像口,也可以在出口路由器的内网口配置一个镜像口(注:如果内网访问外网的时候存在NAT 情况,必须在内网和NAT设备之间做端口镜像,否则无法有效获取内网IP 地址)。
(1)以太网数据报结构
目前校园网只有以太网设备,在处理数据报的时候,只处理以太网数据报。参照RFC894[17]的描述,以太网帧格式如图2 所示。
图2 以太网帧格式
在结构图中,Type 的值决定了数据报的类型:
当Type 的值为0x8100、0x9100、0x9200、0x88a8 之一时,表示该数据报包含VLAN 信息,需要剥离VLAN信息后再进行处理。
当Type 的值为0x0800 时,表示该数据报是IPv4数据报,数据报报头格式如图3(RFC791[18])所示。
图3 IPv4数据报报头格式
当Type 为0x86dd 时,表示该数据报为IPv6 数据报,数据报报头格式如图4(RFC2460[19])所示。
图4 IPv6数据报报头格式
为了提高数据报分析的效率,只采集数据报中的源IP、目的IP、版本(IPv4 或者IPv6)、协议(TCP[20]、UDP[21]、ICMP[22-23])对于TCP 和UDP,还需要提取源端口和目的端口,对于ICMP,需要提取TYPE 和CODE作为源端口和目的端口。
(2)以太网数据报处理
在流量采集过程中,以数据报的关键信息:源IP、目的IP、源端口、目的端口、版本、协议作为流量聚合的键值,为了方便后面的查询处理,以60 秒为一个聚合周期;为了平衡采集性能和内存占用,以5 分钟为一个周期,把采集到的流量数据保存到本地数据库中。
(1)MAC 信息采集
IP+MAC 的对应关系需要通过定时到核心交换机或者网关设备里面采集,并把采集到的信息记录到中心数据库中。以锐捷的核心交换机N18000 作为MAC的采集设备,不同厂家的设备有不同的命令形式,以下所有命令皆以N18000 为准[24]。
查看IPv4+MAC 的对应关系可以使用“show arp”这条命令,结果如图5 所示。
图5 show arp输出示例
可以使用如下的方式提取出有效的IPv4+MAC 对应关系(代码为PHP 脚本):
查看IPv6+MAC 的对应关系可以使用“show ipv6 neighbors”这条命令,结果如图6 所示。
图6 show ipv6 neighbors 输出示例
可以使用如下的代码提取出有效的IPv6+MAC 的对应关系(代码为PHP 脚本):
(2)SAM 实名认证用户信息的采集
校园网使用的是锐捷的SAM+实名认证系统,可以通过SAM+的认证日志,提取出某个时段的IPv4+MAC+用户的对应关系。分析SAM+的数据库结构,发现在线用户的信息保存在ONLINE_USER 数据表中,有效的数据字段是:USER_ID、USER_MAC、USER_IPV4、USER_IPV6、USER_NAME、CREATE_TIME,分别表示:用户账号、MAC、IPv4、IPv6、用户姓名、认证时间。如果是使用WebPortal 认证方式,那么IPv6 字段是空值,只有使用客户端认证的时候,IPv6 才显示为有效值。对于已经离线的用户,可以通过ONLINE_DE⁃TAIL 这个数据表来获取认证记录,但是,这个表中并没有用户姓名的记录,因此,在提取信息的时候,需要关联数据表USERINFO 来获取用户姓名,相关的SQL语句如下:
因为登录日志很多,不可能实时得到SAM+的数据库中获取信息,否则会对生产服务器产生过大的压力,因此,本方法采用定时同步的方法(同步时间间隔5 分钟,这样既保证了有效的时间粒度,又对SAM+的数据库没有影响),把SAM+数据库的有效信息同步到中心数据库中,这样在后面的流量分析模块处理用户信息的时候,不会影响到SAM+的正常运转。
(1)流量整合
通过分析流量探针的数据库里面的流量记录和中心数据库里面的IP+MAC 的记录和IP+MAC+用户的记录,整合成完成的流量日志,保存到中心数据库中,以供流量展示模块进行展示。
具体方法是通过一个后台脚本,定时把流量信息从流量探针数据库同步到中心数据库,为了平衡性能和时间,脚本每5 分钟同步一次,在同步的时候,首先到流量探针数据库获取最新的流量信息,这个流量信息具有如下关键字段:源IP、目的IP、源端口、目的端口、版本、协议、开始时间、结束时间等,通过用户设置的内网IP 范围,修正流量信息的入流量和出流量,然后再到中心数据库中查找对应的时间段该IP 所对应的用户信息,如果没有有效的实名认证用户,就用MAC 作为流量的用户信息。然后把整合后的具有完整信息的流量记录保存到中心数据库的流量表中。
(2)流量聚合
为了方便流量展示模块的展示效率,还需要对历史流量进行聚合。为了展示的方便,在中心数据库中生成如下数据表:T_FLOW_M5、T_FLOW_TOTAL_M5、
T_FLOW_H1、 T_FLOW_TOTAL_H1、 T_FLOW_D1、T_FLOW_TOTAL_D1 分别保存5 分钟的流量聚合、1小时的流量聚合、1 天的流量聚合。
以5 分钟的流量聚合为例,可以使用如下的SQL语句来实现(数据库使用MySQL),代码中的'2020-08-12 23:55:00'表示聚合时刻,'2020-08-12 23:50:00'表示最后一次聚合时刻,'2020-08-12 23:45:00'表示5 分钟总流量的最后聚合时刻:
通过查询中心数据库的流量记录,以直观而友好的图表展示用户的流量记录。
在锐捷SAM+DHCP 环境下,先通过核心交换机获取某个时段的IP 与MAC 的对应关系,再通过锐捷SAM+的用户上网记录和在线记录获取某个时段IPv4与实名用户的对应关系,然后结合流量监测设备获取的流量信息,把IP(IPv4+IPv6)的流量信息与实名用户对应,是能够准确获取实名用户的实时流量的。
图7 24 小时所有用户总流量
图8 24 小时用户总流量TOP10
图9 某个用户24 小时总流量
图10 某个用户24 小时目的IP 流量TOP10