郭建忠,侯仁平,徐全富,韓紅哲
(1. 天津科技大學信息化建設與管理辦公室,天津 300457;2. 天津科技大學計算機科學與信息工程學院,天津 300222;3.天津科技大學理學院,天津 300457)
我國的網絡接入單位在使用過程中存在聯通、電信、教育科研網等各大互聯網服務提供商(internet service provider,ISP)網絡互聯互通瓶頸問題.部分研究方案[1–2]解決了互聯互通,但其或為參考模型或局限于 Linux系統;文獻[3]利用網絡設備進行部署,但是其策略路由沒有考慮鏈路備份.而且,上述文獻都沒把單位內部服務器通過智能DNS進行多出口發布.文獻[4]雖然實現了多出口網絡,并且做了服務器多出口發布,但是也沒有考慮鏈路備份和負載分擔.
針對以上問題,本文對多ISP接入進行研究,將出口設備與智能DNS相結合,以期較好地解決各大ISP網絡互聯互通瓶頸,提高內外網用戶訪問網絡資源的速度,避免沒有線路冗余路由備份發生的單點故障.
在多ISP網絡出口接入的研究中,需要解決4個問題:(1)接入單位如何實現接入多 ISP網絡;(2)接入單位接入多 ISP網絡后如何提高內網用戶外網網絡資源訪問速度和使用效率;(3)接入單位接入多ISP網絡后如何避免單點故障;(4)如何利用各 ISP所分IP地址做內網服務器智能DNS多出口發布.網絡拓撲示意圖見圖1.

