揭開Cisco NBAR 的神秘面紗:
NBAR (Network-Based Application Recognition) 的意思是網(wǎng)絡應用識別。 NBAR是一種動態(tài)能在四層到七層發(fā)現(xiàn)協(xié)議的技術。它不同于ACL,僅僅依靠端口號進行對應用服務的判斷,更加精準的是可以通過數(shù)據(jù)包本身的描述進行識別判斷,該數(shù)據(jù)屬于哪一種服務,可以對使用動態(tài)分配TCP/UDP端口號(如P2P下載軟件)的應用程序和HTTP流量等進行分類。
實際上NBAR的應用原理在于對網(wǎng)絡應用層面的監(jiān)控,可以進行代碼匹配來識別數(shù)據(jù)報的具體應用,例如FTP、WEB、BT、電驢等等。即便所應用的服務端口變化,NBAR也可以識別出來具體的服務。NBAR首先可以應用于網(wǎng)絡監(jiān)控,判斷究竟在你的網(wǎng)內(nèi)哪種服務占據(jù)著最主要的流量,以便于配合QOS來做流量的修整。
既然這么好的東東,我們怎么測試的她的能力了? 請看下文。
采用NBAR就能封殺BT和電驢的流量,為什么?關鍵時路由器靠什么東西,她又能發(fā)現(xiàn)當前傳輸?shù)牧髁恐芯桶珺T的流量,這得依靠一個強大特征庫文件:PDLM(數(shù)據(jù)包描述語言模塊),這個特征庫文件,就好比是殺毒軟件的病毒庫,殺毒軟件能識別某些文件屬于惡意程序,病毒了,關鍵是她的病毒庫--------
PDLM它是NBAR針對于網(wǎng)絡高層應用的主要識別原理,從Cisco IOS 12.0之后引入了NBAR的概念,由于IOS的版本高低不同,較高的IOS已經(jīng)內(nèi)嵌支持bittorrent和eDonkey兩種協(xié)議,如果您的設備目前沒有能力發(fā)現(xiàn)BT和電驢的流量,主要是不支持這兩個協(xié)議。可以在 CISCO的網(wǎng)站,使用CCO賬號登陸,找到各種網(wǎng)絡應用的PDLM,每個PDLM都是針對于一種服務的,它記載了關于判別一種應用服務的關鍵匹配代碼。
作者已經(jīng)下載完了,需要上傳PDLM模塊到路由器的flash或者nvram中
拓撲圖:
第一步:上傳之前的準備工作
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é)議,復制TFTP文件到路由器flash中 Address or name of remote host []? 192.168.10.10 //TFTP服務器的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確認已經(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) 按照上面的相同方法,如果您的設備flash空間已經(jīng)滿了,無法存放PDLM,你可以按同理 將PDLM上傳到NVRAM中,PDLM文件本身都比較小,不用擔心占用太多的空間 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) 上傳完畢切記需要保存,保存到閃存中,防止無意間重啟丟棄PDLM norvel-network#write memory |
第二步:通過IP NBAR命令加載PDLM模塊到內(nèi)存中,并使用Class-map來對流量進行分類標記,使用Policy-map對分類的流量給定丟棄的策略,并最終應用在連接Internet的接口下
//采用ip nbar 命令從flash中加載BT和電驢的模塊,如果IOS已經(jīng)支持這兩種協(xié)議,則無需上傳PDLM,也無需使用此命令 norvel-network(config)#ip nbar pdlm flash:bittorrent.pdlm norvel-network(config)#ip nbar pdlm flash:eDonkey.pdlm //使用Class-map對流量進行分類,Class-map的名字為BT “match-any”匹配上其中一種流量,就執(zhí)行分類 “match-all” 匹配所有流量,才分類 norvel-network(config)#class-map match-any BT //Match 對象很多,可以ACL或者協(xié)議等 norvel-network(config-cmap)#match protocol bittorrent norvel-network(config-cmap)#match protocol edonkey //流量已經(jīng)分類,使用Policy-map的目的是針對這些分類的流量給定一個什么樣的策略。 這里先定義policy-map 的名字為Deny-BT 名稱可以是任意字符 norvel-network(config)#policy-map Deny-BT //在Policy-map中關聯(lián)Class-map 的名字 norvel-network(config-pmap)#class BT //policy-map給這些滿足分類流量的策略是丟棄,你可以做做限速,可以讓下載BT,但是速度限制20Kbps norvel-network(config-pmap-c)#drop //要使用NBAR必須啟用 Cisco 快速轉發(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 //把策略應用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和電驢測試 NBAR的效果,軟件安裝就不多說了,下一步就可以,這些軟件的安裝包中,都捆版了很多廣告軟件,安裝時請謹慎選擇。
第五步:找到下載好的BT種子,記好了,一定要是BT種子文件,這是產(chǎn)生的下載流量才可以被PDLM所識別,如果是HTTP下載,無法觸發(fā)Bittorrent的流量
第六步:驗證效果,如果不在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 |
第八步:為了更好的看一下 丟棄的效果,我們暫時把接口下的策略取消掉,來觀察BT的下載速度是否在“猛漲”
norvel-network(config)#policy-map Deny-BT norvel-network(config-pmap)#class BT norvel-network(config-pmap-c)#no drop |
關閉丟棄的策略,BT的下載速度開始上漲了,
你可以多觀察幾分鐘,只要你的帶寬夠大,種子資源夠活躍,這“變態(tài)下載”速度會越來越快。
第九步:啟用NBAR策略,封殺BT的流量,我們觀察BT下載速度,在一分一秒的降低,幾分鐘之后的0KB/S,而且一直這樣持續(xù)。
說明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)過路由器是全被丟棄了。
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 |