新闻详情

新闻详情

首页 / 资讯中心 / 详情

HCIP路由控制基础:过滤器与路由策略实战详解

发布时间:2026/10/1 15:24:16来源:尧图网络
HCIP路由控制基础:过滤器与路由策略实战详解
做网络工程这行路由控制算是HCIP里最实用也最容易上手的模块之一。我最初学HCIP的时候前半部分都在啃路由协议原理OSPF邻居建立、BGP状态机、报文类型能背得滚瓜烂熟。但真正到了现网发现光懂协议根本不够——路由引入做了、BGP邻居配好了可路由表里全是你不想要的路由走到哪里都担心环路。这时候才意识到路由控制才是数通工程师从会配置走向会设计的分水岭。这篇文章就围绕HCIP路由控制的基础知识展开把过滤器、路由策略、常见应用场景一次讲透给准备考试的朋友和刚接触现网路由控制的同行做个参考。1. 路由控制到底在解决什么问题1.1 路由失控的三个典型场景先说个最常见的场景公司两条运营商线路分别连到两家ISP内部跑OSPF。你把内网网段通过OSPF传给出口设备出口设备再把默认路由回传给内网。刚开始没问题但随着分支增多、网段变多你会发现内网路由器学到的路由条目数量急剧膨胀甚至多条下一跳指向不同ISP出口的路由同时存在。于是一会儿走A出口一会儿走B出口访问体验忽好忽坏排障时根本说不清流量到底走了哪条路。第二个典型场景是协议互引。好多网络里同时跑OSPF和BGP边界设备上两条命令一敲import-route ospf、import-route bgp双向引入完成。结果呢OSPF这边多了成百上千条BGP带来的明细路由BGP那边又把OSPF的内部网段全广播出去了。外部邻居本来只需要你汇总后的几条路由现在乱七八糟的明细全被学到了路由表爆炸不说还容易形成路由回灌也就是我从你这边学到的路由又被你从我这边学回去。第三种是路由引入后的环路隐患。比如R3通过BGP从R2学到了一条路由R2又把这条路由引入OSPF传给R1R1再通过OSPF把这路由传回R2。如果其中一段链路出现问题数据包就会在这几台设备之间来回打转直到TTL耗尽。路由控制解决的就是这一类问题把哪些路由能学、哪些路由能发、哪些路由要改头换面再学再发这件事用一套明确规则管起来。1.2 两类控制手段能抓、能改、能放HCIP体系里的路由控制核心其实就两件事过滤和修改属性。过滤很好理解就是permit或deny决定一条路由能不能被引入、能不能被通告、能不能被学习。BGP的路由过滤、OSPF的路由过滤、路由引入时的过滤本质都一样把不想让路由器看到的东西挡掉。修改属性就高级一点了。路由协议都有自己的一套度量值和路径属性OSPF有costBGP有Local Preference、MED、AS_PATH、Community、Next Hop等。通过修改这些值可以让路由器在有多条路径可选时按照你的意图选择最优路径。比如两条出口线路想让正常流量走A备份流量走B就可以通过修改BGP的MED或者Local Preference来实现而不是靠静态路由硬指。这两类手段组合起来就是路由控制的全部逻辑先抓取特定路由再决定放行、拒绝还是改属性。抓取靠过滤器决策和动作靠路由策略。2. 过滤器与路由策略先建立工具链认知2.1 四种过滤器各管哪一段HCIP教材里反复出现四种过滤器ACL、IP-Prefix、AS-Path Filter、Community Filter。很多初学者会把它们和路由策略混为一谈其实它们只是眼睛负责把路由认出来不负责做动作。ACL通用匹配工具既能匹配报文也能匹配路由。匹配路由时只能基于路由的网络地址来匹配匹配不到掩码长度。IP-Prefix地址前缀列表专门为路由匹配设计可以同时匹配网络地址和掩码长度是路由过滤里最常用的工具。AS-Path Filter只用在BGP里通过正则表达式匹配路由的AS_PATH属性判断一条路由经过了哪些AS。Community Filter也只用在BGP里通过团体属性来匹配路由最典型的用法是对一组具有相同团体属性的路由做统一处理。这四种过滤器有一个共同点本身不带动作只是返回匹配或不匹配。动作要交给路由策略或者协议自身的过滤命令来执行。过滤器主要用武之地能否精确匹配掩码长度是否BGP专属ACL报文过滤、路由过滤、流分类否只能匹配网络号否IP-Prefix路由前缀掩码长度匹配是否AS-Path Filter匹配BGP的AS_PATH路径属性不适用是Community Filter匹配BGP团体属性不适用是2.2 Route-Policy的结构与调用位置路由策略Route-Policy才是做决策的地方。它由若干节点组成每个节点有一个序号节点里包含条件匹配if-match和动作设置apply。路由器拿着一条路由从序号小的节点开始逐个匹配一旦命中某个节点的条件就执行该节点的动作不再往下看。简单理解过滤器负责认人路由策略负责判断这个人放行还是拦下放行的话给他什么待遇。调用位置也很关键同样一个路由策略放在不同协议的视图下作用完全不同在import-route后面调用控制路由引入时的过滤和属性设置。在BGP对等体方向上调用peer ... route-policy控制路由发布或接收。在OSPF或IS-IS视图下用filter-policy调用控制路由表的学习和通告。我把这些调用关系理清楚之后再看现网配置一下子就不乱了。3. 抓取工具逐个拆解ACL、IP-Prefix、AS-Path、Community3.1 ACL用于路由过滤网段能抓掩码抓不住先看最经典的ACL。在路由控制场景里基本ACL2000-2999就够用了它匹配的是路由的网络地址。比如acl number 2000 rule 5 permit source 10.1.0.0 0.0.255.255 rule 10 deny source 10.2.0.0 0.0.255.255这里的0.0.255.255是反掩码表示匹配10.1.x.x这个网段的所有路由。问题在于ACL根本看不见掩码长度。10.1.1.0/24它会命中10.1.1.0/25它也会命中10.1.1.0/32一样命中。如果你只想匹配10.1.1.0/24这一条ACL做不到。所以现网里做路由过滤我很少直接用ACL它更适合用于流分类、报文过滤这种场景。路由过滤优先用IP-Prefix原因就是它能精确到掩码长度。3.2 IP-Prefix前缀与掩码长度一并匹配IP-Prefix的语法看起来吓人拆开就清楚了ip ip-prefix name index 10 permit 10.1.1.0 24这条规则的含义是只匹配10.1.1.0/24网络号和掩码长度必须同时满足。再复杂一点的写法ip ip-prefix name index 20 permit 10.1.0.0 16 greater-equal 20 less-equal 24逐一解释10.1.0.0 16匹配网络号的前16位为10.1的路由范围是10.1.0.0到10.1.255.255。greater-equal 20掩码长度大于等于20。less-equal 24掩码长度小于等于24。也就是说这条规则匹配的是前缀落在10.1.0.0/16范围内、掩码长度在20到24之间的所有路由。如果你只写了greater-equal 20那范围就是20到32只写了less-equal 24范围就是16到24默认下限是前缀长度本身。几个高频用法可以直接抄# 只匹配默认路由 ip ip-prefix DEFAULT index 10 permit 0.0.0.0 0 # 匹配所有路由 ip ip-prefix ANY index 10 permit 0.0.0.0 0 less-equal 32 # 匹配所有/24路由 ip ip-prefix P_24 index 10 permit 0.0.0.0 0 24 # 匹配私有网段10.0.0.0/8内掩码16到24的路由 ip ip-prefix PRIVATE index 10 permit 10.0.0.0 8 greater-equal 16 less-equal 24前缀列表有个隐含规则未匹配的路由默认拒绝。所以当你在if-match里引用ip-prefix时一定要确认列表覆盖到你想要放行的所有路由。3.3 AS-Path Filter用正则表达式匹配BGP路径AS-Path Filter只出现在BGP环境里因为它匹配的是AS_PATH属性也就是一条BGP路由从始发到当前经历了哪些AS。语法如下ip as-path-filter 1 permit ^100_正则符号在AS路径匹配里的含义要记牢^匹配路径开头$匹配路径结尾_匹配AS分隔符类似空格、逗号、花括号这些可以理解为随便什么边界符号.匹配任意一个字符*前面的字符重复0次或多次前面的字符重复1次或多次()用来分组举例# 只匹配AS_PATH为空的路由也就是本地始发路由 ip as-path-filter 1 permit ^$ # 只匹配AS_PATH只包含AS100的路由即直接从AS100始发的路由 ip as-path-filter 2 permit ^100$ # 匹配AS_PATH中出现过AS200的路由 ip as-path-filter 3 permit _200_ # 匹配以AS300结尾的路由 ip as-path-filter 4 permit _300$正则很容易把100和1000搞混所以边界符号要用好。_100_能匹配到独立的AS100不会误伤AS1000因为你要求100前后都有AS分隔符。3.4 Community Filter通过团体属性批量施策团体属性相当于给BGP路由打标签。比如你给一批路由打上100:1的团体属性后续不管它们走到哪台路由器都能通过团体属性把它们识别出来统一执行某条策略。配置示例# 定义团体过滤器匹配团体属性为100:1的路由 ip community-filter 1 permit 100:1然后在路由策略里引用route-policy COMM permit node 10 if-match community-filter 1 apply local-preference 200这样做的好处是干脆利落。没有团体属性的时候你只能一条一条匹配网段有了团体属性打一个标后面所有设备都能按标识别而且新加进来的路由只要属性对自动被策略覆盖。HCIP考试里团体过滤器虽然不像ip-prefix那么高频但它是BGP路由控制里很实用的技巧值得掌握。4. 路由策略配置实战OSPF与BGP两个高频场景4.1 Route-Policy骨架node、if-match、apply怎么配不管在哪个场景用route-policy的骨架都是统一的。先看一个最典型的例子route-policy OSPF2BGP permit node 10 if-match ip-prefix ALLOW apply med 50 route-policy OSPF2BGP permit node 20 apply med 100拆开看route-policy OSPF2BGP策略名字随自己取但要见名知意。permit node 10节点的动作是permit节点序号10。序号小的先匹配。if-match ip-prefix ALLOW匹配条件引用前缀列表ALLOW。apply med 50命中之后执行的动作把MED设为50。node 20第二个节点没有if-match表示匹配所有。这是整个策略的兜底。这里有几个关键认知初学者一定记牢节点之间是或的关系一条路由先匹配node 10命中就不再往下匹配。一个节点内多个if-match是与的关系必须全部满足才执行apply。路由策略里所有节点都没有命中时最终动作是拒绝。一个节点内可以写多个apply它们同时生效。4.2 OSPF网络中的路由控制方法与限制OSPF场景下最推荐的做法是在引入外部路由时用route-policy控制。比如R2是一台ASBR同时连接OSPF和BGP你现在只想把BGP里特定的一条路由引入OSPF并给它设置costroute-policy BGP2OSPF permit node 10 if-match ip-prefix EXTERNAL apply cost 20 # ospf 1 import-route bgp route-policy BGP2OSPF这样R2只会把前缀列表EXTERNAL命中的路由引入OSPF其他BGP路由一概不引入。这种写法比原来的做法清晰得多因为你能很明确地看到放行了哪些路由、改了什么属性。OSPF还有一种过滤手段叫filter-policy在OSPF视图下配置ospf 1 filter-policy ip-prefix P_IN import这条命令用来过滤进入本地路由表的OSPF路由但有个重要限制它对区域内路由不生效。因为区域内路由靠LSA泛洪和SPF算法计算所有区域内路由器必须保持一致过滤掉会影响整个区域的连通性。所以filter-policy import只能过滤区域间路由和外部路由。理解这个限制后你就不会在需要对区域内路由下手时还指望filter-policy了。4.3 BGP对等体间的发布与引入控制BGP是路由控制的重头戏因为BGP的各种路径属性天然就是为策略设计的。最常见的两个动作是控制发布和接收。比如R2想把R1传过来的部分OSPF路由发布给BGP邻居R3同时要为这些路由设置不同的MED。配置骨架如下route-policy OSPF2BGP permit node 10 if-match ip-prefix P10 apply med 50 route-policy OSPF2BGP permit node 20 apply med 100 # bgp 100 ipv4-family unicast peer 192.168.23.3 route-policy OSPF2BGP exportexport方向的路由策略作用于R2向R3发布的路由import方向作用于R2从R3接收的路由别搞反了。BGP里还有一个特别实用的属性修改Local Preference。它只在本AS内传递值越大优先级越高。可以通过apply local-preference调整如果需要在接收对端路由时就修改就在import方向配置策略。MED则不同它是向邻居AS传递的值越小优先级越高通常在export方向给不同的路由设置不同MED让对端AS按照你的意图选路。在HCIP的考试和面试里把这两个方向的策略说清楚、把Local Preference和MED的适用范围说准确基本就能稳稳过关。5. 三个容易被忽略的坑5.1 Route-Policy的隐含Deny与节点顺序不少人第一次配route-policy都会在隐含Deny上栽跟头。你以为只针对部分路由做处理结果其他路由全部被拒绝了。原因就是路由策略对所有未匹配节点都默认拒绝跟你有没有写deny节点无关。举个例子你想给10.1.1.0/24设置MED 50其他路由保持原样。如果只写了route-policy TEST permit node 10 if-match ip-prefix ONLY apply med 50那除了10.1.1.0/24其他路由在引入时全部被拒绝。正确的做法是加一个兜底节点route-policy TEST permit node 100这个兜底节点没有if-match匹配所有路由动作就是放行并且不修改任何属性。注意兜底节点的序号要放在最后因为序号小的先匹配它不会干扰前面节点的逻辑。5.2 if-match ip-prefix引用deny规则的坑这个坑特别隐蔽。IP-Prefix列表里可以写deny规则但你要清楚在route-policy里通过if-match ip-prefix引用一个前缀列表时只有前缀列表里的permit规则才算命中。放在if-match里deny规则不会触发节点的分支执行。比如你想拒绝10.1.2.0/24写了一个前缀列表ip ip-prefix DENY index 10 deny 10.1.2.0 24然后在route-policy里写了route-policy FILTER deny node 5 if-match ip-prefix DENY看起来好像没问题实际上10.1.2.0/24根本不会命中这个deny节点因为if-match ip-prefix DENY要求前缀列表给出permit命中才算条件成立。要拒绝某条路由标准做法是前缀列表里用permit列出你要拒绝的条目ip ip-prefix DENY index 10 permit 10.1.2.0 24然后route-policy里针对这个条件写deny动作。这个细节一旦踩坑排查起来非常费劲因为配置看着完全合理行为却跟预期相反。5.3 Filter-Policy与协议特定限制前面已经提到了OSPF的filter-policy import对区域内路由无效。再补一个相关细节filter-policy export也不是所有通告都能过滤它只对ASBR引入的外部路由生效对区域间LSA的泛洪以及区域内路由的发布不起作用。BGP这边也有类似的边界问题。比如你用apply ip-address next-hop修改BGP路由的下一跳在EBGP场景下默认会把下一跳改为自己的接口地址如果你手工指定了一个对端不可达的地址路由虽然出现在BGP表中但下一跳不可达路由根本不会进路由表。这在现网里是配置完成后必须用display bgp routing-table仔细验证的一步。6. 一个可以直接复现的小实验混合协议下的路由控制6.1 拓扑设计与控制目标纸上谈兵容易咱们用ENSP搭一个最小拓扑。三台路由器R1和R2之间跑OSPFR2和R3之间跑EBGP。R1是内容端模拟三个内部网段R3是一台外部邻居模拟外部网络。拓扑规划R1LoopBack 0到2分别模拟10.1.1.0/24、10.1.2.0/24、10.1.3.0/24接入OSPF区域0。R2属于AS 100连接R1和R3同时运行OSPF和BGP。R3属于AS 200通过LoopBack 0模拟172.16.1.0/24通过BGP通告给R2。控制目标有两个R2把OSPF路由引入BGP后R3只能收到10.1.1.0/24和10.1.3.0/24收不到10.1.2.0/24。同时10.1.1.0/24的MED设置为5010.1.3.0/24的MED保持默认。R2把R3传来的BGP路由172.16.1.0/24引入OSPF时给它打上cost 20R1应该能通过OSPF学到这条路由且开销为21。6.2 关键配置逐段解析R1的OSPF部分比较简单把三个LoopBack和互联接口都宣告进区域0interface LoopBack0 ip address 10.1.1.1 255.255.255.0 # interface LoopBack1 ip address 10.1.2.1 255.255.255.0 # interface LoopBack2 ip address 10.1.3.1 255.255.255.0 # ospf 1 area 0.0.0.0 network 192.168.12.0 0.0.0.255 network 10.1.1.0 0.0.0.255 network 10.1.2.0 0.0.0.255 network 10.1.3.0 0.0.0.255R2的配置是重头戏。先定义前缀列表和路由策略# 拒绝10.1.2.0/24放行10.1.1.0/24 ip ip-prefix DENY index 10 permit 10.1.2.0 24 ip ip-prefix MED50 index 10 permit 10.1.1.0 24 # OSPF引入BGP的出口策略 route-policy OSPF2BGP deny node 5 if-match ip-prefix DENY route-policy OSPF2BGP permit node 10 if-match ip-prefix MED50 apply med 50 route-policy OSPF2BGP permit node 20 # 兜底节点放行其他路由不做修改 # BGP引入OSPF的策略 ip ip-prefix EXTERNAL index 10 permit 172.16.1.0 24 route-policy BGP2OSPF permit node 10 if-match ip-prefix EXTERNAL apply cost 20然后在BGP和OSPF里调用bgp 100 peer 192.168.23.3 as-number 200 ipv4-family unicast peer 192.168.23.3 enable import-route ospf 1 route-policy OSPF2BGP # ospf 1 import-route bgp route-policy BGP2OSPFR3的BGP部分注意要把LoopBack地址通告出去BGP才能生成路由bgp 200 peer 192.168.23.2 as-number 100 ipv4-family unicast peer 192.168.23.2 enable network 172.16.1.0 24这里有个细节值得注意import-route ospf 1会引入所有OSPF路由包括R1的三个LoopBack网段。路由策略OSPF2BGP的node 5先deny了10.1.2.0/24node 10给10.1.1.0/24设了MED 50node 20兜底放行10.1.3.0/24。如果你忘了node 510.1.2.0/24就会在node 20被放行策略的过滤作用就白配了。6.3 验证命令与预期结果配置完成后逐台验证在R3上查看BGP路由表display bgp routing-table预期结果10.1.1.0/24存在MED为50。10.1.2.0/24不存在。10.1.3.0/24存在MED为默认值0。如果只想看某条BGP路由的详细属性用display bgp routing-table 10.1.1.0 24在R2上查看OSPF路由表和BGP路由表确认引入是否生效display ospf routing display bgp routing-table预期结果OSPF路由表中出现172.16.1.0/24cost为20BGP路由表中10.1.1.0/24的MED确实是50。在R1上查看路由表确认OSPF外部路由的costdisplay ip routing-table预期结果172.16.1.0/24出现在路由表中cost为21。原因是R2引入外部路由时cost为20R1通过OSPF区域0学到时R1到R2的链路叠加了默认cost 1。这套小实验虽小但把ACL与前缀列表之外的过滤器、路由策略的多个节点、BGP的MED修改、OSPF外部路由引入控制全部串起来了。我每次带新人都要求他们把这份配置敲一遍再故意改错一两个节点看看现象差异。只有亲手验证过这些策略的生效逻辑才算真正从HCIP的基础认知迈进了能动手的阶段。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

