资讯动态

华为eNSP策略路由实验:基于源地址的分流配置与避坑指南

发布时间:2026/10/21 5:08:24 来源:尧图企业网站定制
1. 策略路由到底解决的是什么问题1.1 从一个真实场景说起很多刚接触网络设备的朋友第一次听到策略路由这四个字脑子里冒出来的第一个念头往往是路由不就是查表转发吗还有什么策略不策略的这个疑问非常正常因为常规的路由转发确实是目的地址决定一切——数据包要去哪里就查路由表里哪条最匹配然后从对应接口丢出去。整个过程是单向的、被动的设备本身没有任何主观意愿。但现实网络里事情远没有这么简单。我举个特别常见的例子某公司有两条出口链路一条是高速专线一条是普通宽带。老板的要求是——财务部门的流量必须走专线因为涉及资金数据要稳而研发部门下载大文件、看在线视频的流量走普通宽带就行省成本。这时候你如果只用普通路由问题就来了普通路由表里只能有一条默认路由指向某个出口或者靠目的地址区分可财务和研发访问的可能是同一个外部地址目的地址完全一样你怎么区分答案就是策略路由。它让设备不再只看目的地址这一个维度而是可以综合源地址、源接口、协议类型、报文大小、时间等条件人为地指定什么样的流量走什么样的路。说白了普通路由是看目的地选路策略路由是看人下菜碟。1.2 策略路由和普通路由的本质区别我把两者的核心差异整理成一张表方便你一眼看明白对比维度普通路由目的地址路由策略路由PBR选路依据仅目的IP地址源IP、源接口、协议、端口、报文长度等查找顺序先查路由表再转发先匹配策略命中后按策略转发优先级低于策略路由高于普通路由典型用途常规互联互通分流、负载、特定业务保障配置位置路由表策略节点Policy-Based Route这里有个特别关键的顺序问题很多人栽跟头就栽在这策略路由的优先级高于普通路由。也就是说一个数据包进来设备会先看有没有匹配的策略路由如果命中了就按策略走根本不去查普通路由表只有没命中任何策略才回退到普通路由转发。这个先策略后路由的顺序是理解整个机制的地基。1.3 为什么要在eNSP里练策略路由eNSP是华为官方出的网络模拟器全称Enterprise Network Simulation Platform。它最大的好处是能在一台普通电脑上虚拟出路由器、交换机、防火墙等一整套设备随便你怎么折腾配错了大不了重启不用担心把真设备搞挂。对于策略路由这种配置逻辑绕、验证步骤多的技术点来说模拟器简直是练手神器。我个人的建议是策略路由这东西光看文档是学不会的必须自己动手配一遍、抓一次包、看一次路由表才能真正理解它先于路由表生效这个特性。下面我就带着你从零搭一个能跑通策略路由的实验环境把每个环节掰开揉碎讲清楚。2. 实验环境搭建与基础配置2.1 拓扑设计与设备选型先明确我们要做什么。我设计一个最经典也最能说明问题的拓扑三台路由器R1作为核心出口设备R2和R3分别模拟两条不同的出口链路R1后面挂一个模拟内网用户的PC。具体连接关系是这样的PC1模拟财务部门网段192.168.10.0/24连接到R1的GE0/0/0接口PC2模拟研发部门网段192.168.20.0/24连接到R1的GE0/0/1接口R1的GE0/0/2接口连接R2模拟高速专线出口R1的GE0/0/3接口连接R3模拟普通宽带出口R2和R3各自再连一个模拟外网的设备或者直接用一个Loopback模拟外部目标选这个拓扑的理由很直接它把两个源网段、两个出口这个策略路由最核心的分流场景完整呈现出来了。财务走R2研发走R3目标都是同一个外部地址靠普通路由根本没法区分只能靠策略路由。在eNSP里搭建的时候路由器我一般选AR2220这款型号功能全、支持的特性多策略路由相关的命令都能跑。PC用eNSP自带的PC就行配置简单。2.2 IP地址规划与接口配置地址规划这块我建议一开始就做清楚不然后面排查问题会非常痛苦。我的规划如下设备接口IP地址说明R1GE0/0/0192.168.10.1/24财务网关R1GE0/0/1192.168.20.1/24研发网关R1GE0/0/210.0.12.1/24连R2R1GE0/0/310.0.13.1/24连R3R2GE0/0/010.0.12.2/24连R1R2Loopback08.8.8.8/32模拟外部目标R3GE0/0/010.0.13.2/24连R1R3Loopback08.8.8.8/32模拟外部目标注意这里我故意让R2和R3的Loopback地址都是8.8.8.8就是为了制造目的地址相同、必须靠源地址区分的场景。如果两个出口的目标地址不一样那普通路由就能搞定就体现不出策略路由的价值了。R1的基础配置命令如下system-view sysname R1 interface GigabitEthernet0/0/0 ip address 192.168.10.1 255.255.255.0 interface GigabitEthernet0/0/1 ip address 192.168.20.1 255.255.255.0 interface GigabitEthernet0/0/2 ip address 10.0.12.1 255.255.255.0 interface GigabitEthernet0/0/3 ip address 10.0.13.1 255.255.255.0R2和R3的配置类似配好接口地址和Loopback即可。这里有个小细节Loopback接口默认是up的配完地址就能用非常适合用来模拟稳定的外部目标。2.3 先跑通普通路由建立对照基线在配策略路由之前我强烈建议你先把普通路由配通让PC能ping通8.8.8.8。这一步的意义在于建立一个对照组——你能看到没有策略路由时流量是怎么走的然后再加策略对比效果。在R1上配两条静态路由ip route-static 8.8.8.8 32 10.0.12.2 ip route-static 8.8.8.8 32 10.0.13.2这里你会发现一个问题两条路由的目的地址和掩码完全一样设备只会选其中一条默认选先配的或者根据优先级另一条等于摆设。这就是普通路由的局限——它没法根据源地址做区分。你可以在PC1上ping 8.8.8.8然后在R1上用display ip routing-table 8.8.8.8看看到底走了哪条。提示如果两条静态路由完全等价设备可能会做负载分担但这是随机的不是按部门的财务的流量可能跑到普通宽带上这恰恰是我们要避免的。3. 策略路由的核心配置与实现3.1 策略路由的三大组成要素华为设备上的策略路由核心是三个东西配合ACL访问控制列表、流分类traffic classifier、流行为traffic behavior最后用**流策略traffic policy**把它们串起来再应用到接口上。这套组合拳叫MQCModular QoS Command-Line Interface是华为设备做流分类和策略处理的通用框架。我用大白话解释一下这三个角色的分工ACL负责认人也就是定义什么样的流量需要被特殊处理。比如源地址是192.168.10.0/24的流量。流分类负责贴标签把ACL匹配到的流量归为一类起个名字方便引用。流行为负责下指令告诉设备这类流量该怎么处理比如重定向到某个下一跳。流策略负责拉郎配把流分类和流行为绑在一起形成一条完整规则。这个框架的好处是灵活你可以定义多个分类、多个行为自由组合。理解了这套逻辑后面配什么策略都是换汤不换药。3.2 用ACL定义需要分流的流量第一步我们先定义财务部门的流量。在R1上创建一个高级ACL编号3000以上是高级ACL可以匹配源地址、目的地址、协议等acl number 3000 rule 5 permit ip source 192.168.10.0 0.0.0.255 destination 8.8.8.8 0这条规则的意思是允许源地址在192.168.10.0/24网段、目的地址是8.8.8.8的IP流量。反掩码0.0.0.255对应/240对应/32这个换算关系要记牢。同理研发部门的流量也定义一个ACLacl number 3001 rule 5 permit ip source 192.168.20.0 0.0.0.255 destination 8.8.8.8 0这里有个经验之谈ACL的rule编号我习惯从5开始每次加10这样以后要在中间插规则的时候有空间不用重新编号。这个习惯在规则多了以后能省不少事。3.3 配置流分类和流行为接下来定义流分类把ACL匹配的流量归类traffic classifier caiwu operator or if-match acl 3000 traffic classifier yanfa operator or if-match acl 3001operator or表示分类内多条匹配规则之间是或的关系只要命中一条就算匹配。这里每个分类只有一条规则用or还是and都一样但养成写清楚的习惯没坏处。然后定义流行为指定流量该怎么走。策略路由的流行为用redirect关键字traffic behavior to_R2 redirect ip-nexthop 10.0.12.2 traffic behavior to_R3 redirect ip-nexthop 10.0.13.2redirect ip-nexthop的意思是把匹配的流量强制重定向到指定的下一跳地址。注意这里是下一跳不是出接口因为指定下一跳更精确设备会自动递归查找到达这个下一跳的出接口。注意redirect后面还可以跟interface参数指定出接口但在以太网这种多路访问环境里指定下一跳比指定接口更可靠因为接口可能连了多个邻居设备不知道该把包发给谁。3.4 绑定流策略并应用到接口最后一步把分类和行为绑成流策略应用到R1的入接口上traffic policy pbr_policy classifier caiwu behavior to_R2 classifier yanfa behavior to_R3 interface GigabitEthernet0/0/0 traffic-policy pbr_policy inbound interface GigabitEthernet0/0/1 traffic-policy pbr_policy inbound这里有个极其关键的细节策略路由必须应用在流量的入接口上。为什么因为策略路由是在数据包进入设备、还没查路由表之前就要做决策的。如果你应用在出接口包都已经查完路由准备发出去了再改就来不及了。这个入接口的原则是新手最容易搞错的地方我见过太多人配了半天没效果最后发现是应用方向搞反了。另外同一个流策略可以应用到多个接口我这里把财务和研发两个接口都应用了同一个策略因为策略里已经用ACL区分了不同源网段所以一个策略就够了。3.5 验证策略路由是否生效配置完成后验证是必不可少的环节。我一般分三步走第一步在PC1财务上ping 8.8.8.8然后在R1上抓包或者看接口计数确认流量走了GE0/0/2R2方向。第二步在PC2研发上ping 8.8.8.8确认流量走了GE0/0/3R3方向。第三步用display traffic policy statistics interface GigabitEthernet0/0/0 inbound查看策略命中计数这个命令能直接告诉你有多少包命中了策略非常直观。如果PC1和PC2的流量分别走了不同的出口说明策略路由生效了。这时候你再去display ip routing-table 8.8.8.8看会发现路由表里可能只有一条路由但实际转发却分了两条路——这正是策略路由绕过路由表的体现。4. 常见问题排查与实战避坑4.1 策略配了但完全不生效这是最高频的问题我把它拆成几个排查方向现象可能原因排查方法策略完全不命中应用在了出接口检查traffic-policy是否配在inbound策略完全不命中ACL没匹配上用display acl确认规则和计数部分流量不生效ACL反掩码写错核对通配符掩码换算重定向后不通下一跳不可达ping下一跳地址确认连通性重定向后不通缺少回程路由检查对端是否有回包路由我重点说说应用在出接口这个坑。很多人直觉上觉得我要控制流量从哪个口出去那当然配在出接口这个直觉是错的。策略路由是入方向决策必须配在inbound。你可以这样记包一进门就要决定它去哪等它要出门了再决定就晚了。4.2 ACL匹配不上的隐蔽原因ACL匹配不上除了掩码写错还有一个特别隐蔽的原因ACL规则的方向性。ACL本身不区分方向但你在流分类里引用它的时候匹配的是报文的源和目的。如果你把源和目的写反了比如把源192.168.10.0写成了目的192.168.10.0那流量从内网出去的时候源是192.168.10.x没错但你的规则要求目的是192.168.10.x自然匹配不上。排查这个问题的技巧是先在ACL规则后面加个计数或者用display acl 3000看每条规则的匹配计数。如果计数一直是0那基本就是匹配条件写错了。4.3 重定向后业务不通的排查思路策略路由配对了、命中了但业务还是不通这种情况通常是去程对了、回程断了。因为策略路由只影响本设备的转发对端设备并不知道你这边做了特殊处理它回包的时候还是按自己的路由表走。举个例子财务流量被重定向到R2R2收到包后要回给192.168.10.0/24网段。如果R2上没有到192.168.10.0/24的路由回包就丢了。解决办法是在R2上配一条回程路由ip route-static 192.168.10.0 255.255.255.0 10.0.12.1同理R3上也要配到192.168.20.0/24的回程路由。这个双向都要通的意识是排查网络问题的基础功。4.4 策略路由与NAT、防火墙的配合实际生产环境里策略路由往往不是单独用的它经常和NAT、防火墙策略一起出现。这里有个顺序问题需要特别注意在华为设备上策略路由的优先级高于NAT。也就是说流量先被策略路由重定向然后再做NAT转换。如果你发现NAT没生效可能是策略路由把流量导到了一个没有配NAT的出口。这个坑我在实际项目里踩过本来想让某段流量走专线并做NAT结果策略路由把它导到了另一个出口那个出口没配NAT导致内网地址直接暴露出去业务直接不通。后来在策略路由的流行为里加了NAT相关配置才解决。所以配策略路由的时候一定要想清楚这条路径上的NAT和防火墙策略是否配套。5. 策略路由的进阶玩法与扩展思路5.1 基于报文长度的分流除了按源地址分流策略路由还能按报文长度分流这个玩法很有意思。比如你可以让大包走带宽大的链路小包走延迟低的链路。ACL里可以用fragment-type或者直接在流分类里匹配报文长度范围。这种玩法适合那种既要带宽又要低延迟的混合业务场景。不过要注意按长度分流会增加设备处理负担因为每个包都要判断长度在高流量环境下要谨慎使用。5.2 策略路由与链路探测联动单纯的策略路由有个致命弱点它不管链路通不通只要配了就硬往那个方向导。如果专线断了财务流量还是往专线导结果就是业务中断。解决办法是让策略路由和链路探测联动比如用NQA网络质量分析探测链路状态链路断了就自动切换策略。这个联动配置稍微复杂一点核心思路是用track关联NQA探测结果然后在流行为里引用track。链路正常时走专线链路故障时自动回退到备用路径。这套机制在生产环境里非常实用是策略路由从能用到好用的关键一步。5.3 策略路由的优先级与匹配顺序当一个接口上应用了多个流策略或者一个流策略里有多个分类时匹配顺序就变得很重要。华为设备的规则是按流策略里分类的配置顺序从上往下匹配命中即停止。所以你要把最精确、最特殊的规则放在前面把通用的、兜底的规则放在后面。这个顺序逻辑和ACL的规则顺序是一样的。我见过有人把所有流量走A的规则放在第一条结果后面所有精细规则都失效了因为第一条就把所有流量都匹配走了。记住策略路由是先到先得不是最精确优先。5.4 从策略路由到策略路由的排错工具链最后分享一套我常用的排错工具链按顺序用下来基本能定位90%的问题display acl all—— 看ACL规则和匹配计数确认流量有没有被识别display traffic classifier user-defined—— 看流分类配置display traffic behavior user-defined—— 看流行为配置display traffic policy user-defined—— 看流策略绑定关系display traffic policy statistics interface xxx inbound—— 看接口上的策略命中统计display ip routing-table—— 确认普通路由表状态在关键接口抓包 —— 最终确认流量实际走向这套流程从规则定义到实际转发逐层验证哪一层断了就查哪一层比盲目改配置高效得多。我个人在实际操作中的体会是策略路由这东西配置本身不难难的是理解它先于路由表生效这个本质以及入接口应用这个方向。把这两点吃透剩下的就是熟练度问题。另外每次配完策略路由一定要用统计命令确认命中情况不要凭感觉觉得应该生效了网络这行眼见为实。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