王麗娜, 劉 炎
(江蘇省氣象探測與信息處理重點實驗室,江蘇省氣象傳感網技術工程中心,南京信息工程大學電子與信息工程學院,南京 210044)
近年來,電子商務等網絡應用的飛速發展,使網絡安全問題體現得尤為突出。在這種背景下,VPN[1-3]的應用越來越廣泛。當前實現VPN的技術有多種,其中BGP/MPLS VPN以其可擴展性好、轉發效率高、靈活的地址策略等優勢而得到廣泛的部署[1-7]。
BGP/MPLS VPN中有3種路由器,即用戶邊緣(Customer Edge,CE)路由器,提供商邊界(Provider Edge,PE)路由器,提供商(Provider,P)路由器。PE 路由器和P路由器保存到達外網的全局路由表信息,而CE路由器保存VPN內網的路由信息。PE路由器上使用獨立的虛擬路由轉發實例(Virtual Routing and Forwarding Instance,VRF)來保存并交換來自CE路由器的VPN路由信息,這些路由信息不與全局路由表交互。P路由器通常只根據數據包的標簽執行快速轉發,并不參與VPN內網的路由信息交換。這樣,各VPN路由信息只存在于各自獨立的VRF下,PE路由器和P路由器的主路由表并沒有各VPN的路由信息,從而通過這樣的路由隔離來實現流量隔離,提供了VPN之間通信的安全性。
由于采用了路由隔離,VPN中的用戶不能訪問Internet。然而,VPN中的某些用戶除了需要安全的共享自身所在VPN的網絡資源,同時還需要能夠訪問Internet。因此,在典型BGP/MPLS VPN的基礎上,結合使用GRE隧道技術,把特定的需要訪問Internet的流量通過隧道從VRF中分離出來,然后依據全局路由表的路由信息發往Internet,而發往同一VPN其它站點的流量仍依據VRF中的路由信息轉發。應用各種仿真軟件模擬網絡環境已經得到廣泛的應用[8-9],本文基于GNS3虛擬了BGP/MPLS VPN網絡環境,并結合使用BGP/MPLS VPN和GRE技術同時實現了CE端的Internet訪問和對同VPN的其它站點訪問,驗證了該方案的可行性。
BGP/MPLS VPN的體系結構定義于RFC2547,主要分為數據層面和控制層面。控制層面負責與其它設備交換路由信息,并為路由條目分配標簽,生成標簽轉發信息數據庫(Label Forwarding Information Base,LFIB);根據LFIB,數據層面負責快速轉發被標記的數據包。位于服務提供商網絡邊緣的PE路由器和位于服務提供商網絡核心的P路由器以及位于客戶端邊緣的CE路由器共同組成了BGP/MPLS VPN轉發網絡[10-11]。
在BGP/MPLS VPN中,每個VPN都關聯一個或者多個特定的VRF,每個VRF都關聯了一個獨立的虛擬路由表和若干相關接口。當PE路由器收到從CE傳過來的數據包后,PE路由器查找該子接口對應的VRF路由表,根據 VRF中的信息給分組加上兩層MPLS標簽,其中底層標簽是遠端出口PE路由器通過BGP傳遞過來的給目的VPN網絡分發的VPN標簽,而外層標簽是鄰居P路由器傳遞過來的給遠端PE出口路由器分發的IGP標簽。通常,MPLS標簽是大于16的整數。當VPN分組被PE加上兩層標簽之后,通過輸出接口發送到第一個鄰居P路由器,鄰居P路由器根據外層標簽逐跳將數據包轉發到遠端出口PE路由器,并在倒數第二跳彈出外層標簽,將只有VPN標簽的分組轉發給出口PE路由器,出口PE路由器根據VPN標簽,查找MPLS轉發表中對應的輸出接口,在彈出VPN標簽后將該VPN分組發送給指定的CE路由器[12-17]。該過程如圖1所示。

