华为路由器路由策略与策略路由:一字之差,配错方向全断

发布时间:2026/10/30 12:48:00
华为路由器路由策略与策略路由:一字之差,配错方向全断

简介:这份PDF面向华为网络工程师、HCIP/HCIE备考者及从事企业组网运维的技术人员,系统讲解路由策略与策略路由的核心机制与配置方法,帮助解决路由过滤、属性修改与流量路径规划等实际问题。资源包共1个PDF文件,约761KB,内容紧凑,便于随身查阅与打印学习。文档从路由策略的三大功能切入,涵盖控制路由接收与发布、控制路由引入、设置特定路由属性,并逐一剖析ACL、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器及RD属性过滤器六种匹配工具的适用场景与匹配模式,同时给出地址前缀列表、AS属性过滤器等具体配置命令示例。目前已有306人学习,适合需要深入理解Route-Policy原理、提升网络流量规划与安全控制能力的中高级读者参考。

1. 华为路由器路由策略和策略路由:一字之差,配错方向全断

很多人第一次在华为 AR 路由器上看到“路由策略”和“策略路由”这两个词,以为是同一个东西的两种叫法。我在一个园区网割接现场就遇到过这种事:同事想用路由策略做流量分流,结果在接口下敲了ip policy-based-route,把管理流量也匹配进去,割接窗口内 SSH 直接掉线,最后靠 Console 口救回来。这两个词只差一个字,但作用点、匹配对象、执行顺序完全不同。路由策略(Route-Policy)是给路由协议用的过滤器,控制哪些路由能进路由表、进来后改什么属性;策略路由(PBR,Policy-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对应/24;destination同理;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 quit

apply 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-policy

4.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 quit

PF_ISP1匹配所有路由,RP_ISP1_IN节点 10 匹配后设置本地优先级 200 和 community 65001:100,节点 100 拒绝其他。import方向影响接收的路由,export方向影响发布的路由。如果只想影响接收,不要配 export,否则可能把修改后的属性发给对端,导致对端选路异常。

参数说明:local-preference越大越优先,默认 100;community是 BGP 团体属性,格式为AS:NN;deny node 100是隐式拒绝,不写的话默认所有未匹配路由被拒绝,但显式写更清晰。route-policy可以同时用于 import 和 export,但方向不同效果完全不同,配之前先确认要影响的是接收还是发布。

4.3 路由策略与策略路由的配合顺序

当两者同时存在时,报文先经过 PBR,PBR 没匹配到再查路由表,路由表里的路由又受 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 把私网流量送到出口,但出口没做 NAT,ISP 直接丢弃。

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 65002

display 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 enable,ARP 学不到下一跳 MAC,报文被丢弃。加上arp broadcast enable后恢复。这个细节在文档里不显眼,但现场很致命。

另一个习惯:每次改 PBR 或 Route-Policy 之前,先display current-configuration保存一份到本地,改完用compare configuration对比差异。华为 AR 支持配置回滚,但需要提前备份。我一般会在割接窗口前把配置导出到 TFTP,出问题直接回滚,比逐条删命令快得多。

策略路由和路由策略不是玄学,但确实需要理解匹配顺序和生效方向。我的习惯是:先画流量路径图,标出报文从哪个接口进、经过哪些策略、从哪个接口出,再动手配。配完用 display 命令验证计数,用 ping 和 tracert 验证连通性,最后用业务测试确认。希望帮到你。

本文还有配套的精品资源,点击获取