官术网_书友最值得收藏!

雙鏈路網(wǎng)站智能分流

安信證券股份有限公司 武孟軍

雙鏈路接入出口路由問題

由于中國電信、中國網(wǎng)通兩家國內(nèi)大ISP運營商南北而治,從而引發(fā)了互聯(lián)網(wǎng)特有的“互聯(lián)互通”問題:電信互聯(lián)網(wǎng)用戶如果訪問的服務(wù)器位于網(wǎng)通的網(wǎng)站,速度極慢,反之亦然。基于此,一些大的網(wǎng)站,通常在電信和網(wǎng)通分別放置服務(wù)器,達到提高訪問速度的目的。對于一些大型企業(yè),全國各地遍布分支機構(gòu),當(dāng)通過互聯(lián)網(wǎng)訪問總部時,例如使用基于互聯(lián)網(wǎng)的VPN連接總部,或通過Web方式訪問企業(yè)內(nèi)部OA服務(wù)器等,就會遇到同樣的問題。

為此,大多數(shù)企業(yè)采用“雙鏈路+單服務(wù)器”的方式來解決這一問題,即分別申請網(wǎng)通、電信兩條互聯(lián)網(wǎng)接入專線,內(nèi)網(wǎng)中放置一臺OA服務(wù)器,通過智能DNS解析(或直接使用不同公網(wǎng)IP),實現(xiàn)網(wǎng)通用戶從網(wǎng)通專線訪問,電信用戶從電信專線訪問。圖1是一種典型的網(wǎng)絡(luò)結(jié)構(gòu)。

圖1 雙鏈路接入結(jié)構(gòu)

這種解決方案,通過智能DNS解析(或直接使用不同公網(wǎng)IP)來保證網(wǎng)通用戶從網(wǎng)通專線訪問,電信用戶從電信專線訪問。但這只解決了一個方向——進入方向的數(shù)據(jù)路徑問題。難點在于,要保證從OA服務(wù)器回去的數(shù)據(jù)包,能夠選擇正確的路徑。

我們最常見的做法是:

收集網(wǎng)通(或電信)使用的互聯(lián)網(wǎng)IP地址段,將可以聚合的分散網(wǎng)段聚合。

在圖1中的路由器逐條配置靜態(tài)路由。

這種方式存在的缺點是:

(1)收集的網(wǎng)段不完整,有遺漏;

(2)路由器上需要增加大量的靜態(tài)路由;

(3)運營商有新增加的網(wǎng)段時,需要實時調(diào)整配置。

因此,這不是一個理想的解決方案。一些商業(yè)公司抓住這個商機,提供一種專用的硬件設(shè)備來解決這個問題,但價格不菲。

這里,我們假定圖1中的路由器為Cisco路由器,通過使用策略路由或NAT技術(shù),解決從OA返回外網(wǎng)數(shù)據(jù)的路徑選擇問題。

NAT和策略路由

NAT即地址翻譯,一開始是為了解決IP地址短缺而提出來的,如今已經(jīng)得到了廣泛的應(yīng)用。簡單地說,NAT是針對某些符合條件的IP數(shù)據(jù)包,將目的或源IP地址替換為指定的IP地址。NAT是雙向的,即來、去兩個方向,某個方向發(fā)生了NAT動作,另一個方向回來的數(shù)據(jù)包會做逆向的NAT。例如多臺主機共享一條ADSL訪問互聯(lián)網(wǎng)時,出去的數(shù)據(jù)包,內(nèi)網(wǎng)地址(源地址)被翻譯為一個公網(wǎng)IP;返回的數(shù)據(jù)包,再替換回原來的內(nèi)網(wǎng)地址。

使用NAT需要定義兩個接口:Inside和Outside。雖然不是必須,但通常內(nèi)網(wǎng)口被定義為Inside,外網(wǎng)口被定義成Outside。

一定要弄清楚的是NAT操作和路由查找的順序,對于Cisco路由器來說,當(dāng)數(shù)據(jù)包從Inside進入時,首先查找路由表選路,然后根據(jù)選路的結(jié)果,決定是否需要NAT。當(dāng)數(shù)據(jù)包從Outside進入時,則先做NAT操作,再根據(jù)替換的結(jié)果查找路由表,進行選路操作。

策略路由本質(zhì)上是一種靜態(tài)路由技術(shù),不同的是,普通的靜態(tài)路由是根據(jù)目的地址來確定數(shù)據(jù)包下一跳地址的,而使用策略路由,可以根據(jù)源地址(或其他特征)來確定數(shù)據(jù)包下一跳的地址。

策略路由功能強大,利用它可以實現(xiàn)許多特殊的功能,有興趣的讀者可以自己找資料了解一下。

為了敘述方便,下面,我們假定圖1中的網(wǎng)絡(luò)環(huán)境如表1所示。

表1 網(wǎng)絡(luò)環(huán)境

一般情況下使用單服務(wù)器模式,為了安全起見,電信接口公網(wǎng)IP地址121.1.1.1和網(wǎng)通接口公網(wǎng)IP地址58.1.1.1,均被翻譯為OA服務(wù)器內(nèi)網(wǎng)地址192.168.1.10。實現(xiàn)公網(wǎng)、私網(wǎng)地址映射,路由器做如下配置:

      int e0
      ip nat inside
      ...
      int e1
      ip nat outside
      ...
      int e2
      ip nat outside
      ...
      ip nat static outside destnation 121.1.1.1192.168.1.10
      ip nat static outside destnation 58.1.1.1192.168.1.10

策略路由

圖1中,路由器按常規(guī)靜態(tài)路由模式,通常是配置一條默認路由指向網(wǎng)通或電信出口,然后再增加另一個運營的明細路由。使用策略路由,可以根據(jù)數(shù)據(jù)包源地址決定下一跳的地址,即網(wǎng)通或電信的出口。

