路由策略和策略路由
路由策略
使用路由过滤来对控制层面的路由进行修改
也就是对路由器的路由条目做出修改对可达性控制
控制路由收 发 引入
过滤器
ACL(访问控制列表) 适用于各类路由协议
IP-prefix(前缀列表)适用于各类路由协议
AS-path-filter(as路径过滤器)适用于BGP协议
community-filter(社团属性过滤器)适用于BGP协议
extcommunity-filter(扩展属性过滤器)适用于VPN
router distinguish-filter(RD值过滤)适用于VPN
^条件工具
Router-policy(路由策略)利用前几种策略规定自己的策略
^策略工具
通用:import-route filter-policy BGP用:peer network dampening
^调用工具
filter-policy也可以直接调用条件工具
这些工具组合使用 实现路由的控制策略
条件工具抓取路由 策略工具实施策略 如:拒绝 允许 修改 调用工具则进行调用
条件工具:
acl:
使用反掩码匹配
[H3C]acl ?
advanced Configure an advanced ACL
basic Configure a basic ACL
mac Configure a Layer 2 ACL
name Specify a named ACL
number Specify a numbered ACL
前三个依次代表高级列表 基础列表 二层列表
[H3C-acl-ipv4-basic-2000]rule 10 deny source 192.168.0.0 0.0.0.255
[H3C-acl-ipv4-basic-2000]rule 20 permit source 192.168.0.0 0.0.255.255
上述条目是为了拒绝24位掩码同意16位掩码的 但是acl不能对掩码精确匹配 当传入192.168.0.x/16的路由时 本来是要同意的 但是由于 rule 10 导致该条目会被拒绝
acl默认条目通过
ip-prefix:
[H3C]ip prefix-list test deny 192.168.0.0 24
[H3C]ip prefix-list test deny 192.168.0.0 16
[H3C]dis ip prefix-list name test
Prefix-list: test
Permitted 0
Denied 0
index: 10 Deny 192.168.0.0/24
index: 20 Deny 192.168.0.0/16
ip-prefix 可以对反掩码精确匹配 可以 精确的拒绝和允许
前缀列表最后一条默认拒绝
且该条件工具可以对地址精确匹配:
[H3C]ip prefix-list test deny 192.168.0.0 16 greater-equal 24 less-equal 28
# 该条目说明拒绝 掩码长度大于24 小于18的 如果不写less-equal 那就是默认小于32 如果不写 greater-equal 那就是默认大于16(由用户所写掩码定义)
用最精简最快速的方式匹配下列路由
首先 该四条路由进行汇总是 192.168.4.0 22 但是这样匹配无法精确掩码
再使用 greater-equal 24 less-equal 24 来实现
ip prefix比acl更精确 但acl适用范围更广
filter-policy
命令:在路由协议中调用:filter-policy
filter-policy 【条件工具】 【策略名】 【方向】
过滤器策略 只能过滤路由 不能过滤lsa
对于距离矢量协议:
入方向指的是 从别的路由器的路由表中传递到本路由器的数据库
出方向指的是 自己将路由表中的条目传递给别的路由器
对于链路状态协议:
入方向指的是 本路由器利用lsdb中的lsa算出的路由
出方向 则只对路由信息有效对lsa无效
也就是说 该过滤器只能影响路由条目的传递 和 链路状态数据库算出路由条目的过程 不能影响lsa等链路状态信息的收发
示例1:
过滤RIP路由
[R1]rip 1
[R1-rip-1]network 10.0.0.0
[R1-rip-1]undo summary
# 记得关闭汇总 否则三条路由会被汇总成一条
[R2]dis ip routing-table protocol rip
Destination/Mask Proto Pre Cost NextHop Interface
10.0.0.0/24 RIP 100 1 12.0.0.1 GE0/0/0
10.0.1.0/24 RIP 100 1 12.0.0.1 GE0/0/0
10.0.2.0/24 RIP 100 1 12.0.0.1 GE0/0/0
# 可以看到对端路由器学到了三条rip路由 尝试使用filter-policy过滤
# 首先在R1的出方向利用ip-prefix过滤拒绝0.0 1.0 两个网段
[R1]ip prefix-list test deny 10.0.0.0 24
[R1]ip prefix-list test deny 10.0.1.0 24
[R1-rip-1]filter-policy prefix-list test export
# 再次查看
[R2]dis ip routing-table protocol rip
Destination/Mask Proto Pre Cost NextHop Interface
12.0.0.0/24 RIP 100 0 0.0.0.0 GE0/0/0
# 发现 2.0也没有了 原因是 ip-prefix默认拒绝所有 需要在底部加入
[R1]ip prefix-list test permit 0.0.0.0 0 less-equal 32
# 允许所有条目
[R1]dis ip prefix-list name test
Prefix-list: test
index: 10 Deny 10.0.0.0/24
index: 20 Deny 10.0.1.0/24
index: 30 Permit 0.0.0.0/0 le 32
# 从上到下 从小到大依次匹配 2.0网段允许发出 再来看R2
[R2]dis ip routing-table protocol rip
Destination/Mask Proto Pre Cost NextHop Interface
10.0.2.0/24 RIP 100 1 12.0.0.1 GE0/0/0
# 尝试在入的方向调用ACL 首先将R1的过滤器停用
[R1-rip-1]undo filter-policy export
# 写入策略 只保留 1.0 0.0 网段
[R2]acl basic 2000
[R2-acl-ipv4-basic-2000]rule permit source 10.0.0.0 0.0.0.255
[R2-acl-ipv4-basic-2000]rule permit source 10.0.1.0 0.0.0.255
# 再次查看路由表
[R2-rip-1]dis ip routing-table protocol rip
Destination/Mask Proto Pre Cost NextHop Interface
10.0.0.0/24 RIP 100 1 12.0.0.1 GE0/0/0
10.0.1.0/24 RIP 100 1 12.0.0.1 GE0/0/0
router-policy
系统视图下调用:
route-policy 【策略名】 【模式】 node 【节点号】
每个节点之间是或的关系
在策略之中的匹配条件 if-match之间是和的关系
动作 apply之间也是与的关系
我们将大动作也就是模式 分为deny permit 两种模式
小动作 也就是if-match中的子句 也就是小动作 分为匹配 和没匹配上
如果大动作是允许 那就是小动作如果permit匹配上 才会放行
如果大动作是拒绝 小动作permit匹配上时 就会丢弃
其余情况进行下一条目的匹配
简而言之 只有if-match 的条件工具为permit时 才算是匹配上了 策略工具才会进行响应的动作
案例:
table1中的路由引入到table2 中 利用router-policy进行路由策略
查看路由策略 从上到下依次匹配
第一条 匹配到5.5.5.5 /32 和 1.1.2.0/24 条目 该条目的模式为拒绝 在table2中该条目将不在出现
第二条 模式为允许 但匹配条件为拒绝 不做处理 继续匹配
第三条 模式为允许 匹配到网段为1.1.3.x的条目 且下一跳为13.13.13.1 的条目 将被修改cost为21
第四条 模式为允许 如果匹配到1.1.3.0 掩码为25的 修改cost值为11 由于 下一跳13.13.13.1 条目上面被匹配过 所以下面 只会存在下一跳为34.34.34.2能被修改
最后放行所有
策略路由
对数据转发做出限制 在数据层面控制路由
策略路由要优于路由表的路由转发
常称之为PBR 优先于 路由表的选路规则
在策略路由中 没被匹配上(包括deny)的路由条目 将做正常的路由转发
[R2]policy-based-route [策略名] [模式] node [节点序号]
[R2-pbr-test-1]if-match # 规则
[R2-pbr-test-1]apply # 指定动作
本地策略路由 只对本地数据有影响 也就是由该设备发出的 对经过该设备转发的流量没有效果
接口策略路由 只对转发的数据有影响 也就是其他设备发出的 经该设备进行转发的流量进行控制
配置本地策略
R2有两个环回
# 使用tracert命令来查看下一跳回显
ip unreachables enable
ip ttl-expires enable
# 华三设备使用tracert命令前先要开启不可达回显
[R1]tracert 6.6.6.6
1 2.0.0.2 (2.0.0.2) 0.000 ms 0.000 ms 1.000 ms
[R1]tracert 5.5.5.5
1 2.0.0.2 (2.0.0.2) 0.000 ms 1.000 ms 0.000 ms
# 看到去往6.6.6.6以及5.5.5.5的下一跳是2.0.0.2
# 也可以使用计时器来得到下一跳 使用reset counters 来清空计数器结合ping命令得到结果
# 使用路由策略来让5.5.5.5的下一跳修改为 1.0.0.2
[R1-acl-ipv4-adv-3000]rule permit ip destination 5.5.5.5 0
# 注意根据目标地址 进行转发需要使用高级acl
[R1]ip local policy-based-route test
[R1]dis ip policy-based-route policy test
Policy name: test
node 1 permit:
if-match acl 3000
apply next-hop 1.0.0.2 (active)
[R1]tracert 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops at most, 40 bytes each packet, press CTRL+C to break
1 1.0.0.2 (1.0.0.2) 0.000 ms 1.000 ms 0.000 ms
# 注意 当使用出接口时 路由器会尝试询问该条目的目的地址的MAC地址 如果目标与该路由器不是直连 那就无法到达 只有当对端开启ARP中继才能得到目标的MAC
流策略
流策略分为流分类 流行为 流策略
将流分类与流行为关联就得到了流策略 实现了模块化的配置
[R1]traffic ?
behavior Specify traffic behavior
classifier Specify traffic classifier
[R1]qos policy [策略名]
[R1-qospolicy-策略名]classifier [流分类名] behavior [流行为名]
#比如我们要匹配http的流量 并做出相应的行为 该策略建议在入方向调用 因为 策略应该优先于路由查找 如果是出方向调用 此时查表已经完成了
[R1-acl-ipv4-adv-3005]rule permit tcp destination-port eq 80
# 抓取tcp端口号为80的流
[R1-classifier-http]if-match acl 3005
[R1]traffic behavior car
[R1-behavior-car]car cir 100
# 指定承诺速率为100 kbps
# 关联流分类与流行为:
[R1]qos policy http
[R1-qospolicy-http]classifier http behavior car
[R1-GigabitEthernet0/0/0]qos apply policy http inbound
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)