王麗娜, 劉 炎
(江蘇省氣象探測與信息處理重點實驗室,江蘇省氣象傳感網(wǎng)技術(shù)工程中心,南京信息工程大學(xué)電子與信息工程學(xué)院,南京 210044)
近年來,電子商務(wù)等網(wǎng)絡(luò)應(yīng)用的飛速發(fā)展,使網(wǎng)絡(luò)安全問題體現(xiàn)得尤為突出。在這種背景下,VPN[1-3]的應(yīng)用越來越廣泛。當(dāng)前實現(xiàn)VPN的技術(shù)有多種,其中BGP/MPLS VPN以其可擴展性好、轉(zhuǎn)發(fā)效率高、靈活的地址策略等優(yōu)勢而得到廣泛的部署[1-7]。
BGP/MPLS VPN中有3種路由器,即用戶邊緣(Customer Edge,CE)路由器,提供商邊界(Provider Edge,PE)路由器,提供商(Provider,P)路由器。PE 路由器和P路由器保存到達外網(wǎng)的全局路由表信息,而CE路由器保存VPN內(nèi)網(wǎng)的路由信息。PE路由器上使用獨立的虛擬路由轉(zhuǎn)發(fā)實例(Virtual Routing and Forwarding Instance,VRF)來保存并交換來自CE路由器的VPN路由信息,這些路由信息不與全局路由表交互。P路由器通常只根據(jù)數(shù)據(jù)包的標(biāo)簽執(zhí)行快速轉(zhuǎn)發(fā),并不參與VPN內(nèi)網(wǎng)的路由信息交換。這樣,各VPN路由信息只存在于各自獨立的VRF下,PE路由器和P路由器的主路由表并沒有各VPN的路由信息,從而通過這樣的路由隔離來實現(xiàn)流量隔離,提供了VPN之間通信的安全性。
由于采用了路由隔離,VPN中的用戶不能訪問Internet。然而,VPN中的某些用戶除了需要安全的共享自身所在VPN的網(wǎng)絡(luò)資源,同時還需要能夠訪問Internet。因此,在典型BGP/MPLS VPN的基礎(chǔ)上,結(jié)合使用GRE隧道技術(shù),把特定的需要訪問Internet的流量通過隧道從VRF中分離出來,然后依據(jù)全局路由表的路由信息發(fā)往Internet,而發(fā)往同一VPN其它站點的流量仍依據(jù)VRF中的路由信息轉(zhuǎn)發(fā)。應(yīng)用各種仿真軟件模擬網(wǎng)絡(luò)環(huán)境已經(jīng)得到廣泛的應(yīng)用[8-9],本文基于GNS3虛擬了BGP/MPLS VPN網(wǎng)絡(luò)環(huán)境,并結(jié)合使用BGP/MPLS VPN和GRE技術(shù)同時實現(xiàn)了CE端的Internet訪問和對同VPN的其它站點訪問,驗證了該方案的可行性。
BGP/MPLS VPN的體系結(jié)構(gòu)定義于RFC2547,主要分為數(shù)據(jù)層面和控制層面??刂茖用尕?fù)責(zé)與其它設(shè)備交換路由信息,并為路由條目分配標(biāo)簽,生成標(biāo)簽轉(zhuǎn)發(fā)信息數(shù)據(jù)庫(Label Forwarding Information Base,LFIB);根據(jù)LFIB,數(shù)據(jù)層面負(fù)責(zé)快速轉(zhuǎn)發(fā)被標(biāo)記的數(shù)據(jù)包。位于服務(wù)提供商網(wǎng)絡(luò)邊緣的PE路由器和位于服務(wù)提供商網(wǎng)絡(luò)核心的P路由器以及位于客戶端邊緣的CE路由器共同組成了BGP/MPLS VPN轉(zhuǎn)發(fā)網(wǎng)絡(luò)[10-11]。
在BGP/MPLS VPN中,每個VPN都關(guān)聯(lián)一個或者多個特定的VRF,每個VRF都關(guān)聯(lián)了一個獨立的虛擬路由表和若干相關(guān)接口。當(dāng)PE路由器收到從CE傳過來的數(shù)據(jù)包后,PE路由器查找該子接口對應(yīng)的VRF路由表,根據(jù) VRF中的信息給分組加上兩層MPLS標(biāo)簽,其中底層標(biāo)簽是遠(yuǎn)端出口PE路由器通過BGP傳遞過來的給目的VPN網(wǎng)絡(luò)分發(fā)的VPN標(biāo)簽,而外層標(biāo)簽是鄰居P路由器傳遞過來的給遠(yuǎn)端PE出口路由器分發(fā)的IGP標(biāo)簽。通常,MPLS標(biāo)簽是大于16的整數(shù)。當(dāng)VPN分組被PE加上兩層標(biāo)簽之后,通過輸出接口發(fā)送到第一個鄰居P路由器,鄰居P路由器根據(jù)外層標(biāo)簽逐跳將數(shù)據(jù)包轉(zhuǎn)發(fā)到遠(yuǎn)端出口PE路由器,并在倒數(shù)第二跳彈出外層標(biāo)簽,將只有VPN標(biāo)簽的分組轉(zhuǎn)發(fā)給出口PE路由器,出口PE路由器根據(jù)VPN標(biāo)簽,查找MPLS轉(zhuǎn)發(fā)表中對應(yīng)的輸出接口,在彈出VPN標(biāo)簽后將該VPN分組發(fā)送給指定的CE路由器[12-17]。該過程如圖1所示。
圖1 MPLS VPN分組傳遞過程
這樣,BGP/MPLS VPN分組實際上是在VPN隧道中傳輸?shù)?,各VPN之間的流量是邏輯上相互隔離的。有效地保證了數(shù)據(jù)跨公網(wǎng)的安全性。由于VRF下的路由信息并不與PE或者P路由器全局路由表交互,所以盡管PE或者P路由器上有到達Internet的路由信息,但是并不會安裝到VRF下,更不會被分配VPN標(biāo)簽,所以從CE路由器傳過來的訪問Internet的分組無法被標(biāo)記,VPN內(nèi)網(wǎng)也無法訪問Internet。
通用路由封裝(Generic Routing Encapsulating,GRE)規(guī)定了如何使用一種網(wǎng)絡(luò)協(xié)議封裝另一種網(wǎng)絡(luò)協(xié)議。GRE可分為點到點GRE(point to point GRE,P2P GRE)和多點 GRE(Multipoint GRE,MGRE),P2P GRE可以建立點到點的隧道,而mGRE則應(yīng)用在需要建立點到多點或者多點到多點隧道的場合。GRE技術(shù)允許使用IP包封裝IP、IPX、Apple Talk數(shù)據(jù)包,并且支持全部的路由協(xié)議,有很大的靈活性。
GRE將收到的整個數(shù)據(jù)包重新封裝,先加上GRE包頭和包尾,然后把重新封裝好的數(shù)據(jù)包加上一個新的IP包頭,再和常規(guī)數(shù)據(jù)包一樣被路由到隧道目的地址,再由目的設(shè)備去掉GRE封裝,取出原始數(shù)據(jù)包,根據(jù)取出數(shù)據(jù)包的原始三層地址路由到最終目的地。在GRE隧道中傳輸?shù)臄?shù)據(jù)包隱藏了原始起源和目的IP地址。GRE封裝后的數(shù)據(jù)包重新加上的IP包頭的起源和目的地址即為GRE隧道的起源和目的地址,可以由用戶定義,但要求全局可達。
鑒于GRE的隧道特性,本文使用P2P GRE在CE和PE路由器之間建立點到點隧道,同時將VPN訪問Internet的分組導(dǎo)入到隧道。由于GRE隧道并沒有被劃分到特定的VRF下,所以這些分組到達PE路由器后,PE路由器將根據(jù)MPLS轉(zhuǎn)發(fā)表只為分組加上一層標(biāo)簽,然后通過輸出接口發(fā)送給相鄰P路由器,之后逐跳路由到指定Internet目的網(wǎng)絡(luò)。從而實現(xiàn)了訪問Internet的目的。
假設(shè)某公司有處在不同地理位置的數(shù)據(jù)中心Site-A1和分支機構(gòu)Site-A2,服務(wù)器集群部署在數(shù)據(jù)中心Site-A1,分支機構(gòu)Site-A2需要跨越公用網(wǎng)絡(luò)使用數(shù)據(jù)中心Site-A1的資源,并且由于業(yè)務(wù)需要分支機構(gòu)Site-A2中的部分用戶還必須能夠訪問Internet。出于安全考慮,公司希望在Site-A1、Site-A2之間使用MPLS VPN建立公司VPN,以使Site-A1跨越公用網(wǎng)絡(luò)安全可靠的向Site-A2提供數(shù)據(jù)服務(wù),同時能夠滿足Site-A2中部分用戶訪問Internet的需求。
網(wǎng)絡(luò)拓?fù)鋱D如圖2所示。
圖2 網(wǎng)絡(luò)拓?fù)鋱D
圖2中,R1、R3為PE路由器,R4為 P路由器,R2、R5為CE路由器。公司數(shù)據(jù)中心Site-A1使用R2路由器模擬,分支機構(gòu)Site-A2使用R5路由器模擬。R2上環(huán)回口Loopback 0模擬數(shù)據(jù)中心,R5上環(huán)回口Loopback 0模擬分支機構(gòu)需要訪問Internet的用戶。ISP為BGP/MPLS VPN服務(wù)提供商,本實驗中由路由器R1,R3,R4模擬。其中ISP的P路由器R4接入了Internet,本實驗使用環(huán)回口Loopback 0模擬 Internet。數(shù)據(jù)中心Site-A1和分支機構(gòu)Site-A2運行OSPF協(xié)議交換路由信息。
為達到公司需求,R1上需要建立VRF Site-A1,并且把f0/0劃分到該VRF下;R3上需要建立VRF Site-A2,并且把 f2/0劃分到該 VRF下。這樣,Site-A1、Site-A2的路由信息將被分別加入到VRF下,Site-A2訪問Site-A1的數(shù)據(jù)流將通過MPLS VPN建立的邏輯隧道跨越公用網(wǎng)絡(luò)安全的傳輸。
為使 Site-A2中部分用戶能夠訪問 Internet,在R3,R5之間建立GRE隧道,配置默認(rèn)路由將用戶直接訪問Internet的流量從VPN中分離出來,導(dǎo)入GRE隧道并使用全局路由表轉(zhuǎn)發(fā)到Internet?;诎踩紤],僅僅把特定用戶R5上環(huán)回口Loopback 0的路由信息發(fā)送到Internet公網(wǎng),實現(xiàn)該用戶既能通過VPN內(nèi)網(wǎng)訪問數(shù)據(jù)中心,也可以訪問Internet,而其它用戶仍然只能訪問VPN內(nèi)網(wǎng)資源。
各端口IP地址的分配如表1所示。
表1 各端口IP地址分配表
2.4.1 配置典型 MPLS VPN,建立 Site-A1和 Site-A2之間的VPN
(1)R1。
R1(config)#router ospf 1 !配置OSPF進程1,該路由進程用來交換ISP網(wǎng)絡(luò)信息
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內(nèi)網(wǎng)網(wǎng)段
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內(nèi)網(wǎng)路由
R1(config-router)#redistribute bgp 13 subnet!重分發(fā)通過BGP攜帶的遠(yuǎn)端VPN路由到OSPF進程200
R1(config)#ip vrf Site-A1 !配置VRF Site-A1
R1(config-vrf)#rd 100:1!設(shè)置路由區(qū)分符為100:1,用來唯一標(biāo)示本地VPN路由條目
R1(config-vrf)#route-target both 100:1 !設(shè)置雙向路由目標(biāo)都為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!允許向?qū)Φ润w發(fā)送擴展公用體屬性
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!重分發(fā)VPN路由到BGP,通過BGP傳遞給遠(yuǎn)端PE路由器
(2)R2。
R2(config)#router ospf 200!在CE上啟用OSPF進程與PE動態(tài)交換VPN內(nèi)網(wǎng)路由
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動態(tài)交換全局路由,以提供外層標(biāo)簽的控制信息
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!去往網(wǎng)絡(luò)5.5.5.0/24的分組通過GRE隧道發(fā)送給CE路由器
R3(config)#router ospf 1
R3(config-router)#redistribute static subnet!將VPN中需要訪問Internet的網(wǎng)段注入全局路由表,傳遞到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隧道,通過隧道發(fā)送給PE路由器
完成以上實驗配置后,以R5為例,看到R5路由表上有到達內(nèi)網(wǎng)的路由,包括到R2的路由2.2.2.0/24,同時還有到達 Internet的默認(rèn)路由 0.0.0.0/0,使用命令show ip route顯示路由項目。
在R5上測試到R2環(huán)回口(模擬數(shù)據(jù)中心,地址為2.2.2.2)的連通性,測試結(jié)果可由路由信息表看出。從連通性測試表可以看到通信正常,說明指定用戶(R5環(huán)回口模擬)可以正常訪問公司數(shù)據(jù)中心。
在R5上測試到R4環(huán)回口(模擬Internet,地址為4.4.4.4)的連通性,測試結(jié)果如圖 3 所示。
圖3 測試R5到R4的連通性
在圖3中,當(dāng)源地址是R5物理接口地址(192.168.35.5)時,看到網(wǎng)絡(luò)是不通的,原因是 Internet上沒有到達R5物理口所在網(wǎng)段的路由,而當(dāng)測試源地址是R5環(huán)回口地址(5.5.5.5)時通信正常。此結(jié)果可以很好的說明只有R5的環(huán)回口(模擬指定用戶)可以正常訪問Internet,也可以正常訪問VPN內(nèi)網(wǎng)數(shù)據(jù)中心,達到了預(yù)期效果。
BGP/MPLS VPN技術(shù)具有很好的應(yīng)用前景,被認(rèn)為是下一代互聯(lián)網(wǎng)的構(gòu)建VPN的骨干技術(shù)。在BGP/MPLS VPN中采用了兩層標(biāo)簽結(jié)構(gòu),內(nèi)層標(biāo)簽為VPN標(biāo)簽,外層標(biāo)簽是MPLS路由器為目的PE路由器的地址所在網(wǎng)段分發(fā)的標(biāo)簽。在ISP網(wǎng)絡(luò)中,P路由器只根據(jù)外層標(biāo)簽轉(zhuǎn)發(fā)分組,不參與VPN路由信息的交互,這樣VPN分組在公網(wǎng)上實際上是通過一條預(yù)先建立的LSP(Label Switching Path,標(biāo)簽交換路徑)傳輸?shù)街付ǖ腜E路由器。LSP為VPN分組提供了一條隧道,使每個VPN的分組流量都與其它流量在邏輯上是相互隔離的。保證了VPN的數(shù)據(jù)的安全性。
正是由于BGP/MPLS VPN的路由隔離特性,使VPN中用戶無法訪問Internet。而實際環(huán)境中VPN某些用戶需要連接Internet,訪問外網(wǎng)資源。所以結(jié)合GRE來實現(xiàn)部分VPN用戶訪問Internet具有重要實際意義。本文結(jié)合GRE隧道技術(shù),實現(xiàn)了BGP/MPLS VPN環(huán)境下VPN內(nèi)網(wǎng)訪問Internet的仿真。仿真結(jié)果表明,可以很靈活地控制VPN的某些特定用戶訪問Internet,其它用戶仍然無法訪問Internet。通過這樣精確的訪問控制,BGP/MPLS VPN的安全性依然可以得到保證。
[1]Yusuf Bhaiji.網(wǎng)絡(luò)安全技術(shù)與解決方案(修訂版)[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路由技術(shù)[M].北京:人民郵電出版社,2009:39-99.
[6]李紅升.基于隧道的VPN技術(shù)應(yīng)用[J].電腦知識與技術(shù),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的兩類路由協(xié)議仿真通信實驗[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入侵技術(shù)的研究[J].微電子學(xué)與計算機,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技術(shù)研究與應(yīng)用[J].現(xiàn)代電子技術(shù),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實現(xiàn)原理[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組網(wǎng)仿真與應(yīng)用設(shè)計[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技術(shù)在高校數(shù)字圖書館中的運用[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中的實現(xiàn)[J].計算機應(yīng)用,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]應(yīng)宇鋒,王楨珍,王曉云.MPLS VPN技術(shù)在WLAN接入分組域中的應(yīng)用與研究[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.