但是,由于只有一臺服務(wù)器,返回的數(shù)據(jù)包源地址是相同的,因此,要先做處理,使得服務(wù)器返回給從網(wǎng)通或電信不同入口進來的數(shù)據(jù)包,源IP地址不同。

首先在OA服務(wù)器網(wǎng)卡上多綁定一個IP地址,比如192.168.1.11;然后在路由器上調(diào)整NAT配置,使得新增加的IP地址給網(wǎng)通用戶使用。

ip nat static outside destnation 58.1.1.1192.168.1.11

這樣,從網(wǎng)通和電信不同接口進來的數(shù)據(jù)包,訪問的OA服務(wù)器IP地址不同,但仍然是同一臺服務(wù)器。返回的數(shù)據(jù)包源地址也不相同。再使用策略路由,就可以很容易地將返回的數(shù)據(jù)流分開了。

假定已經(jīng)配置了一條默認路由指向電信出口,則需要配置策略路由,使得從e0口到達的源地址為192.168.1.11的數(shù)據(jù)包,轉(zhuǎn)發(fā)到網(wǎng)通出口。配置步驟如下:

1.建立Access List

      access-list 11 permit 192.168.1.11

本條訪問控制列表匹配所有內(nèi)網(wǎng)服務(wù)器返回的應(yīng)答從網(wǎng)通接口進入請求包的數(shù)據(jù)包。

2.配置route-map

      route-map CNC permit 10
      match ip address 11
      set ip next-hop 58.1.1.14

匹配控制列表110的數(shù)據(jù)包,下一跳的地址為網(wǎng)通網(wǎng)關(guān)地址。

3.應(yīng)用

      Intface e0
      ip policy route-map CNC

通過NAT聚合網(wǎng)段

策略路由實現(xiàn)的合理分流,是通過特殊的配置,使得返回給不同入口的數(shù)據(jù)包使用不同的源地址,再根據(jù)源地址選路。

前面已經(jīng)提到,增加的明細路由由于太分散、量大且動態(tài)變化而不容易處理。每個遇到此類問題的人可能都在想,如果運營商使用的網(wǎng)段有規(guī)律,所有網(wǎng)段可以聚合成幾個甚至一個網(wǎng)段,這樣問題就簡單多了。好了,現(xiàn)在我們就把這些分散的網(wǎng)段聚合成一個網(wǎng)段,當(dāng)然,不是通過普通的路由聚合技術(shù),而是NAT。

使用這種方式的前提是圖1中的網(wǎng)通鏈路中串接一臺實現(xiàn)NAT功能的設(shè)備。這里假定一臺防火墻+路由器的模式,如圖2 所示。當(dāng)然,圖中的防火墻也可以是一臺路由器。

圖2 調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)

實現(xiàn)原理是,通過網(wǎng)通、電信入口進入的數(shù)據(jù)包都使用靜態(tài)NAT將各自的公網(wǎng)地址(目的地址)轉(zhuǎn)換為私網(wǎng)地址。同時,從網(wǎng)通(或電信)入口進入的數(shù)據(jù)包,使用動態(tài)NAT做源地址轉(zhuǎn)換。所有的源地址,轉(zhuǎn)換為某一私網(wǎng)網(wǎng)段地址,比如10.1.0.0。

通過這種方式,網(wǎng)通所有分散網(wǎng)段都將被翻譯為一個特定的網(wǎng)段。這樣,只需在防火墻上增加一條靜態(tài)路由即可。

NAT路由器上的配置為:

      int e0
      ip nat inside
      ...
      int e1
      ip nat outside
      ...
      ip nat static outside destnation 58.1.1.1192.168.1.10

上面的配置實現(xiàn)了把從網(wǎng)通訪問的用戶的目的地址翻譯為內(nèi)網(wǎng)的服務(wù)器地址。注意,路由器上一定要有到達地址192.168.1.10的路由。

在實現(xiàn)目的地址翻譯的同時,將所有源地址翻譯為某一私網(wǎng)網(wǎng)段,網(wǎng)段IP容量可以根據(jù)實際情況調(diào)整,配置示例中翻譯為10.1.0.0。

1.建立Access List

      access-list 11 permit any

本條訪問控制列表匹配所有從網(wǎng)通接口進入數(shù)據(jù)包的源地址,即所有數(shù)據(jù)包源地址均做轉(zhuǎn)換。

2.定義NAT Pool

      ip nat pool CNC 10.1.0.1 10.1.254.254 netmask 255.255.0.0

轉(zhuǎn)換源地址使用的地址池。

3.配置NAT

      ip nat outside source list 11 pool CNC

這樣所有從網(wǎng)通進入內(nèi)網(wǎng)的數(shù)據(jù)包,源地址均被轉(zhuǎn)換在10.1.0.1~10.1.254.254的范圍內(nèi)。下面的工作,只需要在防火墻上增加一條網(wǎng)段10.1.0.0的靜態(tài)路由就可以了。

主站蜘蛛池模板: 清镇市| 高陵县| 万载县| 牙克石市| 沂水县| 永昌县| 报价| 安吉县| 安宁市| 疏勒县| 乌兰浩特市| 卓尼县| 峡江县| 罗江县| 尼木县| 固原市| 康马县| 勐海县| 大邑县| 定陶县| 邹城市| 雅安市| 永川市| 山东省| 延川县| 肥城市| 商城县| 渭源县| 巩留县| 松溪县| 贡山| 泾川县| 梨树县| 会同县| 左权县| 湘乡市| 彰化县| 六安市| 乌鲁木齐县| 全椒县| 金塔县|