揭開Cisco NBAR 的神秘面紗:
NBAR (Network-Based Application Recognition) 的意思是網(wǎng)絡(luò)應(yīng)用識(shí)別。 NBAR是一種動(dòng)態(tài)能在四層到七層發(fā)現(xiàn)協(xié)議的技術(shù)。它不同于ACL,僅僅依靠端口號(hào)進(jìn)行對(duì)應(yīng)用服務(wù)的判斷,更加精準(zhǔn)的是可以通過(guò)數(shù)據(jù)包本身的描述進(jìn)行識(shí)別判斷,該數(shù)據(jù)屬于哪一種服務(wù),可以對(duì)使用動(dòng)態(tài)分配TCP/UDP端口號(hào)(如P2P下載軟件)的應(yīng)用程序和HTTP流量等進(jìn)行分類。
實(shí)際上NBAR的應(yīng)用原理在于對(duì)網(wǎng)絡(luò)應(yīng)用層面的監(jiān)控,可以進(jìn)行代碼匹配來(lái)識(shí)別數(shù)據(jù)報(bào)的具體應(yīng)用,例如FTP、WEB、BT、電驢等等。即便所應(yīng)用的服務(wù)端口變化,NBAR也可以識(shí)別出來(lái)具體的服務(wù)。NBAR首先可以應(yīng)用于網(wǎng)絡(luò)監(jiān)控,判斷究竟在你的網(wǎng)內(nèi)哪種服務(wù)占據(jù)著最主要的流量,以便于配合QOS來(lái)做流量的修整。
既然這么好的東東,我們?cè)趺礈y(cè)試的她的能力了? 請(qǐng)看下文。
采用NBAR就能封殺BT和電驢的流量,為什么?關(guān)鍵時(shí)路由器靠什么東西,她又能發(fā)現(xiàn)當(dāng)前傳輸?shù)牧髁恐芯桶珺T的流量,這得依靠一個(gè)強(qiáng)大特征庫(kù)文件:PDLM(數(shù)據(jù)包描述語(yǔ)言模塊),這個(gè)特征庫(kù)文件,就好比是殺毒軟件的病毒庫(kù),殺毒軟件能識(shí)別某些文件屬于惡意程序,病毒了,關(guān)鍵是她的病毒庫(kù)--------
PDLM它是NBAR針對(duì)于網(wǎng)絡(luò)高層應(yīng)用的主要識(shí)別原理,從Cisco IOS 12.0之后引入了NBAR的概念,由于IOS的版本高低不同,較高的IOS已經(jīng)內(nèi)嵌支持bittorrent和eDonkey兩種協(xié)議,如果您的設(shè)備目前沒(méi)有能力發(fā)現(xiàn)BT和電驢的流量,主要是不支持這兩個(gè)協(xié)議?梢栽 CISCO的網(wǎng)站,使用CCO賬號(hào)登陸,找到各種網(wǎng)絡(luò)應(yīng)用的PDLM,每個(gè)PDLM都是針對(duì)于一種服務(wù)的,它記載了關(guān)于判別一種應(yīng)用服務(wù)的關(guān)鍵匹配代碼。
作者已經(jīng)下載完了,需要上傳PDLM模塊到路由器的flash或者nvram中
拓?fù)鋱D:
第一步:上傳之前的準(zhǔn)備工作
norvel-network#dir /all Directory of flash:/ 1 -rw- 15824768 <no date> 3600_12_3(22)(fc2).bin 33030140 bytes total (17205308 bytes free) norvel-network#show flash all Partition Size Used Free Bank-Size State Copy Mode 1 32255K 15453K 16802K 8192K Read/Write Direct System flash directory: File Length Name/status addr fcksum ccksum 1 15824768 3600_12_3(22)(fc2).bin 0x40 0x89AC 0x89AC [15824832 bytes used, 17205308 available, 33030140 total] 32768K bytes of processor board System flash (Read/Write) Chip Bank Code Size Name 1 1 01AD 2048KB AMD 29F016 2 1 01AD 2048KB AMD 29F016 3 1 01AD 2048KB AMD 29F016 4 1 01AD 2048KB AMD 29F016 1 2 01AD 2048KB AMD 29F016 2 2 01AD 2048KB AMD 29F016 3 2 01AD 2048KB AMD 29F016 4 2 01AD 2048KB AMD 29F016 1 3 01AD 2048KB AMD 29F016 2 3 01AD 2048KB AMD 29F016 3 3 01AD 2048KB AMD 29F016 4 3 01AD 2048KB AMD 29F016 1 4 01AD 2048KB AMD 29F016 2 4 01AD 2048KB AMD 29F016 3 4 01AD 2048KB AMD 29F016 4 4 01AD 2048KB AMD 29F016 norvel-network#copy tftp flash //采用TFTP協(xié)議,復(fù)制TFTP文件到路由器flash中 Address or name of remote host []? 192.168.10.10 //TFTP服務(wù)器的IP地址 Source filename []? bittorrent.pdlm //上傳支持BT協(xié)議的PDLM,該文件要求要事先放置在TFTP的根目錄下 Destination filename [bittorrent.pdlm]? //上傳后的目的文件名 Accessing tftp://192.168.10.10/bittorrent.pdlm... Erase flash: before copying? [confirm]n //一定要選擇NO,不格式化Flash,否則PDLM是上傳到Flash中了,F(xiàn)lash中的其他的文件都被格式化了 Loading bittorrent.pdlm from 192.168.10.10 (via Ethernet0/3): ! [OK - 3100 bytes] Verifying checksum... OK (0x7C83) 3100 bytes copied in 0.332 secs (9337 bytes/sec) norvel-network#show flash //查看flash確認(rèn)已經(jīng)上傳成功 System flash directory: File Length Name/status 1 15824768 3600_12_3(22)(fc2).bin 2 3100 bittorrent.pdlm [15827996 bytes used, 17202144 available, 33030140 total] 32768K bytes of processor board System flash (Read/Write) 按照上面的相同方法,如果您的設(shè)備flash空間已經(jīng)滿了,無(wú)法存放PDLM,你可以按同理 將PDLM上傳到NVRAM中,PDLM文件本身都比較小,不用擔(dān)心占用太多的空間 norvel-network#dir nvram: Directory of nvram:/ 25 -rw- 3612 <no date> startup-config 26 ---- 5 <no date> private-config 1 -rw- 0 <no date> ifIndex-table 2 ---- 12 <no date> persistent-data 30712 bytes total (24995 bytes free) norvel-network#copy tftp nvram: Address or name of remote host []? 192.168.10.10 Source filename []? eDonkey.pdlm Destination filename [eDonkey.pdlm]? Accessing tftp://192.168.10.10/eDonkey.pdlm... Loading eDonkey.pdlm from 192.168.10.10 (via Ethernet0/3): ! [OK - 3492 bytes] 3492 bytes copied in 9.784 secs (357 bytes/sec) 也可以上傳到NVRAM中 norvel-network#dir nvram: Directory of nvram:/ 25 -rw- 3612 <no date> startup-config 26 ---- 5 <no date> private-config 1 -rw- 0 <no date> ifIndex-table 2 ---- 12 <no date> persistent-data 3 -rw- 3492 <no date> eDonkey.pdlm 30712 bytes total (20899 bytes free) 上傳完畢切記需要保存,保存到閃存中,防止無(wú)意間重啟丟棄PDLM norvel-network#write memory |
第二步:通過(guò)IP NBAR命令加載PDLM模塊到內(nèi)存中,并使用Class-map來(lái)對(duì)流量進(jìn)行分類標(biāo)記,使用Policy-map對(duì)分類的流量給定丟棄的策略,并最終應(yīng)用在連接Internet的接口下
//采用ip nbar 命令從flash中加載BT和電驢的模塊,如果IOS已經(jīng)支持這兩種協(xié)議,則無(wú)需上傳PDLM,也無(wú)需使用此命令 norvel-network(config)#ip nbar pdlm flash:bittorrent.pdlm norvel-network(config)#ip nbar pdlm flash:eDonkey.pdlm //使用Class-map對(duì)流量進(jìn)行分類,Class-map的名字為BT “match-any”匹配上其中一種流量,就執(zhí)行分類 “match-all” 匹配所有流量,才分類 norvel-network(config)#class-map match-any BT //Match 對(duì)象很多,可以ACL或者協(xié)議等 norvel-network(config-cmap)#match protocol bittorrent norvel-network(config-cmap)#match protocol edonkey //流量已經(jīng)分類,使用Policy-map的目的是針對(duì)這些分類的流量給定一個(gè)什么樣的策略。 這里先定義policy-map 的名字為Deny-BT 名稱可以是任意字符 norvel-network(config)#policy-map Deny-BT //在Policy-map中關(guān)聯(lián)Class-map 的名字 norvel-network(config-pmap)#class BT //policy-map給這些滿足分類流量的策略是丟棄,你可以做做限速,可以讓下載BT,但是速度限制20Kbps norvel-network(config-pmap-c)#drop //要使用NBAR必須啟用 Cisco 快速轉(zhuǎn)發(fā) norvel-network(config)#ip cef //在接口下要調(diào)用Policy-map 的策略 norvel-network(config)#int e0/2 //開啟接口下NBAR發(fā)現(xiàn)協(xié)議的功能 norvel-network(config-if)#ip nbar protocol-discovery //把策略應(yīng)用E0/2的出方向 norvel-network(config-if)#service-policy output Deny-BT |
第三步:在路由器上檢查配置
Show class-map
Show Policy-map
Show policy-map interface e0/2
norvel-network#sh class-map Class Map match-any BT (id 2) Match protocol bittorrent Match protocol edonkey Class Map match-any class-default (id 0) Match any norvel-network#show policy-map Policy Map Deny-BT Class BT drop norvel-network#show policy-map int e0/2 Ethernet0/2 Service-policy input: Deny-BT Class-map: BT (match-any) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: protocol bittorrent 0 packets, 0 bytes 5 minute rate 0 bps Match: protocol edonkey 0 packets, 0 bytes 5 minute rate 0 bps drop Class-map: class-default (match-any) 8133 packets, 7734590 bytes 5 minute offered rate 182000 bps, drop rate 0 bps Match: any Service-policy output: Deny-BT Class-map: BT (match-any) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: protocol bittorrent 0 packets, 0 bytes 5 minute rate 0 bps Match: protocol edonkey 0 packets, 0 bytes 5 minute rate 0 bps drop Class-map: class-default (match-any) 13273 packets, 871872 bytes 5 minute offered rate 31000 bps, drop rate 0 bps Match: any |
第四步: 安裝BT和電驢測(cè)試 NBAR的效果,軟件安裝就不多說(shuō)了,下一步就可以,這些軟件的安裝包中,都捆版了很多廣告軟件,安裝時(shí)請(qǐng)謹(jǐn)慎選擇。
第五步:找到下載好的BT種子,記好了,一定要是BT種子文件,這是產(chǎn)生的下載流量才可以被PDLM所識(shí)別,如果是HTTP下載,無(wú)法觸發(fā)Bittorrent的流量
第六步:驗(yàn)證效果,如果不在E0/2下,調(diào)用Policy-map策略,開啟BT下載,可以看到該接口發(fā)現(xiàn)了很多BT的流量,BT流量非常瘋狂
norvel-network#sh ip nbar protocol-discovery int e0/2 Ethernet0/2 Input Output Protocol Packet Count Packet Count Byte Count Byte Count 5 minute bit rate (bps) 5 minute bit rate (bps) ------------------------ ------------------------ ------------------------ http 33963 24384 33559299 6041847 292000 67000 bittorrent 4326 7868 2204807 3092548 46000 5500 |
第七步:接口下調(diào)用Policy-map 策略,檢查接口Drop包的數(shù)量,5分鐘內(nèi)丟棄了10000
norvel-network#sh policy-map int e0/2 Ethernet0/2 Service-policy output: Deny-BT Class-map: BT (match-all) 1290 packets, 150864 bytes 5 minute offered rate 10000 bps, drop rate 10000 bps Match: protocol bittorrent drop Class-map: class-default (match-any) 27006 packets, 5211833 bytes 5 minute offered rate 97000 bps, drop rate 0 bps Match: any |
第八步:為了更好的看一下 丟棄的效果,我們暫時(shí)把接口下的策略取消掉,來(lái)觀察BT的下載速度是否在“猛漲”
norvel-network(config)#policy-map Deny-BT norvel-network(config-pmap)#class BT norvel-network(config-pmap-c)#no drop |
關(guān)閉丟棄的策略,BT的下載速度開始上漲了,
你可以多觀察幾分鐘,只要你的帶寬夠大,種子資源夠活躍,這“變態(tài)下載”速度會(huì)越來(lái)越快。
第九步:?jiǎn)⒂肗BAR策略,封殺BT的流量,我們觀察BT下載速度,在一分一秒的降低,幾分鐘之后的0KB/S,而且一直這樣持續(xù)。
說(shuō)明NBAR封殺BT的流量,現(xiàn)象成功了
norvel-network(config)#policy-map Deny-BT norvel-network(config-pmap)#class BT norvel-network(config-pmap-c)#drop |
而且下載速度哪里一直保持的是0KB/S
下載的流量經(jīng)過(guò)路由器是全被丟棄了。
norvel-network#sh policy-map int e0/2 Ethernet0/2 Service-policy input: Deny-BT Class-map: BT (match-all) 8448 packets, 3672204 bytes 5 minute offered rate 26000 bps, drop rate 27000 bps Match: protocol bittorrent drop |