2022年408真题详解:DMA方式与外存磁道扇区计算核心考点 2026/10/1 16:14:25

2022年408真题详解:DMA方式与外存磁道扇区计算核心考点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Node.js 错误处理最佳实践:集中式错误处理而非在中间件内处理(nodebestpractices 2.4 深度解析) 2026/10/1 16:14:24

Node.js 错误处理最佳实践:集中式错误处理而非在中间件内处理(nodebestpractices 2.4 深度解析)

文档教程后端 【免费下载链接】nodebestpractices ✅ The Node.js best practices list (July 2026) 项目地址: https://gitcode.com/GitHub_Trending/no/nodebestpractices 点击查看 免费下载 导读 在 Node.js 后端应用中,错误处理分散在业务模块、路…

阅读更多 →
claudes-c-compiler的6个调试环境变量与集成测试体系:如何快速定位编译问题 2026/10/1 16:14:24

claudes-c-compiler的6个调试环境变量与集成测试体系:如何快速定位编译问题

claudes-c-compiler的6个调试环境变量与集成测试体系:如何快速定位编译问题 【免费下载链接】claudes-c-compiler Claude Opus 4.6 wrote a dependency-free C compiler in Rust, with backends targeting x86 (64- and 32-bit), ARM, and RISC-V, capable of compi…

