MPLS VPN基础

文章目录

MPLS VPN

既然能用MPLS解决私网经过公网进入私网之间进行通信,为什么还要用MPLSVPN?

  • 当私网中出现多个站点,需要使用一定的技术来对私网流量进行区分,同时也要实现用户之间的隔离
  • MPLS网络一般是运营商进行搭建的,但是也能实现基本的内网经过公网之后到内网之间的通信,但是存在很大弊端
  • 因此使用 MPLS VPN
    隔离靠VRF:用来让LER下方连接的私网之间进行隔离

区分靠RD:RD不可以控制路由的加载,没有能力控制路由究竟进入哪一个VRF的功能,能通过RD区分具体的VPNv4路由

进入对应的VRF使用RT:究竟进入哪一个VRF,RT来决策

传递靠MP-BGP:多协议BGP,用于传递VPNv4路由
传统GRE、IPsecVPN的优缺点

  • 便宜,不需要找运营商(运营商只负责互通)

  • 只需要自己配置就可以

  • 假设运营商中间出现网络拥塞,用户体验得不到保障

  • 服务质量和带宽得不到保障

  • 用户业务和运营商业务是相互隔离的

MPLS VPN相比于传统的GRE、IPsecVPN的优点

  • 吸取传统VPN优点:运营商传递的是 VPNv4 路由
  • 可以对数据流量进行优化,保障网络的稳定性
  • 用户业务和运营商业务之间也是相互隔离的

VPN组件

VRF

VPN实例,把一个物理设备虚拟成很多逻辑设备,逻辑设备之间相互隔离,用来让 LER 下方连接的私网之间进行隔离 虚拟路由转发表 VPN-instance 提供路由隔离

包含内容:IP路由表、标签转发表、接口列表、RD、路由过滤策略

在LER设备上配置

bash 复制代码
ip vpn-instance VPN_A    #创建VPN实例
ipv4-family    #打开IPv4地址族功能
inter g0/0/0
ip bind vpn-instance VPN_A    #进入接口将接口加入VPN实例,绑定的不同VPN实例可以针对不同的客户
ip add 12.1.1.2 24    #将接口加入VPN实例之后会清空IP配置
dis ip routing-table vpn-instance VPN_A    #查看虚拟路由表

#此时在LER设备上进行 ICMP 的 Ping 测试需要在命令后加参数
ping -vpn-instance VPN_A 3.3.3.3 进行连通性测试(同样支持普通ICMP里面的参数)
ping -vpn-instance VPN_A -a 1.1.1.1 3.3.3.3    #指定源地址去进行 Ping 测试
tracert -vpn-instance VPN_A -v -a 1.1.1.1 3.3.3.3    # -v表示显示详细信息,-a表示指定源地址,-q表示探测包的数量
#在配置完RT之后,我们使用上面的 Tracert 命令就能看见数据包经过IP网络进入MPLS网络的效果
RD

路由标识符,用于区分使用相同地址空间的IPv4前缀,必须保证PE上的RD全局唯一

bash 复制代码
R1
ip vpn-instance VPN_A    #当用户的路由加入到VRF之后,我们需要给他添加一个RD值
route-distinguisher 100:1    #RD用来标识进入此LER设备的路由变成 VPN 路由之后打的Tag就是100:1

R3
ip vpn-instance VPN_A
route-distinguisher 100:2

加上RD属性之后就变成了VPNv4路由,之后就需要建立 MP-BGP 用以承载 VPNv4 路由

MP-BGP

因为本身有MPLS作为支撑,所以可以直接跨设备建立邻居

所以在MPLS网络中需要建立 MP-IBGP 的邻居关系

bash 复制代码
bgp 100
peer 3.3.3.3 as 100
peer 3.3.3.3 con loo 0
undo peer 3.3.3.3 enable    #关闭掉IPv4的邻居关系
ipv4-family vpnv4    #在BGP中使能 VPNv4
peer 3.3.3.3 enable    #激活 VPNv4 的邻居关系

dis bgp vpnv4 all peer    #查看VPNv4的所有邻居

bgp 100
ipv4 vpn-instance VPN_A    #进入VPN实例进行路由宣告
network x.x.x.x 24    #在VPN实例里面宣告路由

dis bgp vpnv4 vpn-instance VPN_A routing-table 3.3.3.3    #查看VPN实例下的BGP路由
dis bgp vpnv4 route-distinguisher 100:1 routing-table 12.1.1.0    #查看RD、RT信息,并且指定要查询的路由
dis bgp vpnv4 all routing-table peer 3.3.3.3 advertised-routes    #查看所有对邻居3.3.3.3通告的路由信息

#此时因为没有配置RT,VPNv4路由无法接受,因此MP-IBGP邻居收不到传来的路由条目,刚刚的查询命令查不到相应的东西
RT

称为VPN的 Target、BGP扩展团体属性、控制VPN路由信息的加载、每个VPN实例关联一个或多个VPN Targer 属性

接受的RT叫 IRT,发送的RT叫 ERT

bash 复制代码
R1
ip vpn-instance VPN_A    #还是需要在LER设备上进行配置
vpn-target 100:1 export-extcommunity    # R1-LER 配置出去的RT为100:1

R3
ip vpn-instance VPN_A
vpn-target 100:1 import-extcommunity    # R3-LER 配置进来的RT为100:1

R3
ip vpn-instance VPN_A    #还是需要在LER设备上进行配置
vpn-target 100:2 export-extcommunity    # R3-LER 配置出去的RT为100:2

R1
ip vpn-instance VPN_A
vpn-target 100:2 import-extcommunity    # R1-LER 配置进来的RT为100:2

#现在使用命令就能在 R3-LER 设备上看到本端LER传递的路由信息
dis bgp vpnv4 route-distinguisher 100:1 routing-table 12.1.1.0    #查看RD、RT信息,并且指定要查询的路由
dis bgp vpnv4 vpn-instance VPN_A routing-table 3.3.3.3   #查看VPN实例下的BGP路由,配置RT之后就可以正常查询了
bash 复制代码
在LER设备上进行 ICMP 的 Ping 测试需要在命令后加参数
ping -vpn-instance VPN_A 3.3.3.3 进行连通性测试(同样支持普通ICMP里面的参数)
ping -vpn-instance VPN_A -a 1.1.1.1 3.3.3.3    #指定源地址去进行 Ping 测试
tracert -vpn-instance VPN_A -v -a 1.1.1.1 3.3.3.3    # -v表示显示详细信息,-a表示指定源地址,-q表示探测包的数量
#在配置完RT之后,我们使用上面的 Tracert 命令就能看见数据包经过IP网络进入MPLS网络的效果

Author:DC

相关推荐
阿甘知识库6 分钟前
宝塔面板跨服务器数据同步教程:双机备份零停机
android·运维·服务器·备份·同步·宝塔面板·建站
安全小王子10 分钟前
Kali操作系统简单介绍
网络·web安全
saynaihe39 分钟前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
夏木~1 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle
W21551 小时前
Liunx下MySQL:表的约束
数据库·mysql
黄名富1 小时前
Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
java·数据库·redis·lua
言、雲1 小时前
从tryLock()源码来出发,解析Redisson的重试机制和看门狗机制
java·开发语言·数据库
Hacker_LaoYi1 小时前
【漏洞分析】DDOS攻防分析(四)——TCP篇
网络·tcp/ip·ddos
爱吃水果蝙蝠汤1 小时前
DATACOM-IP单播路由(BGP)-复习-实验
网络·网络协议·tcp/ip
一个程序员_zhangzhen2 小时前
sqlserver新建用户并分配对视图的只读权限
数据库·sqlserver