圖1 網絡拓撲示意圖Fig.1 Figure of network topology
解決問題 1可以采用在相應網絡出口設備配置地址轉換(NAT)[5]的方法.地址轉換的機制就是將園區網內網主機的IP 地址和端口轉換為ISP分配的公有IP 地址和端口,即<內網IP地址+端口>與<公有地址+端口>之間的轉換.
解決問題 2首選是申請自治域(AS)號碼后使用邊界網關動態路由協議,但是目前大部分接入單位無法申請到自治域(AS)號碼,所以路由協議不得不選擇靜態路由協議.利用各ISP IP地址聚合結果,設置靜態路由指定到哪個ISP的數據就走對應的鏈路,其余未知IP地址利用等值的缺省路由指向各運營商出口.這樣就避免了 ISP互聯互通瓶頸,實現了園區網出口流量的負載分擔,提高了園區網用戶訪問外網和外網用戶訪問園區網內網服務器的訪問速度.
解決問題3的方法是將每條靜態路由、缺省路由與對應運營商自動偵測組進行綁定.自動偵測[6](auto detect)是一種利用 ICMP[7]Request/Reply 報文,定期檢測網絡連通狀況的功能;自動偵測的對象是偵測組中目的 IP 地址集合,偵測結果反映了當前網絡的連通狀態,即目的主機是否可達,從而保證設備能夠及時發現網絡中存在的問題,并產生相應動作.用戶可以將某條靜態路由和某個偵測組進行綁定,利用自動偵測的返回結果來控制靜態路由的有效性:當偵測組可達時,靜態路由生效;當偵測組不可達時,靜態路由無效.如果某一個 ISP的鏈路出現故障,綁定了自動偵測組的靜態路由和缺省路由自動切換到另一個 ISP的鏈路,實現了鏈路備份.這樣可以降低園區網接入互聯網單點故障的風險,從而提高了園區網運行的健壯性.
解決問題 4時采用的方法是將園區網中 DNS[8]服務器配置成智能 DNS,針對不同 ISP的外網用戶返回園區網內網各服務器不同 ISP的 IP地址,園區網出口設備作服務器內網 IP地址、端口與對應的ISP IP地址、端口的NAT靜態轉換.外網用戶在訪問園區網服務器時數據包通過對應ISP的線路,這樣就避免了外網用戶在訪問園區網內網服務器時 ISP之間互聯互通瓶頸,并且實現了多出口負載分擔.DNS服務軟件BIND 9[9]以上版本的視圖[10](View)功能可以實現對不同 ISP用戶返回相應 ISP所分服務器的IP地址,視圖功能允許域名服務器根據查詢者 DNS服務器源地址而有區別地應答 DNS查詢,每個視圖定義了一個在用戶子集中可見的 DNS名稱空間,通過在多個視圖中定義同一個域,不同的域數據按照視圖語句的順序可以傳遞給不同的用戶.
2.1.1 內網用戶IP地址NAT配置
利用各 ISP所分 IP地址作為地址池,為園區網內網用戶IP地址做NAT轉換,配置過程如下:
(1)配置NAT地址池[6]:
nat address-group 2 2.2.2.5 2.2.2.30
(2)配置園區網內網允許NAT轉換IP地址范圍的訪問控制列表:
acl number 3,000 rule 0 permit ip source 1.1.0.0 0.0.15.255 rule 1 deny ip
(3)在園區網出口設備連接相應ISP接口下配置NAT轉換:
nat outbound 3,000 address-group 2
2.1.2 服務器IP地址NAT配置
利用各 ISP所分 IP地址作為轉換地址,為園區網內網服務器IP地址作NAT轉換,配置過程如下:
nat server protocol tcp global 2.2.2.4 inside 1.1.2.2 www
其他 ISP NAT配置與上述配置過程一樣,只需將ISP所分IP地址、服務器IP地址做對應替換即可.
2.2.1 靜態路由配置
(1)配置對 ISP鏈路進行自動偵測的自動偵測組[6]1:
detect-group 1
detect-list 1 ip address 1.1.1.1
以上地址 1.1.1.1為 ISP的網關地址,根據實際組網情況可以修改成 ISP網絡中某個 ICMP報文可達的IP地址,以偵測網絡路徑更遠的ISP網絡設備,從而避免ISP內部網絡故障.同樣可以配置其他ISP自動偵測組 detect-group 2 和 detect-group 3.
(2)配置靜態路由[6]與自動偵測組關聯,使訪問ISP1的流量優先通過ISP1的出口鏈路,其他ISP出口鏈路作為備份.在具體配置過程中可以用各ISP實際網關地址替換地址 1.1.1.1、2.2.2.1和 3.3.3.1,配置示例:
ip route-static 58.192.0.0 255.240.0.0 1.1.1.1 preference 60 detect-group 1
ip route-static 58.192.0.0 255.240.0.0 2.2.2.1 preference 90 detect-group 2
ip route-static 58.192.0.0 255.240.0.0 3.3.3.1 preference 120 detect-group 3
2.2.2 缺省路由配置
配置三條等值缺省路由,在互為備份的基礎上實現負載分擔:
ip route-static 0.0.0.0 0.0.0.0 1.1.1.1 preference 200 detect-group 1
ip route-static 0.0.0.0 0.0.0.0 2.2.2.1 preference 200 detect-group 2
ip route-static 0.0.0.0 0.0.0.0 3.3.3.1 preference 200 detect-group 3
2.2.3 策略路由配置
如果園區網內網服務器或者用戶IP地址需要通過指定ISP出口進行數據傳輸,可以利用園區網網絡出口設備設置相應策略路由[6]實現.
(1)配置園區網內網允許通過某 ISP出口進行數據傳輸的內網IP地址范圍訪問控制列表[6]:
acl number 3002
rule 0 permit ip source 1.1.2.1 0
……
rule 12 permit ip source 1.1.12.12 0.0.0.7(2)配置策略路由 FaBu,實現園區網內網允許通過某ISP出口進行數據傳輸:
route-policy FaBu permit node 0
if-match acl 3002
apply ip-address next-hop 1.1.1.1
(3)在網絡出口設備中與核心交換機對應的接口上起用策略路由FaBu:
ip policy route-policy FaBu
2.3.1 智能DNS服務器視圖配置
通過在DNS服務軟件BIND 9配置多個視圖,實現智能 DNS功能,可以實現對不同 ISP用戶返回相應 ISP所分服務器的 IP地址.BIND配置文件named.conf[11]中關于視圖功能的配置如下:
view "internal" {
match-clients { 1.1.0.0/20;11.11.0.0/19;};//此處為內網IP地址范圍
zone "test.com" {
type master;
file "zone.test.internal";};
zone "2.1.1.in-addr.arpa" {
type master;
file "zone.test.internal.rev";};
};
其他 ISP對應的視圖也按照上述格式配置,在match-clients中將ISP對應的所有IP地址聚合結果寫入即可.在最后一個視圖中,設置 match-clients 中的 IP地址范圍為 any,匹配所有未知 IP地址,配置域名對應的正向、反向解析.
2.3.2 智能DNS服務器域名正向解析配置
域名正向解析配置文件 zone.test.internal中的www服務器配置:
www IN A 1.1.2.2
2.3.3 智能DNS服務器域名反向解析配置
反向解析配置文件 zone.test.internal.rev中的www服務器配置:
2 IN PTR www.test.com.
域名對應的其他 ISP正向和反向解析配置與文件zone.test.internal和zone.test.internal.rev類似.
外網用戶測試服務器結果分為兩種情況:服務器只從一個ISP發布;服務器做多ISP發布.聯通用戶ping命令測試結果見表1.

