VPN(虚拟专线网络)
作用:实现广域互联(不同地域局域网之间跨越公网进行互通);
VPN(Virtual Private Network,虚拟专用网络)指的是在一个公共网络中实现虚拟的专用网络,从而使得用户能够基于该专用网络实现通信的技术。
MPLS VPN
设备角色:
PE(运营商边界设备):
CE:VPN用户企业的边界设备
P:运营商
VPN实例
一般一个企业对应一个VPN实例,通过实例名称作为区分;
RD(路由标识符)
作用:用于区分来自不同的VPN实例的私网路由;
原理:会根据私网路由一起在公网上传递;
特点:不同的VPN实例不能配置相同的RD值;
RT(路由目标值)
作用:控制VPN路由的接收,实现VPN实例之间的访问控制;
原理:私网路由在公网上传递时,会携带对应vpn实例的出方向RT,对端PE收到后会对比路由中的出方向RT,与自身连接的VPN实例的入方向RT是否一致,一致则传递进该VPN实例,不一致则不传;
因此,在配置时,需要互通的VPN实例之间的RT值需要交叉一致;
VRF(虚拟路由转发表/VPN实例路由表)
在PE设备上,每个VPN实例都会有一张对应的VRF表,功能跟路由表一致,但是专门用于存放VPN路由;
关键信息:私网标签、vpn实例名称,下一跳/出接口,tunnel id;
display ip routing-table vpn-instance a //查看vpn实例a的路由表
控制层面工作过程:
1、CE会将需要跟对端通信的路由,以普通路由的形式传递给PE;
2、PE会将从CE收到的路由,记录进对应的VRF表项中,记为私网路由;
3、PE会为私网路由,分配一个私网标签,并且将该路由以update报文的形式传递给所有vpnv4邻居;
update报文:携带非ipv4单播路由时,通过mp-reach-NLRI字段携带路由;
NLRI:携带私网路由、掩码、私网标签;
下一跳:以自身作为下一跳;
扩展团体属性:出方向RT;
4、PE收到对端PE发送过来的VPNv4路由时,会做出以下检查:
(1)下一跳是否可达;
(2)下一跳是否存在完整的隧道;
(3)检查VPNv4路由的出方向RT与本设备连接的其他的VPN实例的RT是否一致;
当上述三个条件均满足,则该路由会被学习进VRF表项中,并且BGP VPN路由表中该路由也会显示为有效
配置:
1、CE设备与PE设备建立普通的EBGP/IGP邻居关系,并且宣告/引入需要进行广域互联的路由给PE设备;
CE1:
bgp 700
peer 10.1.17.1 as-number 100
network 8.8.8.8 32
2、PE上创建VPN实例,并且设置RD、RT值;
PE1:
ip vpn-instance a
route-distinguisher 1:1
vpn-target 1:2 export-extcommunity
vpn-target 2:1 import-extcommunity
PE2:
ip vpn-instance b
route-distinguisher 2:2
vpn-target 2:1 export-extcommunity
vpn-target 1:2 import-extcommunity
3、将VPN实例绑定到连接到对应客户的接口下
interface GigabitEthernet0/0/0
ip binding vpn-instance a
ip address 10.1.17.1 24 //绑定完成后,ip地址会清空,需要重新配置
4、在PE上与CE建立BGP/IGP的实例邻居(以BGP为例)
bgp 100
ipv4-family vpn-instance a //进入VPN实例a视图
peer 10.1.17.7 as-number 700 //peer CE设备建立邻居
5、PE1与PE2之间跨跳建立VPNv4邻居
bgp 100
peer 4.4.4.4 as-number 100
peer 4.4.4.4 connect-interface LoopBack0
ipv4-family vpnv4 //进入BGP的VPNv4协议栈
peer 4.4.4.4 enable //与4.4.4.4建立vpnv4邻居
如果想减轻设备负担,可以关闭PE之间的普通ipv4邻居:
BGP 100
ipv4-family unicast
undo peer 4.4.4.4 enable
6、在CE上将BGP引入到IGP
CE2:
isis 1
import-route bgp
display ip vpn-instance verbose //查看VPN实例的配置以及绑定情况
display bgp vpnv4 all peer //查看VPN实例邻居
display bgp vpnv4 all routing-table //查看BGP VPN路由表
display ip routing-table vpn-instance a verbose //查看VRF a详细信息,其中包含私网标签以及tunnel id;
如果PE与CE之间运行IGP(以ospf 3为例)
CE2:
ospf 3 router-id 6.6.6.6
area 0.0.0.0
network 10.1.46.0 0.0.0.255 //与PE建立普通的ospf邻居
import-route isis 1 //将需要传递给对面的私网路由引入到ospf 3
PE2:
ospf 3 router-id 4.4.4.4 vpn-instance b
area 0.0.0.0
network 10.1.46.0 0.0.0.255 //与CE设备建立VPN实例邻居
bgp 100
ipv4-family vpn-instance b
import-route ospf 3 //在BGP中创建vpn实例b视图,引入ospf3
ospf 3
import-route bgp //将bgp引入致ospf 3,使对端的路由,可以传递给CE设备;
CE2:
isis 1
import-route ospf 3 //将ospf 3引入到isis,使对端的路由,可以传递给本企业的设备;
实验二
场景
某公司有两个客户网络,分别是网络A与网络B,该公司希望两个网络内的员工能通过私网路由相互访问。该公司希望在网络边缘设备上使用BGP协议将私网路由发送给运营商网络。运营商通过MP-BGP实现私网路由在公共网络上的传递,同时使用MPLS VPN技术保证客户网络信息的安全性和私密性。
步骤一 基本配置与IP编址
(IP已经配置好,记得检查接口配置信息)
AR1
AR2
AR3
AR4
AR5
步骤二 ISP配置单区域OSPF
R1 R2 R3使用ospf router-id为环回接口 宣告10.1.12.0/24,10.1.23.0/24网段以及各自loopback 0接口(自行配置,宣告最精确的地址)
AR1
ospf 1 router-id 1.1.1.1
area 0
network 10.1.12.0 0.0.0.255
network 1.1.1.1 0.0.0.0
AR2
ospf 1 router-id 2.2.2.2
area 0
network 10.1.12.0 0.0.0.255
network 10.1.23.0 0.0.0.255
network 2.2.2.2 0.0.0.0
AR3
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 10.1.23.0 0.0.0.255
dis ospf peer brief查看邻居关系建立情况
配置完成后,查看设备的路由表,并ISP的连通性。
<R2>dis ip routing-table (截图)
步骤三 配置运营商网络设备使用MPLS LDP协议转发客户的私网数据
R1,R2,R3 运行MPLS,并且运行MPLS LDP协议进行标签的发放
在各LSR上配置全局MPLS和LDP
[R1]mpls lsr-id 1.1.1.1
[R1]mpls
Info: Mpls starting, please wait... OK!
[R1-mpls]quit
[R1]mpls ldp
[R1-mpls-ldp]
R2 R3基本一样 R2 LSR ID为2.2.2.2 R3为3.3.3.3
在各LSR接口上配置MPLS和LDP
[R1]int s1/0/0
[R1-Serial1/0/0]mpls
[R1-Serial1/0/0]mpls ldp
R2的 S1/0/0 S3/0/0和R3的S3/0/0也一样要配置
配置完成后,在节点上执行display mpls ldp session命令,可以看到R1和R2和R3之间的本地LDP会话状态为"Operational"。
[R1]display mpls ldp session
步骤四 LDP建立LSP
在配置完成后,各LSR已根据默认的LDP LSP触发策略,即所有主机路由触发建立LDP LSP。
在各LSR上执行display mpls ldp lsp命令,可以看到所有主机路由都触发建立了LDP LSP。
[R1]display mpls ldp lsp
步骤五 配置运营商网络边缘设备的VPN实例
在R1与R3上分别为客户A网络与客户B网络配置VPN实例。分配客户A网络的VPN实例为ClientA,RD值为100:100,Export Target与Import Target为100:200;分配给客户B网络的VPN实例为ClientB,RD值为200:200,Export Target与Import Target为100:200。
[R1]ip vpn-instance ClientA ###创建VPN实例,实例名为ClientA
[R1-vpn-instance-ClientA]route-distinguisher 100:100 ###为VPN实例地址族配置路由标识RD值为100:100
[R1-vpn-instance-ClientA-af-ipv4]vpn-target 100:200 both ###配置VPN实例出入方向VPN-Target扩展团体属性为100:200
[R1]int s3/0/0 ###在CE和PE之间的接口
[R1-Serial3/0/0]ip binding vpn-instance ClientA ###将PE上的S3/0/0接口与VPN实例ClientA绑定
注意:绑定实例后IP地址需要重新配
R3配置的也一样 实例名为ClientB RD为200:200,RT为100:200,在S1/0/0接口绑定实例,记得重新配IP
配置完成后,分别在R1与R3上查看配置的VPN实例。
[R1]display ip vpn-instance verbose
步骤六 配置客户网络边缘设备与运营商网络边缘设备使用BGP协议传递路由
客户A网络的AS号为100,运营商网络的AS号为200,客户B网络的AS号为300。客户网络边缘设备与运营商网络边缘设备建立BGP的邻居关系,使客户私网路由通过BGP协议通告给运营商网络边缘设备。
[R4]bgp 100
[R4-bgp]peer 10.1.14.1 as-number 200
[R4-bgp]network 192.168.10.0 24
[R1]bgp 200
[R1-bgp]ipv4-family vpn-instance ClientA
[R1-bgp-ClientA]peer 10.1.14.4 as-number 100
R3与R5配置也差不多,指定VPN实例ClientB与IPv4地址族进行关联,peer指向对端建立BGP对等体邻居,通告一条172.16.10.0/24路由给ISP
[R5]bgp 300
[R5-bgp]peer 10.1.35.3 as-number 200
[R5-bgp]network 172.16.10.0 24
[R3]bgp 200
[R3-bgp]ipv4-family vpn-instance ClientB
[R3-bgp-ClientB]peer 10.1.35.5 as-number 300
配置完成后,分别在R1与R4,R3与R5上查看BGP邻居关系的建立情况。
[R1]display bgp vpnv4 vpn-instance ClientA peer (一定要Established状态)
[R4]display bgp peer (一定要Established状态)
[R3]display bgp vpnv4 vpn-instance ClientB peer (一定要Established状态)
[R5]display bgp peer (一定要Established状态)
分别在R1与R3上查看VPN路由表学到的客户网络的私网路由
[R1]dis bgp vpnv4 vpn-instance ClientA routing-table(正常情况应该会有192.168.10.0/24的BGP路由)
[R3]dis bgp vpnv4 vpn-instance ClientB routing-table(正常情况应该会有172.16.10.0/24的BGP路由)
分别在R1与R3上查看VPN路由表学到的客户网络的私网路由。
[R1]display ip routing-table vpn-instance ClientA(圈出EBGP路由条目)
[R3]display ip routing-table vpn-instance ClientB(圈出EBGP路由条目)
步骤七 配置运营商网络设备使用MP-BGP协议传递客户的私网路由
在R1与R3之间采用MP-BGP协议传递客户的私网路由,R2不运行BGP(MPLS可以解决路由黑洞)
[R1]bgp 200
[R1-bgp] peer 3.3.3.3 as-number 200 ###peer指向R3建立BGP对等体AS号为200
[R1-bgp]peer 3.3.3.3 next-hop-local###指定更新源
[R1-bgp]ipv4-family vpn-instance ClientA ###启用BGP的IPv4地址族并进入BGP-VPNv4地址族视图
[R1-bgp-af-vpnv4] peer 3.3.3.3 enable ###启用指定IBGP对等体
(缺省情况下,只有BGP-IPv4单播地址族的对等体是自动使能的。即在BGP视图下配置peer as-number命令后,系统会自动配置相应的peer enable命令。其他地址族视图下都必须手动使能)
R3差不多的反过来配置就行
配置完成后,分别在R1与R3上查看MP-BGP邻居关系的建立情况。
[R1]display bgp vpnv4 all peer (此时应该有两个BGP邻居都是Established状态)
[R3]display bgp vpnv4 all peer (此时应该有两个BGP邻居都是Established状态)