王丽娜, 刘 炎
(江苏省气象探测与信息处理重点实验室,江苏省气象传感网技术工程中心,南京信息工程大学电子与信息工程学院,南京 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.