表1 測試結果Tab.1 Test results
由表 1數據分析可知,服務器做多出口發布后,數據包丟包率減小,平均延時減小,路由跳數減少,服務器提供網絡服務質量明顯改善.園區網內網用戶訪問服務器過程和外網用戶訪問服務器的過程一樣,網絡服務質量和健壯性同樣明顯改善,方案實施后得到了內網外網用戶良好評價.
在多 ISP網絡接入的研究中,利用地址轉換(NAT)、自動偵測、靜態路由、缺省路由、智能 DNS等技術實現了單位用戶接入多ISP網絡,提高了內網用戶外網資源的訪問速度和使用效率,避免了單一ISP出口容易出現單點故障,利用各ISP所分IP地址做內網服務器發布,有效地提高了外網用戶訪問內網服務器的速度和效率.
在實踐過程中,各出口 NAT設置應在物理或者邏輯上的同一個設備上部署,以免外網用戶訪問內網服務器時數據包路由走向不一致,無法建立 TCP連接而不能訪問服務器.應將電子郵件服務器所使用的各ISP IP地址在上級IP地址管理機構做域名反向解析,避免由于反垃圾郵件策略限制而造成用戶電子郵件收發不正常.適當將 NAT地址池加大,可以提高 NAT轉換性能,為園區網用戶提供高效的網絡接入服務.為了優化網絡接入,應將 DNS服務器利用各 ISP分配的 IP地址在上級域名注冊機構進行注冊,這樣互聯網 DNS服務器在解析內網服務器域名時可以通過各 ISP的網絡和 DNS服務器進行通信,可以解決某 ISP網絡接入出現故障而無法解析接入單位域名的問題.
[1] 王彬,何文娟. 多出口多尋址模式的網絡設計[J]. 計算機工程,2007,33(21):259–261.
[2] 梁可結,魏文紅,王高才. 一種有效的網絡多出口流量調度方案[J]. 計算機工程,2010,36(5):117–121.
[3] 王春麗,楊金艷. 運用策略路由解決網絡多出口問題[J]. 鐵道通信信號,2010,46(5):70–72.
[4] 蔡昭權. 策略路由和動態 DNS 在校園網中的應用[J].計算機工程與設計,2005,26(5):1396–1398.
[5] wikipedia. Network address translation[EB/OL]. 2012-03-02. http://en. wikipedia. org/wiki/Network_ address_translation.
[6] 杭州華三通信技術有限公司.Comware V3操作手冊[EB/OL]. 2007-12-18. http://www.h3c.com.cn/Service/Document_Center/Routers/Catalog/AR_46/AR_46/Confiure/Operation_Manual/AR_46_OM%28V3.11%29/.
[7] wikipedia. Internet Control Message Protocol[EB/OL].2012-03-18. http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol.
[8] wikipedia. Domain Name System[EB/OL]. 2012-03-20. http://en.wikipedia.org/wiki/Domain_Name_System.
[9] Internet Systems Consortium. BIND[EB/OL]. 2012-02-29. http://www.isc.org/software/bind.
[10] ChinaUnix. Bind9 View 底下的 master/slave 設定方案[EB/OL]. 2008-09-27. http://www.chinaunix.net/jh/16/308556. html.
[11] Internet Systems Consortium. BIND 9. 8. 1 Administrator Reference Manual[EB/OL]. 2011-10-19. https://deepthought.isc.org/article/AA-00499/116/BIND-9.8.1-Administrator-Reference-Manual. html.