圖1 MPLS VPN分組傳遞過程
這樣,BGP/MPLS VPN分組實際上是在VPN隧道中傳輸的,各VPN之間的流量是邏輯上相互隔離的。有效地保證了數據跨公網的安全性。由于VRF下的路由信息并不與PE或者P路由器全局路由表交互,所以盡管PE或者P路由器上有到達Internet的路由信息,但是并不會安裝到VRF下,更不會被分配VPN標簽,所以從CE路由器傳過來的訪問Internet的分組無法被標記,VPN內網也無法訪問Internet。
通用路由封裝(Generic Routing Encapsulating,GRE)規定了如何使用一種網絡協議封裝另一種網絡協議。GRE可分為點到點GRE(point to point GRE,P2P GRE)和多點 GRE(Multipoint GRE,MGRE),P2P GRE可以建立點到點的隧道,而mGRE則應用在需要建立點到多點或者多點到多點隧道的場合。GRE技術允許使用IP包封裝IP、IPX、Apple Talk數據包,并且支持全部的路由協議,有很大的靈活性。
GRE將收到的整個數據包重新封裝,先加上GRE包頭和包尾,然后把重新封裝好的數據包加上一個新的IP包頭,再和常規數據包一樣被路由到隧道目的地址,再由目的設備去掉GRE封裝,取出原始數據包,根據取出數據包的原始三層地址路由到最終目的地。在GRE隧道中傳輸的數據包隱藏了原始起源和目的IP地址。GRE封裝后的數據包重新加上的IP包頭的起源和目的地址即為GRE隧道的起源和目的地址,可以由用戶定義,但要求全局可達。
鑒于GRE的隧道特性,本文使用P2P GRE在CE和PE路由器之間建立點到點隧道,同時將VPN訪問Internet的分組導入到隧道。由于GRE隧道并沒有被劃分到特定的VRF下,所以這些分組到達PE路由器后,PE路由器將根據MPLS轉發表只為分組加上一層標簽,然后通過輸出接口發送給相鄰P路由器,之后逐跳路由到指定Internet目的網絡。從而實現了訪問Internet的目的。
假設某公司有處在不同地理位置的數據中心Site-A1和分支機構Site-A2,服務器集群部署在數據中心Site-A1,分支機構Site-A2需要跨越公用網絡使用數據中心Site-A1的資源,并且由于業務需要分支機構Site-A2中的部分用戶還必須能夠訪問Internet。出于安全考慮,公司希望在Site-A1、Site-A2之間使用MPLS VPN建立公司VPN,以使Site-A1跨越公用網絡安全可靠的向Site-A2提供數據服務,同時能夠滿足Site-A2中部分用戶訪問Internet的需求。
網絡拓撲圖如圖2所示。

圖2 網絡拓撲圖
圖2中,R1、R3為PE路由器,R4為 P路由器,R2、R5為CE路由器。公司數據中心Site-A1使用R2路由器模擬,分支機構Site-A2使用R5路由器模擬。R2上環回口Loopback 0模擬數據中心,R5上環回口Loopback 0模擬分支機構需要訪問Internet的用戶。ISP為BGP/MPLS VPN服務提供商,本實驗中由路由器R1,R3,R4模擬。其中ISP的P路由器R4接入了Internet,本實驗使用環回口Loopback 0模擬 Internet。數據中心Site-A1和分支機構Site-A2運行OSPF協議交換路由信息。
為達到公司需求,R1上需要建立VRF Site-A1,并且把f0/0劃分到該VRF下;R3上需要建立VRF Site-A2,并且把 f2/0劃分到該 VRF下。這樣,Site-A1、Site-A2的路由信息將被分別加入到VRF下,Site-A2訪問Site-A1的數據流將通過MPLS VPN建立的邏輯隧道跨越公用網絡安全的傳輸。
為使 Site-A2中部分用戶能夠訪問 Internet,在R3,R5之間建立GRE隧道,配置默認路由將用戶直接訪問Internet的流量從VPN中分離出來,導入GRE隧道并使用全局路由表轉發到Internet。基于安全考慮,僅僅把特定用戶R5上環回口Loopback 0的路由信息發送到Internet公網,實現該用戶既能通過VPN內網訪問數據中心,也可以訪問Internet,而其它用戶仍然只能訪問VPN內網資源。
各端口IP地址的分配如表1所示。