阅读更多 →
苏州广受信赖的GEO优化公司 视频号GEO优化询盘转化服务商推荐 2026/10/1 16:14:18

苏州广受信赖的GEO优化公司 视频号GEO优化询盘转化服务商推荐

行业选品&合作踩坑四大痛点 AI搜索找不到企业,连候选名单都进不去:很多老板都有过这样的经历,想找靠谱的工业设备、食材供应商或者法律服务机构,先在豆包、DeepSeek、文心一言这类AI工具里搜关键词,结果搜出来的都…

阅读更多 →
企业微信API如何设计任务占用锁?WeComApi 防止群发、补偿和人工重试同时执行 2026/10/1 16:14:18

企业微信API如何设计任务占用锁?WeComApi 防止群发、补偿和人工重试同时执行

官网友情链接: wecomapi.com 企微自动化系统任务越来越多以后,会出现一种非常典型的并发问题:同一个任务可能同时被多个执行者处理。 例如一个群发子任务失败后,系统自动补偿正在运行。 与此同时,运营人员在后台看到失…

阅读更多 →
GEO运营指导服务商哪家靠谱?可维国际详解AI搜索场景产品关联优化策略 2026/10/1 16:14:18

GEO运营指导服务商哪家靠谱?可维国际详解AI搜索场景产品关联优化策略

AI搜索时代,企业为什么需要GEO优化当用户习惯从搜索转向提问,企业的信息布局逻辑也随之改变。 过去企业做网络推广,重点是让网页在搜索结果中排名靠前;而现在,越来越多用户直接向豆包、元宝、千问等AI智能搜索工具提问&#xff0c…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