1、路由策略permit下匹配的前缀列表是deny 默认路由,这个是什么意思?
2、想要实现引入bgp时拒绝引入bgp默认路由,其他bgp路由都引入,用路由策略加前缀列别的方式如何写呢?
(0)
这个配置的目的是:在应用该路由策略的上下文中(例如路由引入、路由发布、路由接收时), 禁止默认路由(0.0.0.0/0)通过,但 允许所有其他路由通过。
路由策略 (route-policy
):
路由策略由多个节点 (node
) 组成,每个节点包含匹配条件 (if-match
) 和执行动作 (apply
)。
执行动作 permit
表示:如果匹配条件成立,则放行该路由,并可能执行附加动作(如设置属性)。
前缀列表 (ip prefix-list
):
前缀列表用于定义一组 IP 前缀的规则集。
每条规则都有一个序号、动作 (permit
或 deny
) 以及匹配的前缀(如 0.0.0.0/0
)。
关键点: 前缀列表的 deny
表示它 拒绝匹配该前缀的路由。
组合逻辑 (permit
+ if-match ip-prefix
containing deny
):
当你把 一个包含 deny 0.0.0.0/0
规则的前缀列表 放在 permit
节点的 if-match ip-prefix
条件下时,逻辑是这样执行的:
if-match ip-prefix <your_prefix_list_name>
: 这个条件要求检查被处理的路由是否匹配指定的前缀列表。
前缀列表的执行规则: 前缀列表是按序号从上到下执行的。如果路由匹配了其中一条规则,则立即返回该规则的动作 (permit
或 deny
) 作为匹配结果。
deny 0.0.0.0/0
的作用:
如果被处理的路由是 0.0.0.0/0 (默认路由),它匹配了前缀列表中 deny 0.0.0.0/0
这条规则。
前缀列表为这条路由返回的匹配结果是 deny
。
permit
节点的动作:
只有当 if-match
条件为 真(true) 时,才执行节点的 permit
动作。
对于匹配结果是 deny
的路由,if-match ip-prefix ...
条件 被认为是没有被满足(条件的结果被解释为 false
或 匹配失败
)。
因此:
当路由是 0.0.0.0/0 时:
匹配了前缀列表中的 deny
规则。
if-match ip-prefix ...
条件返回 false
/未匹配。
该节点 (permit
节点) 不执行任何动作(既不放行也不拒绝它)。
该路由会继续向下一个节点(如果有)进行匹配。如果没有其他节点匹配它,或者后续节点都是 deny
,那么这条默认路由最终将被过滤掉。
当路由是 任何非默认路由 (如 192.168.1.0/24) 时:
它 不会匹配 前缀列表中的 deny 0.0.0.0/0
规则。
它需要匹配前缀列表中后面更普遍的规则(通常是隐式或显式的 permit 0.0.0.0/0 less-equal 32
或类似的)。
如果匹配了某个 permit
规则,if-match ip-prefix ...
条件返回 true
/匹配成功。
permit
节点的动作被触发:该非默认路由被放行。
“Permit节点里的deny前缀”是一种“ 黑名单”策略配置:
在这个 permit
节点下,使用带 deny
规则的前缀列表,目的是 显式地拒绝某些特定路由(这里是默认路由)。
而这个节点的本意 (permit
) 是 允许所有其他路由 (被前缀列表中其他 permit
规则匹配的路由) 通过。
最终效果等效于:
if (路由 == 0.0.0.0/0) {
deny; // 过滤掉默认路由
} else {
permit; // 允许所有其他路由
}
这种配置最常见于以下情况:
OSPF 重分发静态路由:
你想将管理员配置的静态路由(包括一些具体的业务网段)引入到 OSPF 域中。
但你 不想将默认静态路由(如 ip route-static 0.0.0.0 0.0.0.0 <next-hop>
)也引入到 OSPF,可能因为默认路由有特殊用途或在其他区域已分发,或者只想分发具体路由。
配置:
在 route-policy
中:
route-policy REDIST_STATIC permit node 10
if-match ip-prefix BLOCK_DEFAULT
apply cost ...
(其他apply动作)
前缀列表:
ip prefix-list BLOCK_DEFAULT index 10 deny 0.0.0.0/0 // 拒绝默认路由
ip prefix-list BLOCK_DEFAULT index 20 permit 0.0.0.0/0 less-equal 32 // 允许其他所有路由
当重分发静态路由时应用此策略 import-route static route-policy REDIST_STATIC
,具体静态路由会被引入(匹配到索引20的 permit
),而静态默认路由则被过滤掉(匹配到索引10的 deny
,导致if-match
条件不成立,该节点不 permit
它)。
BGP 路由发布/接收:
在向对等体发送或从对等体接收路由时,需要过滤掉默认路由(0.0.0.0/0)。
使用此方法可以让一条策略清晰地实现“允许所有除了默认路由”。
确保前缀列表有“兜底”规则: 为了使“允许其他所有路由”生效,前缀列表通常需要在 deny 0.0.0.0/0
后面跟一条 permit 0.0.0.0/0 less-equal 32
或类似的规则,明确允许其他所有路由(因为前缀列表末尾通常有一个隐式的 deny any
)。
理解匹配逻辑: 核心是理解 if-match ip-prefix
看的是前缀列表最终对该路由的裁决(permit
或 deny
),只有当前缀列表对该路由的裁决是 permit
时,if-match
条件才算匹配成功,才能触发所在节点的 permit
动作。deny
的裁决会导致 if-match
不成功。
因此,permit 节点下匹配的前缀列表是 deny 默认路由
是一种 利用前缀列表deny
规则的特性配合permit
节点 来实现 过滤特定路由(此处是默认路由)并允许其他所有路由 的高效配置方式。
(0)
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论