表1 各端口IP地址分配表
2.4.1 配置典型 MPLS VPN,建立 Site-A1和 Site-A2之間的VPN
(1)R1。
R1(config)#router ospf 1 !配置OSPF進程1,該路由進程用來交換ISP網絡信息
R1(config-router)#router-id 1.1.1.1 !配置OSPF router-id
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0 !宣告ISP內網網段
R1(config-router)#network 202.1.14.1 0.0.0.0 area 0
R1(config)#router ospf 200 vrf Site-A1 !配置OSPF進程200,該進程用來交換VPN路由信息,并保存在VRF Site-A1下
R1(config-router)#network 192.168.12.1 0.0.0.0 area 101!宣告VPN內網路由
R1(config-router)#redistribute bgp 13 subnet!重分發通過BGP攜帶的遠端VPN路由到OSPF進程200
R1(config)#ip vrf Site-A1 !配置VRF Site-A1
R1(config-vrf)#rd 100:1!設置路由區分符為100:1,用來唯一標示本地VPN路由條目
R1(config-vrf)#route-target both 100:1 !設置雙向路由目標都為100:1
即只將攜帶擴展公用體屬性100:1的BGP路由安裝進該VRF下
R1(config)#int s1/0
R1(config-if)#mpls ip !接口下啟用MPLS進程
R1(config)#int fa0/0
R1(config-if)#ip vrf forwarding Site-A1 !把接口劃分到VRF Site-A1下
R1(config)#router bgp 13 !配置BGP進程
R1(config-router# bgp router-id 1.1.1.1 !配置BGP router-id
R1(config-router)#neighbor 3.3.3.3 remote-as 13
!配置IBGP會話
R1(config-router)#neighbor 3.3.3.3 updatesource Loopback0!修改更新源為Loopback0
R1(config-router)#address-family vpnv4
R1(config-router-af)#neighbor 3.3.3.3 activate!激活VPNV4會話,允許BGP交換VPN路由
R1(config-router-af)#neighbor 3.3.3.3 sendcommunity extended!允許向對等體發送擴展公用體屬性
R1(config-router-af)#exit-address-family
R1(config-router)#address-family ipv4 vrf Site-A1!進入VRF地址族
R1(config-router-af)#redistribute ospf 200 vrf Site-A1!重分發VPN路由到BGP,通過BGP傳遞給遠端PE路由器
(2)R2。
R2(config)#router ospf 200!在CE上啟用OSPF進程與PE動態交換VPN內網路由
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 192.168.12.2 0.0.0.0 area 101
(3)R4。
R1(config)#router ospf 1!在P路由器上啟用OSPF進程1動態交換全局路由,以提供外層標簽的控制信息
R1(config-router)#router-id 4.4.4.4
R1(config-router)#network 4.4.4.4 0.0.0.0 area 0
R1(config-router)#network 202.1.14.4 0.0.0.0 area 0
R1(config-router)#network 202.1.34.4 0.0.0.0 area 0
R1(config)#int s1/0 R1(config-if)#mpls ip R1(config)#int s1/1 R1(config-if)#mpls ip R3與R1的配置類似,R5和R2的配置類似,不再贅述。
2.4.2 GRE 隧道配置
(1)R3。
R3(config)#interface Tunnel1!配置GRE虛擬隧道接口
R3(config-if)#ip address 35.1.1.3 255.255.255.0!配置隧道接口IP地址
R3(config-if)#tunnel source FastEthernet2/0!配置隧道起源
R3(config-if)#tunnel destination 192.168.35.5!配置隧道目的地址
R3(config-if)#tunnel vrf Site-A2!VRF Site-A2中查找到達隧道目的地址的路由
R3(config)#ip route 5.5.5.0 255.255.255.0 tunnel 1!去往網絡5.5.5.0/24的分組通過GRE隧道發送給CE路由器
R3(config)#router ospf 1
R3(config-router)#redistribute static subnet!將VPN中需要訪問Internet的網段注入全局路由表,傳遞到Internet
(2)R5。
R5(config)#interface Tunnel1
R5(config-if)#ip address 35.1.1.3 255.255.255.0
R5(config-if)#tunnel source FastEthernet2/0
R5(config-if)#tunnel destination 192.168.35.5
R5(config)#ip route 0.0.0.0 0.0.0.0 tunnel 1!將訪問Internet的流量定向到GRE隧道,通過隧道發送給PE路由器
完成以上實驗配置后,以R5為例,看到R5路由表上有到達內網的路由,包括到R2的路由2.2.2.0/24,同時還有到達 Internet的默認路由 0.0.0.0/0,使用命令show ip route顯示路由項目。
在R5上測試到R2環回口(模擬數據中心,地址為2.2.2.2)的連通性,測試結果可由路由信息表看出。從連通性測試表可以看到通信正常,說明指定用戶(R5環回口模擬)可以正常訪問公司數據中心。
在R5上測試到R4環回口(模擬Internet,地址為4.4.4.4)的連通性,測試結果如圖 3 所示。

圖3 測試R5到R4的連通性
在圖3中,當源地址是R5物理接口地址(192.168.35.5)時,看到網絡是不通的,原因是 Internet上沒有到達R5物理口所在網段的路由,而當測試源地址是R5環回口地址(5.5.5.5)時通信正常。此結果可以很好的說明只有R5的環回口(模擬指定用戶)可以正常訪問Internet,也可以正常訪問VPN內網數據中心,達到了預期效果。
BGP/MPLS VPN技術具有很好的應用前景,被認為是下一代互聯網的構建VPN的骨干技術。在BGP/MPLS VPN中采用了兩層標簽結構,內層標簽為VPN標簽,外層標簽是MPLS路由器為目的PE路由器的地址所在網段分發的標簽。在ISP網絡中,P路由器只根據外層標簽轉發分組,不參與VPN路由信息的交互,這樣VPN分組在公網上實際上是通過一條預先建立的LSP(Label Switching Path,標簽交換路徑)傳輸到指定的PE路由器。LSP為VPN分組提供了一條隧道,使每個VPN的分組流量都與其它流量在邏輯上是相互隔離的。保證了VPN的數據的安全性。
正是由于BGP/MPLS VPN的路由隔離特性,使VPN中用戶無法訪問Internet。而實際環境中VPN某些用戶需要連接Internet,訪問外網資源。所以結合GRE來實現部分VPN用戶訪問Internet具有重要實際意義。本文結合GRE隧道技術,實現了BGP/MPLS VPN環境下VPN內網訪問Internet的仿真。仿真結果表明,可以很靈活地控制VPN的某些特定用戶訪問Internet,其它用戶仍然無法訪問Internet。通過這樣精確的訪問控制,BGP/MPLS VPN的安全性依然可以得到保證。
[1]Yusuf Bhaiji.網絡安全技術與解決方案(修訂版)[M].北京:人民郵電出版社,2010:9-33.
[2]Richard Deal.Cisco VPN完全配置指南[M].北京:北京郵電出版社,2007:104-158.
[3]Karthik Muthukrishnan,Andrew Malis.IETF RFC2917,A core MPLS VPN architecture[S].2001.
[4]Karl Solie.CCIE實驗指南[M].北京:人民郵電出版社,2010:75-100.
[5]Jeff Doyle,Jennifer Carroll.TCP/IP路由技術[M].北京:人民郵電出版社,2009:39-99.
[6]李紅升.基于隧道的VPN技術應用[J].電腦知識與技術,2012,8(14):3239-3241.
LI Hong-sheng.Application of VPN Technology Based on Tunneling[J].Computer Knowledge and Technology,2012,8(14):3239-3241.
[7]Wendell Odom,Rus Healy,Denise Donohue.CCIE Routing and Switching[M].北京:人民郵電出版社,2009:350-380.
[8]王麗娜,何 軍,侯健敏,等.基于DynamipsGUI的兩類路由協議仿真通信實驗[J].實驗室研究與探索,2010,29(6):72-75,83.
WANG Li-na, HE Jun, HOU Jian-min, etal. Simulational Communication Experiment on Two Kinds of Routing Protocol Based on DynamipsGUI[J].Research and Exploration in Laboratory,2010,29(6):72-75,83.
[9]程 鈴.MANET入侵技術的研究[J].微電子學與計算機,2010,27(6):57-59,63.CHENG Ling.Study on Intrusion Detection for Mobile Ad Hoc Networks[J].Microelectronics & Computer,2010,27(6):57-59,63.
[10]Ritu Malik,Rupali Syal.Performance Analysis of IP Security VPN[J].International Journal of Computer Applications,2010,8(4):5-9.
[11]荷璐茜.MPLS VPN技術研究與應用[J].現代電子技術,2011,34(15):127-130.
HE Lu-xi.Research and Application of MPLS VPN Technology[J].Modern Electronics Technique,2011,34(15):127-130.
[12]陳軍華,王忠民.BGP/MPLS VPN實現原理[J].計算機工程,2006,32(23):124-126.
CHEN Jun-hua,WANG Zhong-min.Theory and Implementation of BGP/MPLS VPN[J].Computer Engineering,2006,32(23):124-126.
[13]李明輝,夏靖波,萬路軍.MPLS VPN組網仿真與應用設計[J].電光與控制,2009,16(6):45-47,52.
LI Ming-hui,XIA Jing-bo,WAN Lu-jun.Application and Simulation of MPLS VPN Networking[J].Electronics Optics & Control,2009,16(6):45-47,52.
[14]徐聚星.MPLS VPN技術在高校數字圖書館中的運用[J].實驗室研究與探索,2012,31(4):72-75.
XU Ju-xing.Application of MPLS VPN Technology in Digital Libraries in Colleges and Universities[J].Research and Exploration in Laboratory,2012,31(4):72-75.
[15]韓 波,沈富可,劉 莉.BGP/MPLS VPN在NS-2中的實現[J].計算機應用,2006,26(4):980-982.
HAN Bo,SHEN Fu-ke,LIU Li.Implementation of BGP/MPLS VPN in NS-2[J].Computer Applications,2006,26(4):980-982.
[16]應宇鋒,王楨珍,王曉云.MPLS VPN技術在WLAN接入分組域中的應用與研究[J].軟件,2012,33(9):74-76,80.
YING Yu-feng,WANG Zhen-zhen,WANG Xiao-yun.Application and Research of MPLS VPN Technology in the WLAN Access Packet Switch Domain[J].Software,2012,33(9):74-76,80.
[17]侯劍鋒,馬明凱.MPLS VPN中PE-CE互連仿真研究[J].計算機工程,2010,36(12):123-125.
HOU Jian-feng, MA Ming-kai. Research on PE-CE Connection Simulation in MPLS VPN[J].Computer Engineering,2010,36(12):123-125.