华为路由器路由策略与策略路由:一字之差,配错方向全断
简介这份PDF面向华为网络工程师、HCIP/HCIE备考者及从事企业组网运维的技术人员系统讲解路由策略与策略路由的核心机制与配置方法帮助解决路由过滤、属性修改与流量路径规划等实际问题。资源包共1个PDF文件约761KB内容紧凑便于随身查阅与打印学习。文档从路由策略的三大功能切入涵盖控制路由接收与发布、控制路由引入、设置特定路由属性并逐一剖析ACL、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器及RD属性过滤器六种匹配工具的适用场景与匹配模式同时给出地址前缀列表、AS属性过滤器等具体配置命令示例。目前已有306人学习适合需要深入理解Route-Policy原理、提升网络流量规划与安全控制能力的中高级读者参考。1. 华为路由器路由策略和策略路由一字之差配错方向全断很多人第一次在华为 AR 路由器上看到“路由策略”和“策略路由”这两个词以为是同一个东西的两种叫法。我在一个园区网割接现场就遇到过这种事同事想用路由策略做流量分流结果在接口下敲了ip policy-based-route把管理流量也匹配进去割接窗口内 SSH 直接掉线最后靠 Console 口救回来。这两个词只差一个字但作用点、匹配对象、执行顺序完全不同。路由策略Route-Policy是给路由协议用的过滤器控制哪些路由能进路由表、进来后改什么属性策略路由PBRPolicy-Based Route是给数据转发用的在路由表查表之前就按 ACL 匹配报文强制指定下一跳或出接口。本文面向正在用华为 AR 系列路由器做出口分流、多线负载或专线互备的工程师把这两套机制的选择理由、配置步骤、参数含义和翻车点一次讲透让你照着能复现遇到问题知道看哪里。2. 路由策略和策略路由到底差在哪先搞清匹配对象再动手2.1 一个管路由表一个管数据包路由策略的输入是路由条目不是用户数据。它通常挂在 BGP、OSPF、ISIS 这些路由协议下面用filter-policy或route-policy调用。比如你从两条 ISP 线路收到默认路由想让主线路的默认路由优先备线路的默认路由只在主线路失效时生效这就是路由策略的典型场景。它改的是路由表里有什么、路由的属性是什么不直接碰转发平面。策略路由的输入是数据报文。它在接口的入方向或本地策略里生效先于路由表查找。匹配条件用 ACL 或高级 ACL 定义源地址、目的地址、协议、端口动作是apply ip-address next-hop或apply output-interface。常见热搜词里的“pbr策略路由”说的就是它。你希望 192.168.10.0/24 的办公流量走电信、192.168.20.0/24 的访客流量走联通即使路由表里只有一条默认路由也能用 PBR 强制分流。一句话区分路由策略决定“路由表里放什么”策略路由决定“这个包从哪个口出去”。两者可以同时用但顺序上 PBR 先执行PBR 没匹配到的报文再走路由表路由表本身又受路由策略影响。2.2 选型判断什么时候用哪个如果你的需求是“只接收某几条路由”“给 BGP 路由打 community”“OSPF 引入时过滤掉某些网段”用路由策略。如果你的需求是“同一目的地址不同源网段走不同出口”“专线故障时特定业务强制切到备用链路”“把某些流量丢到防火墙清洗”用策略路由。我一般这样判断先问“我要控制的是路由还是包”。控制路由用 Route-Policy控制包用 PBR。如果两个都要先配 PBR 做转发分流再用 Route-Policy 收敛路由表避免路由表里出现互相矛盾的下一跳。2.3 最小可用配置框架下面这段是在华为 AR 路由器上同时启用路由策略和策略路由的骨架先看结构后面逐段拆。# 定义 ACL匹配需要策略路由的源网段 acl number 3000 rule 5 permit ip source 192.168.10.0 0.0.0.255 rule 10 permit ip source 192.168.20.0 0.0.0.255 quit # 定义策略路由按 ACL 分类指定下一跳 policy-based-route PBR_TO_ISP permit node 10 if-match acl 3000 apply ip-address next-hop 202.1.1.2 quit policy-based-route PBR_TO_ISP permit node 20 if-match acl 3010 apply ip-address next-hop 202.2.2.2 quit # 接口下调用策略路由 interface GigabitEthernet0/0/1 ip address 192.168.10.1 255.255.255.0 ip policy-based-route PBR_TO_ISP quit # 路由策略BGP 入方向只接收特定前缀并设置本地优先级 route-policy RP_BGP_IN permit node 10 if-match ip-prefix PF_PREFER apply local-preference 200 quit route-policy RP_BGP_IN deny node 100 quit bgp 65001 peer 202.1.1.2 as-number 65002 peer 202.1.1.2 route-policy RP_BGP_IN import quit逻辑说明ACL 3000 和 3010 分别匹配两个内网网段PBR 节点 10 和 20 按顺序匹配匹配到就执行下一跳不再往下走。接口下ip policy-based-route表示对该接口入方向报文生效。路由策略部分if-match ip-prefix匹配前缀列表apply local-preference 200提高 BGP 路由优先级最后一条deny node 100隐式拒绝其他路由防止意外接收。参数说明ACL 编号 3000 以上是高级 ACL可匹配源和目的policy-based-route名字本地有效node编号越小越先匹配apply ip-address next-hop后跟对端直连或可达地址不能写不可达地址否则报文被丢弃。route-policy里permit和deny决定路由是接收还是拒绝apply只对 permit 节点生效。3. 在华为 AR 路由器上配策略路由ACL、下一跳和接口调用3.1 用高级 ACL 精确匹配流量策略路由的匹配精度取决于 ACL。基础 ACL 只能匹配源地址高级 ACL 可以匹配源、目的、协议和端口。热搜词里“华为ar路由器”和“pbr策略路由”经常一起出现实际配置时最容易翻车的就是 ACL 写得太宽。acl number 3001 rule 5 permit tcp source 192.168.10.0 0.0.0.255 destination 10.1.1.0 0.0.0.255 destination-port eq 443 rule 10 permit icmp source 192.168.10.0 0.0.0.255 destination 10.1.1.0 0.0.0.255 quit这段 ACL 只匹配 192.168.10.0/24 访问 10.1.1.0/24 的 HTTPS 和 ICMP 流量。rule 5里的destination-port eq 443是目的端口不是源端口。如果你写反了匹配结果会完全不对。ACL 规则按编号从小到大匹配匹配到第一条就停止所以精确规则编号要小宽泛规则编号要大。参数说明source后跟源网段和反掩码0.0.0.255对应/24destination同理destination-port eq 443表示目的端口等于 443。华为设备里 ACL 默认不匹配的报文会被拒绝但策略路由里 ACL 只做匹配用不匹配的报文继续走路由表不会丢。3.2 策略路由节点与 apply 动作策略路由由多个 node 组成每个 node 有if-match和apply。匹配顺序按 node 编号从小到大匹配到就执行 apply不再继续匹配后面的 node。如果所有 node 都没匹配上报文回到正常路由表转发。policy-based-route PBR_OFFICE permit node 10 if-match acl 3001 apply ip-address next-hop 202.1.1.2 quit policy-based-route PBR_OFFICE permit node 20 if-match acl 3002 apply ip-address next-hop 202.2.2.2 quit policy-based-route PBR_OFFICE permit node 30 if-match acl 3003 apply output-interface GigabitEthernet0/0/2 quitapply ip-address next-hop指定下一跳 IP适合以太网环境apply output-interface指定出接口适合 PPP 或点到点链路。如果同时写下一跳和出接口以出接口为准。注意下一跳地址必须在该路由器上有可达路由否则策略路由匹配后报文会被丢弃现象是“策略配了但业务不通”。参数说明node编号步长建议 10方便后续插入permit表示匹配后执行 apply没有deny动作因为策略路由不匹配的报文会走正常转发apply ip-address next-hop可以跟多个地址做冗余但华为 AR 上一般只写一个冗余靠路由协议收敛。3.3 接口调用与本地策略策略路由可以在接口入方向调用也可以用ip local policy-based-route对本机产生的报文生效。接口调用影响的是经过该接口的转发流量本地策略影响的是路由器自己发出的报文比如 ping、syslog、BGP 更新。interface GigabitEthernet0/0/1 ip policy-based-route PBR_OFFICE quit ip local policy-based-route PBR_LOCAL接口下调用时只对入方向生效。如果你在出方向配华为 AR 不支持会报错。本地策略一般用于让路由器自身的管理流量走特定出口比如让 SNMP 和 syslog 走专线。配置本地策略要小心如果匹配了 BGP 邻居地址但下一跳写错BGP 邻居关系会直接断这就是热搜词里“华为路由器console密码”之外另一个需要 Console 救场的场景。参数说明ip policy-based-route在接口下只影响该接口入方向ip local policy-based-route是全局命令影响本机所有出方向报文。本地策略优先级高于接口策略但只对本机流量生效。4. 路由策略在 BGP 和 OSPF 里的落地filter-policy 与 route-policy4.1 filter-policy 过滤路由条目filter-policy是最基础的路由过滤工具可以挂在 OSPF、ISIS、BGP 下用 ACL 或前缀列表匹配路由。它只控制路由是否进入路由表或是否发布出去不修改路由属性。ip ip-prefix PF_ALLOW_10 index 10 permit 10.10.0.0 16 ip ip-prefix PF_ALLOW_10 index 20 deny 0.0.0.0 0 less-equal 32 ospf 1 filter-policy ip-prefix PF_ALLOW_10 import quit这段配置让 OSPF 只接收 10.10.0.0/16 的路由其他全部拒绝。ip-prefix的index越小越先匹配permit 10.10.0.0 16允许该网段deny 0.0.0.0 0 less-equal 32拒绝所有其他路由。注意less-equal 32表示掩码长度小于等于 32 的所有路由这是华为设备上常用的兜底拒绝写法。参数说明filter-policy import过滤接收的路由export过滤发布的路由ip-prefix比 ACL 更适合匹配路由因为可以指定掩码范围index步长建议 10方便插入。4.2 route-policy 修改路由属性route-policy比filter-policy更灵活可以在 permit 节点里用apply修改路由的 local-preference、med、community、as-path 等属性。BGP 场景下最常用。ip ip-prefix PF_ISP1 index 10 permit 0.0.0.0 0 route-policy RP_ISP1_IN permit node 10 if-match ip-prefix PF_ISP1 apply local-preference 200 apply community 65001:100 quit route-policy RP_ISP1_IN deny node 100 quit bgp 65001 peer 202.1.1.2 as-number 65002 peer 202.1.1.2 route-policy RP_ISP1_IN import peer 202.1.1.2 route-policy RP_ISP1_IN export quitPF_ISP1匹配所有路由RP_ISP1_IN节点 10 匹配后设置本地优先级 200 和 community 65001:100节点 100 拒绝其他。import方向影响接收的路由export方向影响发布的路由。如果只想影响接收不要配 export否则可能把修改后的属性发给对端导致对端选路异常。参数说明local-preference越大越优先默认 100community是 BGP 团体属性格式为AS:NNdeny node 100是隐式拒绝不写的话默认所有未匹配路由被拒绝但显式写更清晰。route-policy可以同时用于 import 和 export但方向不同效果完全不同配之前先确认要影响的是接收还是发布。4.3 路由策略与策略路由的配合顺序当两者同时存在时报文先经过 PBRPBR 没匹配到再查路由表路由表里的路由又受 Route-Policy 影响。所以如果你用 PBR 把流量指到 ISP1但 Route-Policy 把 ISP1 的路由全部拒绝路由表里没有 ISP1 的明细PBR 的下一跳可能不可达报文照样丢。我一般会先确认路由表里有到达 PBR 下一跳的路由再配 PBR。验证命令是display ip routing-table 202.1.1.2如果有具体路由或默认路由指向该地址PBR 才能正常工作。如果只有默认路由且默认路由本身是被 Route-Policy 过滤后残留的也要确认默认路由的下一跳可达。参数说明display ip routing-table看路由表display ip policy-based-route看 PBR 配置和匹配统计display route-policy看路由策略配置。三个命令配合使用能快速定位是 PBR 没匹配还是路由表没路由。5. 避坑与排查策略路由和路由策略配错后的典型现象5.1 现象策略路由配了但流量还是走默认路由原因ACL 没匹配上或者接口调用方向不对。华为 AR 的ip policy-based-route只在接口入方向生效如果你配在出方向或者配在错误的接口上PBR 不生效。解决用display acl 3000看规则是否有匹配计数用display ip policy-based-route PBR_OFFICE看 node 匹配统计。如果计数为 0检查 ACL 的源地址是否写成了目的地址或者反掩码写错。接口调用用display current-configuration interface GigabitEthernet0/0/1确认ip policy-based-route在正确的接口下。5.2 现象PBR 匹配后业务不通ping 下一跳通但业务断原因apply ip-address next-hop指定的地址不可达或者下一跳设备没有回程路由。PBR 只负责把包送出去不负责回程。如果对端没有到内网源网段的路由回包会丢。解决在路由器上ping 202.1.1.2确认下一跳可达在对端设备上确认有到内网网段的路由。如果对端是 ISP通常只需要默认路由如果是内部防火墙需要放行策略并配置回程路由。另一个常见原因是 NAT 没配PBR 把私网流量送到出口但出口没做 NATISP 直接丢弃。5.3 现象路由策略配了之后 BGP 邻居断了原因route-policy的import或export方向配反或者deny节点把 BGP 邻居的更新全部拒绝。BGP 邻居关系依赖 OPEN 和 KEEPALIVE 报文这些报文不走 route-policy但如果 route-policy 把 BGP 更新全部拒绝邻居关系可能还在但路由全没了。解决先用display bgp peer看邻居状态如果状态是 Established 但路由数为 0检查route-policy的if-match条件是否太严。临时放行所有路由用route-policy RP permit node 10不加if-match确认邻居能学到路由后再逐步加条件。改 BGP 策略前先display current-configuration configuration bgp备份改完用reset bgp软复位不要硬复位。5.4 现象OSPF 引入路由后路由表里有但转发不通原因filter-policy只过滤路由表不过滤转发。如果 OSPF 引入了外部路由但外部路由的下一跳不可达路由表里会有路由但转发失败。解决用display ospf lsdb看外部 LSA用display ip routing-table看路由的下一跳。如果下一跳是引入设备的接口地址确认该地址可达。另一个原因是filter-policy的import和export方向搞反import 影响接收export 影响发布配反了会导致路由该收的没收到不该发的发出去了。5.5 现象策略路由和 NAT 同时配部分流量不通原因PBR 在 NAT 之前执行如果 PBR 把流量指到出口 A但 NAT 只配在出口 B 上流量从 A 出去时没有 NAT私网地址被 ISP 丢弃。解决确认 NAT 配置在 PBR 指向的出接口上或者用 NAT 策略匹配源网段。华为 AR 上可以用nat-policy按源地址选择不同的 NAT 地址池和 PBR 配合使用。配置顺序上先配 PBR 确定出口再在对应出口配 NAT最后用display nat session all看会话是否建立。6. 用 display 和 reset 命令验证策略路由是否真正生效配完策略路由和路由策略最怕的是“看起来配了实际没生效”。我一般用三个命令交叉验证display ip policy-based-route看 PBR 匹配计数display ip routing-table看路由表下一跳display nat session all看会话是否从预期接口出去。# 查看策略路由匹配统计 display ip policy-based-route PBR_OFFICE # 查看路由表中到达 PBR 下一跳的路由 display ip routing-table 202.1.1.2 # 查看 NAT 会话确认流量从哪个接口出去 display nat session all # 查看 ACL 匹配计数 display acl 3001 # 软复位 BGP让路由策略重新生效 reset bgp 65002display ip policy-based-route输出里会显示每个 node 的匹配报文数如果某个 node 计数一直为 0说明 ACL 没匹配上。display nat session all里可以看到源地址、目的地址和出接口如果出接口和 PBR 预期不一致说明 PBR 没生效或者被其他策略覆盖。reset bgp是软复位不断邻居只重新应用策略比重启路由器安全。一个我踩过的坑在 AR 路由器上配了 PBR 之后用display ip policy-based-route看到匹配计数在涨但业务还是不通。后来发现是apply ip-address next-hop写的地址是 ISP 网关但接口下没配arp broadcast enableARP 学不到下一跳 MAC报文被丢弃。加上arp broadcast enable后恢复。这个细节在文档里不显眼但现场很致命。另一个习惯每次改 PBR 或 Route-Policy 之前先display current-configuration保存一份到本地改完用compare configuration对比差异。华为 AR 支持配置回滚但需要提前备份。我一般会在割接窗口前把配置导出到 TFTP出问题直接回滚比逐条删命令快得多。策略路由和路由策略不是玄学但确实需要理解匹配顺序和生效方向。我的习惯是先画流量路径图标出报文从哪个接口进、经过哪些策略、从哪个接口出再动手配。配完用 display 命令验证计数用 ping 和 tracert 验证连通性最后用业务测试确认。希望帮到你。本文还有配套的精品资源点击获取