訪問控制列表(ACL)redis
ACL能夠工做在網絡的二層(鏈路層)或是三層(網絡層),以工做在三層的ACL爲例,基本原理以下:想在某個路由器上 用ACL控制(好比說是切 斷)對某個IP地址的訪問,那麼只要把這個IP地址經過配置加入到ACL中,而且針對這個IP地址規定一個控制動做,好比說最簡單的丟棄。當有報文通過這 個路由器的時候,在轉發報文以前首先對ACL進行匹配,若這個報文的目的IP地址存在於ACL中,那麼根據以前ACL中針對該IP地址定義的控制動做進行 操做,好比丟棄掉這個報文。這樣經過ACL就能夠切斷對於這個IP的訪問。ACL一樣也能夠針對報文的源地址進行控制。若是ACL工做在二層的話,那麼 ACL控制的對象就從三層的IP地址變成二層的MAC地 址。從ACL的工做原理能夠看出來,ACL是在正常報文轉發的流程中插入了一個匹配ACL的操做, 這確定會影響到報文轉發的效率,若是須要控制的IP地址比較多,則ACL列表會更長,匹配ACL的時間也更長,那麼報文的轉發效率會更低,這對於一些骨幹 路由器來說是不可忍受的。算法
路由協議與路由重分發服務器
而GFW的網絡管控方法是利用了OSPF等路由協議的路由重分發(redistribution)功能,能夠說是「歪用」了這個原本是正常的功能。網絡
動態路由協議spa
說路由重分發以前先簡單介紹下動態路由協議。正常狀況下路由器上各類路由協議如OSPF、IS-IS、BGP等,各自計算並維護本身的路由表,全部 的協議生成的路由條目最終彙總到一個路由管理模塊。對於某一個目的IP地址,各類路由協議均可以計算出一條路由。可是具體報文轉發的時候使用哪一個協議計算 出來的路由,則由路由管理模塊根據必定的算法和原則進行選擇,最終選擇出來一條路由,做爲實際使用的路由條目。server
靜態路由對象
相對於由動態路由協議計算出來的動態路由條目,還有一種路由不是由路由協議計算出來的,而是由管理員手工配置下去的,這就是所謂的靜態路由。這種路由條目優先級最高,存在靜態路由的狀況下路由管理模塊會優先選擇靜態路由,而不是路由協議計算出來的動態路由。路由
路由重分發get
剛纔說到正常狀況下各個路由協議是隻維護本身的路由。可是在某些狀況下好比有兩個AS(自治系統),AS內使用的都是OSPF協議,而AS之間 的 OSPF不能互通,那麼兩個AS之間的路由也就沒法互通。爲了讓兩個AS之間互通,那麼要在兩個AS之間運行一個域間路由協議BGP,經過配置,使得兩個 AS內由OSPF計算出來的路由,能經過BGP在二者之間重分發。BGP會把兩個AS內部的路由互相通告給對方AS,兩個AS就實現了路由互通。這種狀況 就是經過BGP協議重分發OSPF協議的路由條目。io
另一種狀況,管理員在某個路由器上配置了一條靜態路由,可是這條靜態路由只能在這臺路由器上起做用。若是也想讓它在其餘的路由器上起做用,最 笨的 辦法是在每一個路由器上都手動配置一條靜態路由,這很麻煩。更好的方式是讓OSPF或是IS-IS等動態路由協議來重分發這條靜態路由,這樣經過動態路由協 議就把這條靜態路由重分發到了其餘路由器上,省去了逐個路由器手工配置的麻煩。
GFW路由擴散技術的工做原理
前面說了是「歪用」,正常的狀況下靜態路由是由管理員根據網絡拓撲或是基於其餘目的而給出的一條路由,這條路由最起碼要是正確的,能夠引導路由 器把報文轉發到正確的目的地。而GFW的路由擴散技術中使用的靜態路由實際上是一條錯誤的路由,並且是有意配置錯誤的。其目的就是爲了把原本是發往某個IP 地址的報文通通引導到一個「黑洞服務器」上,而不是把它們轉發到正確目的地。這個黑洞服務器上能夠什麼也不作,這樣報文就被無聲無息地丟掉了。更多地,能夠在服務器上對這些報文進行分析和統計,獲取更多的信息,甚至能夠作一個虛假的迴應。
評價
有了這種新的方法,之前配置在ACL裏的每條IP地址就能夠轉換成一條故意配置錯誤的靜態路由信息。這條靜態路由信息會把相應的IP報文引導到 黑洞 服務器上,經過動態路由協議的路由重分發功能,這些錯誤的路由信息能夠發佈到整個網絡。這樣對於路由器來說如今只是在根據這條路由條目作一個常規報文轉發 動做,無需再進行ACL匹配,與之前的老方法相比,大大提升了報文的轉發效率。而路由器的這個常規轉發動做,倒是把報文轉發到了黑洞路由器上,這樣既提升 了效率,又達到了控制報文之目的,手段更爲高明。
這種技術在正常的網絡運營當中是不會採用的,錯誤的路由信息會擾亂網絡。正常的網絡運營和管控體系的需求差異很大,管控體系須要屏蔽的IP地址 會越 來越多。正常的網絡運營中的ACL條目通常是固定的,變更不大、數量少,不會對轉發形成太大的影響。而這種技術直接頻繁修改骨幹路由表,一旦出現問題,將 會形成骨幹網絡故障。
因此說GFW是歪用了路由擴散技術,正常狀況下沒有那個運營商會把一條錯誤的路由信息處處擴散,這徹底是歪腦筋。或者相對於正常的網絡運營來 說,GFW對路由擴散技術的應用是一種小聰明的作法。正常的路由協議功能被濫用至此,並且很是之實用與高效,?朝在這方面真是人才輩出。
測量
GFW動態路由系統歸納起來就是:人工配置(c)樣本路由器(sr)的靜態路由(r),向各ISP的出入口路由器(or)擴散此路由(r),將特定網絡流量轉到黑洞服務器(fs)進行記錄。所以能夠進行測量的項目有:
(r)被封鎖的IP列表:能夠經過協做報告機制收集用戶報告,也可經過掃描着名站點得到;(傳言:GFW動態路由系統的容量是幾十萬條規則)
(or)受到GFW影響的ISP出入口路由器:經過在廣域多ISP內的節點協做traceroute能夠測得;
(or)-(c)從關鍵詞生效到動態路由生效的延遲:經過創建蜜罐並提交給GFW而後觀察其響應;
(fs)黑洞服務器的健壯性:用僞源噪音流量對黑洞服務器進行填充,觀測其響應。