在企業網絡的設備通信中,常面臨一些非法流量訪問的安全性及流量路徑不優等問題,故爲保證數據訪問的安全性、提高鏈路帶寬利用率,就需要對網絡中的流量行爲進行控制,如控制網絡流量可達性、調整網絡流量路徑等。而當面對更加複雜、精細的流量控制需求時,就需要靈活地使用一些工具來實現,本次博客主要介紹一些有關流量控制的常用工具及其使用場景。
1.控制網絡流量可達性。
爲保證網絡安全性,客戶常提出一些部門之間不可互訪的需求,如下圖所示:市場部不可以訪問財務部和研發部,公司總部不能訪問研發部
2.調整網絡流量路徑。
如下圖所示,根據OSPF協議計算生成的路由,市場部和財務部訪問公司總部都選擇通過一條開銷最小的路徑,即使該路徑發生擁塞也如此,而另外一條路徑的鏈路帶寬則一直處於空閒狀態,這樣就造成了帶寬浪費的問題。
解決:控制流量的可達性,有兩種方式:直接與間接
直接方式:直接針對流量進行過濾----流量工程
間接方式:對路由進行控制篩選---路由策略
解決方案一:可通過修改路由條目(即對接收和發佈的路由進行過濾)來控制流量可達性,這種方式稱爲路由策略。
解決方案二:可使用Traffic-Filter工具對數據進行過濾,這種方式稱爲流量過濾。
在解決方案一中,可以利用Filter-Policy工具對RTA向OSPF引入的路由和RTC寫入路由表的路由進行過濾:首先使用ACL或IP-Prefix List工具來匹配目標流量;然後在協議視圖下,利用Filter-Policy向目標流量發佈策略。
也可以利用Route-Policy工具,在RTA引入直連路由時對路由進行過濾:首先使用ACL或IP-Prefix List工具來匹配目標流量;然後在協議視圖下,利用Route-Policy對引入的路由條目進行控制。
路由策略的實現分爲兩個步驟:
定義規則:首先要定義將要實施路由策略的路由信息的特徵,即定義一組匹配規則,可以以路由信息中的不同屬性作爲匹配依據進行設置,如目的地址、AS號等;(警察)
應用規則:根據設置的匹配規則,再將它們應用於路由的發佈、接收和引入等過程中。(法官)
就類似生活中警察會把小偷抓起來,但是對於這個小偷是否需要坐牢,或者是判刑是由法官來決定的事情,警察只是負責把小偷抓起來。
ACL可通過匹配報文的信息實現對報文的分類。
格式如下:
acl 2001 #創建一個基本ACL#
rule 0 permit source 1.1.0.0 0.0.255.255
#在這個列表裏會允許源ip是1.1.0.0的流量通過,0.0.255.255是反子網掩碼,0代表精確匹配,1代表任意匹配,也就是說允許過去的源ip前面兩位必須是1.1,後面2位隨意,來自於1.1.x.x的流量都可以通過;permit--通過,deny--拒絕#
訪問控制列表ACL(Access Control List)是由permit或deny語句組成的一系列有順序規則的集合,它通過匹配報文的信息實現對報文的分類。
ACL的分類:
基本ACL:主要基於源地址、分片標記和時間段信息對數據包進行分類定義,編號範圍爲2000-2999。
高級ACL:可以基於源地址、目的地址、源端口號、目的端口號、協議類型、優先級、時間段等信息對數據包進行更爲細緻的分類定義,編號範圍爲3000-3999。
二層ACL:主要基於源MAC地址、目的MAC地址和報文類型等信息對數據包進行分類定義,編號範圍爲4000-4999。
用戶自定義ACL:主要根據用戶自定義的規則對數據報文做出相應的處理,編號範圍爲5000-5999。
一個ACL可以由多條“deny | permit”語句組成,每一條語句描述了一條規則。設備收到數據流量後,會逐條匹配ACL規則,看其是否匹配。如果不匹配,則繼續匹配下一條。一旦找到一條匹配的規則,就會執行規則中定義的動作,且不再繼續與後續規則進行匹配;如果找不到匹配的規則,則設備會對報文直接進行轉發。
需要注意的是,ACL中定義的這些規則可能存在重複或矛盾的地方。規則的匹配順序決定了規則的優先級,ACL通過設置規則的優先級來處理規則之間重複或矛盾的情形。
ACL可以靈活地匹配IP地址的前綴,但無法匹配掩碼長度。
IP-Prefix List能夠同時匹配IP地址前綴及掩碼長度。 IP-Prefix List不能用於IP報文的過濾,只能用於路由信息的過濾。
示例:ip ip-prefix test index 10 permit 10.0.0.0 16 greater-equal 24 less-equal 28
IP地址範圍:10.0.0.0 – 10.0.x.x 24<= 掩碼長度 <=28
ip ip-prefix Pref1 index 10 permit 1.1.1.0 24 greater-equal 24 less-equal 24 像這種,“greater-equal 24 less-equal 24”表示掩碼長度只能是24
Filter-Policy能夠對接收或發佈的路由進行過濾,可應用於ISIS、OSPF、BGP等協議。
對協議接收的路由進行過濾:
filter-policy { acl-number | ip-prefix ip-prefix-name } import
對協議發佈的路由進行過濾:
filter-policy { acl-number | ip-prefix ip-prefix-name } export
應用各協議中的Filter-Policy工具可通過引用ACL或地址前綴列表,對接收、發佈和引入的路由進行過濾。
Route-Policy是一種功能非常強大的路由策略工具,它可以靈活地與ACL、IP-Prefix List、As-Path-Filter等其它工具配合使用 (法官)
Route-Policy:
route-policy route-policy-name { permit | deny } node node 允許/拒絕通過node
if-match {acl/cost/interface/ip next-hop/ip-prefix} 如果滿足後面的這些規則(acl/cost/interface/ip next-hop/ip-prefix)
apply {cost/ip-address next-hop/tag} 就對這個路由進行應用(cost/ip-address next-hop/tag)
Route-Policy由若干個node構成,node之間是“或”的關係。且每個node下可以有若干個if-mach和apply子句,if-match之間是“與”的關係。
路由策略配置實現:如下圖所示,要求市場部不能訪問財務部和研發部,公司總部不能訪問研發部。
在這裏我採用的動態路由協議是ospf協議,所有的路由器接口都屬於骨幹區域,在AR1上通過import-route 引入了直連路由,實現了全網互通,在這裏不做展示,現根據要求需要針對市場部不能訪問財務部和研發部,公司總部不能訪問研發部來做配置。
在沒有做路由策略之前,對於AR3的ospf路由表是這樣的,如下圖所示:
AR4上的關於ospf的路由表是這樣的
二者的路由表裏都有關於去往研發部的路由。
對於市場部和公司總部都不能訪問研發部,我們可以在AR1上做配置,將研發部的192.168.11.0 的路由過濾掉,
配置如下:
通過創建ip-prefix 111,來允許路由192.168.1.0和192.168.111.0,也就是財務部和資料部的路由可以通過,相反,研發部的路由就被過濾掉了,此時的ip-prefix 既做警察又做法官,把相應的路由進行匹配,匹配之後的動作是允許(permit),之後在通過filter-policy 在ospf的協議視圖下去調用ip-prefix,當你引入直連的時候,直連進入ospf,站在外部路由的角度去考慮,
是不是從ospf出去了,export出向去做一個過濾。
配置完成之後,在AR3和AR4上查看關於ospf的路由表,如下圖所示
會發現,原來存在在ospf路由表裏的192.168.11.0這個研發部的路由,被過濾掉了,相應的對於市場部和公司總部來說就不能訪問研發部的數據了。
接下來,去滿足市場部不能訪問財務部的要求,我們可以通過ACL來做路由的過濾,ACL本身是用來過濾流量的,但是也可以用來過濾路由,但是在過濾路由的時候,缺省是拒絕其他所有的路由通過,當用ACL去過濾流量的時候,缺省是允許其他所有的流量通過,這個地方需要注意一下。
我們可以在AR1上,通過acl來過濾財務部的路由,配置如下圖所示:
同樣的,這裏的acl 既做警察又做法官,將來自財務部的192.168.1.0 的路由過濾掉,通過filter-policy 在ospf的協議視圖下應用在引入路由的方向上,同時還有一點需要注意,在acl過濾路由的時候,需要配置一條允許其他所有匹配上的路由通過,因爲缺省是拒絕,爲了防止其他的路由被篩選掉,需要配置一條允許其他所有的命令。
做完配置之後 ,可以在AR3上查看ospf的路由表
會發現,把來自財務部的路由192.168.1.0過濾掉了。
以上是通過ACL和ip-prefix既可以匹配流量,又可以執行動作來做配置的,下面我們來用另外一種方法,會使用到route-policy來執行動作,ACL和ip-prefix來匹配流量,也就是說,下面的acl和ip-prefix只是用來作爲警察的,而route-policy是用來作爲法官的。
如圖所示,是總體拓撲的概況
通過配置route-policy 在AR3上的配置如下:
先通過配置ACL把財務部的路由匹配出來,這裏只是匹配,並不執行動作,
通過route-policy來執行動作,如果滿足acl 2000的路由,執行的動作是deny(拒絕通過),在通過在ospf的協議視圖下去調用filter-policy工具執行route-policy shichang的動作(拒絕)
在AR1上的配置如下圖所示
首先通過ip-prefix去匹配來自研發部的路由192.168.4.0,這裏的ip-prefix只是作爲警察,並不是法官。還是通過route-policy來執行拒絕的動作,最後在ospf的協議視圖下在引入直連路由的時候,執行route-policy yanfa的動作即可。
以上兩種方式採用的是間接的方式,通過路由策略來實現各個部門之間的訪問需求。
下面我們來了解一下采用直接的方式,通過過濾流量來實現各個部門之間的訪問需求。
基於自定義策略實現:使用Traffic-Filter工具對數據進行過濾。
如下圖所示,是客戶的網絡於要求
採用流量過濾的方式,可以依靠高級acl來進行配置,如下圖所示:
在AR3上的配置,通過配置高級acl 來過濾掉(deny)來自192.168.1.0(市場部),去往財務部192.168.3.0 的流量,以及過濾掉來自市場部192.168.1.0,去往研發部192.168.4.0的流量。
然後在AR3的入接口上通過使用traffic-filter工具來調用acl 3000.
結果驗證
在AR3上查看關於ospf的路由表,會發現,去往財務部和研發部的路由還是正常存在的,
但是作爲市場部的pc1卻ping不同作爲財務部的pc3和作爲研發部的pc4
針對流量過濾,即使路由表裏有路由,數據流量還是被過濾掉,這是流量過濾的特點。
同樣的針對公司總部不能訪問研發部的配置,如下圖所示
在AR4上的配置
結果驗證:作爲公司總部的pc2是不能去訪問作爲研發部的192.168.4.4的。
在後期對網絡進行優化時,常出現調整網絡流量路徑的需求。
若採用解決方案一來實現以上需求,由於其只能依據數據包的目的地址做轉發策略,所以無法滿足需求;故當出現基於源地址、目的地址或基於應用層等一些複雜的控制需求時,就體現出其侷限性。
解決方案二:採用策略路由方式
配置案例如下圖所示:
在AR1上的配置,如下圖所示
先創建一個高級acl匹配上從市場部到公司總部的流量,然後通過traffic classifier 去定義一個類,這個類裏是需要和acl 3000做綁定,再通過traffic behavior 去標識動作,將下一跳改爲了10.0.12.2,之後,在traffic policy裏面將traffic classifier這個類和需要執行的動作traffic behavior做一個綁定,在入接口G0/0/0DE 入方向上執行traffic policy。
結果測試,如下圖所示,作爲市場部的pc1在訪問公司總部的192.168.3.3的路徑下一跳是10.0.12.2.
同樣的,在AR1上的配置,針對財務部去往公司總部的路徑的配置如下
結果驗證,發現作爲財務部的pc1去往公司總部的192.168.3.3的下一跳是 10.0.13.3.