黃宏志,路懿,劉娜
(1.渤海大學(xué)信息化建設(shè)與管理中心,錦州121000;2.渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院,錦州121000)
校園網(wǎng)進(jìn)行了升級(jí)改造,啟用了IPv6,IPv4 也由原來(lái)的靜態(tài)配置改成動(dòng)態(tài)獲取,同時(shí),也改變了原來(lái)的實(shí)名認(rèn)證方式,由銳捷的SAM 認(rèn)證改變?yōu)殇J捷的SAM+認(rèn)證,去掉了認(rèn)證客戶(hù)端,變成WebPortal 認(rèn)證,只要終端上有瀏覽器就可以進(jìn)行實(shí)名認(rèn)證,這樣,原來(lái)無(wú)法進(jìn)行實(shí)名認(rèn)證的移動(dòng)終端也可以進(jìn)行實(shí)名認(rèn)證了,極大地方便了用戶(hù)的上網(wǎng)體驗(yàn)。同時(shí),又帶來(lái)了一個(gè)新的問(wèn)題,原來(lái)的網(wǎng)絡(luò)流量監(jiān)測(cè)只能獲取到IPv4 的流量信息,如何獲取實(shí)名用戶(hù)的IPv6 流量,如何把不固定的IP(IPv4+IPv6)的流量與某個(gè)實(shí)名用戶(hù)對(duì)應(yīng)。在現(xiàn)有的網(wǎng)絡(luò)體系和技術(shù)條件下,已經(jīng)無(wú)法解決這個(gè)問(wèn)題了。結(jié)合渤海大學(xué)校園網(wǎng)的管理,本文提出了一個(gè)全新的解決思路,把某個(gè)時(shí)段的流量信息與實(shí)名用戶(hù)對(duì)應(yīng)起來(lái),很好地解決了實(shí)名用戶(hù)的網(wǎng)絡(luò)流量監(jiān)測(cè)問(wèn)題。
關(guān)于IP 的網(wǎng)絡(luò)流量的采集,目前比較常用的方法有:NetFlow 技術(shù)[1-2]、sFlow 技術(shù)[3-4]、IPFIX 技術(shù)[5]、Net?Stream 技術(shù)[6]等,這些技術(shù)都是基于硬件實(shí)現(xiàn)的,需要特定的設(shè)備支持,有很大的局限性。還有一些研究機(jī)構(gòu),研究出一些基于x86 平臺(tái)實(shí)現(xiàn)的軟件方式對(duì)流量進(jìn)行采集,例如DPDK[7]、nProbe[8]、PF-RING[9]等。另外,一些研究工作者也對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲及分析做過(guò)一些研究,例如王煜驄等人研究的NTCI-Flow 技術(shù)[10]、孟慶娟等人進(jìn)行的網(wǎng)絡(luò)數(shù)據(jù)捕獲及分析的研究[11]、趙寧等人基于DPDK 進(jìn)行的研究[12]、于躍等人進(jìn)行的嗅探技術(shù)的研究[13]等。而武昊等人則研究出了網(wǎng)絡(luò)流量測(cè)量的研究裝置[14]。朱俚治等人進(jìn)行了網(wǎng)絡(luò)流量檢測(cè)算法的研究[15]。網(wǎng)絡(luò)嗅探技術(shù)部署比較靈活,既可以在交換機(jī)上通過(guò)端口鏡像的方式進(jìn)行監(jiān)測(cè),又可以在路由器或者網(wǎng)關(guān)設(shè)備上通過(guò)端口鏡像或者使用分光設(shè)備來(lái)進(jìn)行監(jiān)測(cè)。因此,本方案中的流量采集部分采用嗅探技術(shù)。
在現(xiàn)有設(shè)備和網(wǎng)絡(luò)狀態(tài)下,通過(guò)與核心交換機(jī)交互,獲取某個(gè)時(shí)段的IP(IPv4+IPv6)與MAC 的對(duì)應(yīng)關(guān)系,然后再查找銳捷SAM+的用戶(hù)上網(wǎng)記錄和在線(xiàn)記錄,獲取某個(gè)時(shí)段IPv4+MAC 與實(shí)名用戶(hù)的對(duì)應(yīng)關(guān)系,然后結(jié)合流量監(jiān)測(cè)設(shè)備,把某個(gè)時(shí)段的流量信息與實(shí)名用戶(hù)對(duì)應(yīng)。
解決方案的技術(shù)架構(gòu)如圖1 所示。
圖1 網(wǎng)絡(luò)流量監(jiān)測(cè)技術(shù)架構(gòu)圖
IP 流量采集設(shè)備,使用普通的x86 架構(gòu)的PC 服務(wù)器,安裝Debian 操作系統(tǒng),流量采集軟件使用C 語(yǔ)言編寫(xiě),調(diào)用使用比較廣泛的數(shù)據(jù)抓包庫(kù)libpcap[16]捕獲數(shù)據(jù)報(bào)并分析。采集設(shè)備的部署位置比較靈活,既可以在核心交換機(jī)上配置一個(gè)上行端口的鏡像口,也可以在出口路由器的內(nèi)網(wǎng)口配置一個(gè)鏡像口(注:如果內(nèi)網(wǎng)訪(fǎng)問(wèn)外網(wǎng)的時(shí)候存在NAT 情況,必須在內(nèi)網(wǎng)和NAT設(shè)備之間做端口鏡像,否則無(wú)法有效獲取內(nèi)網(wǎng)IP 地址)。
(1)以太網(wǎng)數(shù)據(jù)報(bào)結(jié)構(gòu)
目前校園網(wǎng)只有以太網(wǎng)設(shè)備,在處理數(shù)據(jù)報(bào)的時(shí)候,只處理以太網(wǎng)數(shù)據(jù)報(bào)。參照RFC894[17]的描述,以太網(wǎng)幀格式如圖2 所示。
圖2 以太網(wǎng)幀格式
在結(jié)構(gòu)圖中,Type 的值決定了數(shù)據(jù)報(bào)的類(lèi)型:
當(dāng)Type 的值為0x8100、0x9100、0x9200、0x88a8 之一時(shí),表示該數(shù)據(jù)報(bào)包含VLAN 信息,需要?jiǎng)冸xVLAN信息后再進(jìn)行處理。
當(dāng)Type 的值為0x0800 時(shí),表示該數(shù)據(jù)報(bào)是IPv4數(shù)據(jù)報(bào),數(shù)據(jù)報(bào)報(bào)頭格式如圖3(RFC791[18])所示。
圖3 IPv4數(shù)據(jù)報(bào)報(bào)頭格式
當(dāng)Type 為0x86dd 時(shí),表示該數(shù)據(jù)報(bào)為IPv6 數(shù)據(jù)報(bào),數(shù)據(jù)報(bào)報(bào)頭格式如圖4(RFC2460[19])所示。
圖4 IPv6數(shù)據(jù)報(bào)報(bào)頭格式
為了提高數(shù)據(jù)報(bào)分析的效率,只采集數(shù)據(jù)報(bào)中的源IP、目的IP、版本(IPv4 或者IPv6)、協(xié)議(TCP[20]、UDP[21]、ICMP[22-23])對(duì)于TCP 和UDP,還需要提取源端口和目的端口,對(duì)于ICMP,需要提取TYPE 和CODE作為源端口和目的端口。
(2)以太網(wǎng)數(shù)據(jù)報(bào)處理
在流量采集過(guò)程中,以數(shù)據(jù)報(bào)的關(guān)鍵信息:源IP、目的IP、源端口、目的端口、版本、協(xié)議作為流量聚合的鍵值,為了方便后面的查詢(xún)處理,以60 秒為一個(gè)聚合周期;為了平衡采集性能和內(nèi)存占用,以5 分鐘為一個(gè)周期,把采集到的流量數(shù)據(jù)保存到本地?cái)?shù)據(jù)庫(kù)中。
(1)MAC 信息采集
IP+MAC 的對(duì)應(yīng)關(guān)系需要通過(guò)定時(shí)到核心交換機(jī)或者網(wǎng)關(guān)設(shè)備里面采集,并把采集到的信息記錄到中心數(shù)據(jù)庫(kù)中。以銳捷的核心交換機(jī)N18000 作為MAC的采集設(shè)備,不同廠(chǎng)家的設(shè)備有不同的命令形式,以下所有命令皆以N18000 為準(zhǔn)[24]。
查看IPv4+MAC 的對(duì)應(yīng)關(guān)系可以使用“show arp”這條命令,結(jié)果如圖5 所示。
圖5 show arp輸出示例
可以使用如下的方式提取出有效的IPv4+MAC 對(duì)應(yīng)關(guān)系(代碼為PHP 腳本):
查看IPv6+MAC 的對(duì)應(yīng)關(guān)系可以使用“show ipv6 neighbors”這條命令,結(jié)果如圖6 所示。
圖6 show ipv6 neighbors 輸出示例
可以使用如下的代碼提取出有效的IPv6+MAC 的對(duì)應(yīng)關(guān)系(代碼為PHP 腳本):
(2)SAM 實(shí)名認(rèn)證用戶(hù)信息的采集
校園網(wǎng)使用的是銳捷的SAM+實(shí)名認(rèn)證系統(tǒng),可以通過(guò)SAM+的認(rèn)證日志,提取出某個(gè)時(shí)段的IPv4+MAC+用戶(hù)的對(duì)應(yīng)關(guān)系。分析SAM+的數(shù)據(jù)庫(kù)結(jié)構(gòu),發(fā)現(xiàn)在線(xiàn)用戶(hù)的信息保存在ONLINE_USER 數(shù)據(jù)表中,有效的數(shù)據(jù)字段是:USER_ID、USER_MAC、USER_IPV4、USER_IPV6、USER_NAME、CREATE_TIME,分別表示:用戶(hù)賬號(hào)、MAC、IPv4、IPv6、用戶(hù)姓名、認(rèn)證時(shí)間。如果是使用WebPortal 認(rèn)證方式,那么IPv6 字段是空值,只有使用客戶(hù)端認(rèn)證的時(shí)候,IPv6 才顯示為有效值。對(duì)于已經(jīng)離線(xiàn)的用戶(hù),可以通過(guò)ONLINE_DE?TAIL 這個(gè)數(shù)據(jù)表來(lái)獲取認(rèn)證記錄,但是,這個(gè)表中并沒(méi)有用戶(hù)姓名的記錄,因此,在提取信息的時(shí)候,需要關(guān)聯(lián)數(shù)據(jù)表USERINFO 來(lái)獲取用戶(hù)姓名,相關(guān)的SQL語(yǔ)句如下:
因?yàn)榈卿浫罩竞芏?,不可能?shí)時(shí)得到SAM+的數(shù)據(jù)庫(kù)中獲取信息,否則會(huì)對(duì)生產(chǎn)服務(wù)器產(chǎn)生過(guò)大的壓力,因此,本方法采用定時(shí)同步的方法(同步時(shí)間間隔5 分鐘,這樣既保證了有效的時(shí)間粒度,又對(duì)SAM+的數(shù)據(jù)庫(kù)沒(méi)有影響),把SAM+數(shù)據(jù)庫(kù)的有效信息同步到中心數(shù)據(jù)庫(kù)中,這樣在后面的流量分析模塊處理用戶(hù)信息的時(shí)候,不會(huì)影響到SAM+的正常運(yùn)轉(zhuǎn)。
(1)流量整合
通過(guò)分析流量探針的數(shù)據(jù)庫(kù)里面的流量記錄和中心數(shù)據(jù)庫(kù)里面的IP+MAC 的記錄和IP+MAC+用戶(hù)的記錄,整合成完成的流量日志,保存到中心數(shù)據(jù)庫(kù)中,以供流量展示模塊進(jìn)行展示。
具體方法是通過(guò)一個(gè)后臺(tái)腳本,定時(shí)把流量信息從流量探針數(shù)據(jù)庫(kù)同步到中心數(shù)據(jù)庫(kù),為了平衡性能和時(shí)間,腳本每5 分鐘同步一次,在同步的時(shí)候,首先到流量探針數(shù)據(jù)庫(kù)獲取最新的流量信息,這個(gè)流量信息具有如下關(guān)鍵字段:源IP、目的IP、源端口、目的端口、版本、協(xié)議、開(kāi)始時(shí)間、結(jié)束時(shí)間等,通過(guò)用戶(hù)設(shè)置的內(nèi)網(wǎng)IP 范圍,修正流量信息的入流量和出流量,然后再到中心數(shù)據(jù)庫(kù)中查找對(duì)應(yīng)的時(shí)間段該IP 所對(duì)應(yīng)的用戶(hù)信息,如果沒(méi)有有效的實(shí)名認(rèn)證用戶(hù),就用MAC 作為流量的用戶(hù)信息。然后把整合后的具有完整信息的流量記錄保存到中心數(shù)據(jù)庫(kù)的流量表中。
(2)流量聚合
為了方便流量展示模塊的展示效率,還需要對(duì)歷史流量進(jìn)行聚合。為了展示的方便,在中心數(shù)據(jù)庫(kù)中生成如下數(shù)據(jù)表:T_FLOW_M5、T_FLOW_TOTAL_M5、
T_FLOW_H1、 T_FLOW_TOTAL_H1、 T_FLOW_D1、T_FLOW_TOTAL_D1 分別保存5 分鐘的流量聚合、1小時(shí)的流量聚合、1 天的流量聚合。
以5 分鐘的流量聚合為例,可以使用如下的SQL語(yǔ)句來(lái)實(shí)現(xiàn)(數(shù)據(jù)庫(kù)使用MySQL),代碼中的'2020-08-12 23:55:00'表示聚合時(shí)刻,'2020-08-12 23:50:00'表示最后一次聚合時(shí)刻,'2020-08-12 23:45:00'表示5 分鐘總流量的最后聚合時(shí)刻:
通過(guò)查詢(xún)中心數(shù)據(jù)庫(kù)的流量記錄,以直觀(guān)而友好的圖表展示用戶(hù)的流量記錄。
在銳捷SAM+DHCP 環(huán)境下,先通過(guò)核心交換機(jī)獲取某個(gè)時(shí)段的IP 與MAC 的對(duì)應(yīng)關(guān)系,再通過(guò)銳捷SAM+的用戶(hù)上網(wǎng)記錄和在線(xiàn)記錄獲取某個(gè)時(shí)段IPv4與實(shí)名用戶(hù)的對(duì)應(yīng)關(guān)系,然后結(jié)合流量監(jiān)測(cè)設(shè)備獲取的流量信息,把IP(IPv4+IPv6)的流量信息與實(shí)名用戶(hù)對(duì)應(yīng),是能夠準(zhǔn)確獲取實(shí)名用戶(hù)的實(shí)時(shí)流量的。
圖7 24 小時(shí)所有用戶(hù)總流量
圖8 24 小時(shí)用戶(hù)總流量TOP10
圖9 某個(gè)用戶(hù)24 小時(shí)總流量
圖10 某個(gè)用戶(hù)24 小時(shí)目的IP 流量TOP10