eNSP实战 | 策略路由 PBR 实现:不同源网段走不同出口

eNSP实战 | 策略路由 PBR 实现:不同源网段走不同出口 一、实验背景为什么要用 PBR普通路由器 / 三层交换机选路只看目的 IP查路由表。当内网只有一个默认出口时无论流量从哪来上网都挤向同一个出口无法 分网段分流。但真实企业里常有这样的需求办公区 / 财务部网段 A→ 走出口路由器R1运营商 A宿舍区 / 访客区网段 B→ 走出口路由器R2运营商 B两个网段之间内网互访 → 不绕出口三层直接转发这种 按源地址选路 的需求普通路由表做不到必须用策略路由 PBRPolicy-Based Routing它可以在原有路由表之外按源地址等条件强制指定下一跳实现 不同来源走不同出口。二、实验拓扑与地址规划表格设备接口IP 地址说明ISP电信 AGE0/0/0202.96.134.133/24模拟运营商外网 ping 目标连 AR1ISP电信 BGE0/0/0202.96.128.68/24模拟运营商外网 ping 目标连 AR2AR1出口 1GE0/0/0202.96.134.1/24连 ISP电信 AAR1出口 1GE0/0/110.254.1.1/24连 SW-CORE1GE0/0/19AR2出口 2GE0/0/0202.96.128.1/24连 ISP电信 BAR2出口 2GE0/0/110.254.1.2/24连 SW-CORE1GE0/0/20SW-CORE1Vlanif1010.0.1.254/24PC1 网关网段 ASW-CORE1Vlanif2010.0.2.254/24PC2 网关网段 BSW-CORE1Vlanif10010.254.1.3/24上行 VLAN100SW-CORE1GE0/0/1、GE0/0/2access VLAN10/20接 PC1、PC2SW-CORE1GE0/0/19、GE0/0/20access VLAN100接 AR1、AR2PC1Ethernet0/0/110.0.1.253/24网关 10.0.1.254VLAN10网段 APC2Ethernet0/0/110.0.2.253/24网关 10.0.2.254VLAN20网段 B实现目标10.0.1.0/24 上网流量 → 下一跳10.254.1.1R110.0.2.0/24 上网流量 → 下一跳10.254.1.2R210.0.1.x ↔ 10.0.2.x 内网互访 → 不重定向交换机三层直接转发三、配置思路PBR 的 MQC 五件套PBR 用的是MQC模块化 QoS 命令行框架记住 5 步就不会乱ACL→ 定义 匹配谁这里按源地址traffic classifier 流分类→ 把 ACL 包成 分类器traffic behavior 流行为→ 定义 做什么重定向下一跳traffic policy 流策略→ 把 分类器↔行为 绑定成一张策略接口入方向应用→ 在网关 VLANIF 上traffic-policy ... inbound一句话记忆ACL 负责 认人behavior 负责 扔哪policy 负责 配对接口负责 在哪生效。四、详细配置步骤以下主体配置全部在核心交换机SW-CORE1 上完成出口路由器只补回程路由Step 7。Step 1核心交换机 SW-CORE1 基础三层互通shellsys sysname SW-CORE1 # # ---- 网段A 网关PC1---- interface Vlanif 10 ip address 10.0.1.254 24 quit # ---- 网段B 网关PC2---- interface Vlanif 20 ip address 10.0.2.254 24 quit # ---- 上行互联 VLAN100接 AR1、AR2---- interface Vlanif 100 ip address 10.254.1.254 24 quit # # ---- 物理口划入 VLAN ---- interface GigabitEthernet0/0/1 port link-type access port default vlan 10 # 接 PC1网段A quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 # 接 PC2网段B quit interface GigabitEthernet0/0/19 port link-type access port default vlan 100 # 接 AR1 quit interface GigabitEthernet0/0/20 port link-type access port default vlan 100 # 接 AR2 quit # # 可选Sw-core1 自身默认路由兜底 ip route-static 0.0.0.0 0.0.0.0 10.254.1.1解析redirect ip-nexthop要求下一跳可达本实验 AR1/AR2 与 S1 同在 10.254.1.0/24属直连所以上行互联先配通PC 的接入 VLAN 也在此一并就绪。Step 2定义 ACL匹配源网段先排除内网shell# ---- 匹配网段A源 10.0.1.0/24 ---- acl number 3001 rule 5 deny ip source 10.0.1.0 0.0.0.255 destination 10.0.0.0 0.0.255.255 rule 10 permit ip source 10.0.1.0 0.0.0.255 quit # ---- 匹配网段B源 10.0.2.0/24 ---- acl number 3002 rule 5 deny ip source 10.0.2.0 0.0.0.255 destination 10.0.0.0 0.0.255.255 rule 10 permit ip source 10.0.2.0 0.0.0.255 quit解析本实验最容易出错的地方重点看3001/3002是高级 ACL3000~3999能同时匹配源和目的地址。0.0.0.255是反掩码0 表示对应位必须相同1 表示任意。/24的反掩码就是0.0.0.255换算公式反掩码 255.255.255.255 − 正掩码。为什么要加 rule 5 deny如果只写permit source 10.0.1.0/24那么网段 A 发往内网10.0.2.x 的包同样 源匹配会被一起重定向到 R1内网互访就会绕行甚至不通。所以先用 deny 把 目的为内网 10.0.0.0/16 的流量排除 ——deny 表示该包不匹配这个分类器、不重定向走正常三层转发剩下的 permit 才是真正要出外网的流量。这是实现 内网互通不走 PBR 的关键。ACL 规则按编号从小到大顺序匹配、先匹配先生效所以 deny 必须放在 permit 前面。10.0.0.0 0.0.255.255表示内网10.0.0.0/16请按你实际内网网段调整。Step 3定义流分类器把 ACL 变成 分类器shell# ---- 分类器 ACL-3001匹配 ACL 3001 的流量 ---- traffic classifier ACL-3001 if-match acl 3001 quit # ---- 分类器 ACL-3002匹配 ACL 3002 的流量 ---- traffic classifier ACL-3002 if-match acl 3002 quit解析if-match acl把上一步的 ACL 引入分类器。这一步特别容易漏——traffic policy里引用的 classifier 必须先用traffic classifier定义否则策略不生效或直接报错。Step 4定义流行为动作 重定向下一跳shell# ---- 网段A 的动作强制下一跳 AR1 ---- traffic behavior PBR-AR1 redirect ip-nexthop 10.254.1.1 quit # ---- 网段B 的动作强制下一跳 AR2 ---- traffic behavior PBR-AR2 redirect ip-nexthop 10.254.1.2 quit解析redirect ip-nexthop是 PBR 的核心动作 —— 命中的报文不再查路由表直接按指定下一跳转发。注意命令是ip-nexthop半角连字符很多手稿会用成全角‑直接复制进 CLI 会报错务必手敲或先转成半角。Step 5定义流策略并绑定shell# ---- 流策略把分类器和行为一一配对 ---- traffic policy PBR-POLICY classifier ACL-3001 behavior PBR-AR1 classifier ACL-3002 behavior PBR-AR2 quit解析报文在策略里从上到下匹配、先匹配先执行。如果两个分类器都不命中例如内网互访流量在 ACL 里已被 deny就回到正常路由表转发—— 这正是 内网互通不走 PBR 的最终落点。Step 6在用户接入的物理接口入方向应用⚠️模拟器版本注意受 eNSP 模拟器版本限制部分交换机型号如 S5700不支持在interface Vlanif三层接口上应用traffic-policy做 PBR实测不生效 / 报错。变通做法把策略应用在用户接入的物理接口access 口入方向效果一致 —— 因为用户流量本来就是从该物理口进入交换机的。shell# ---- 网段A 接入接口入方向应用PC1 上联口 GE0/0/1---- interface GigabitEthernet0/0/1 traffic-policy PBR-POLICY inbound quit # ---- 网段B 接入接口入方向应用PC2 上联口 GE0/0/2---- interface GigabitEthernet0/0/2 traffic-policy PBR-POLICY inbound quit解析方向仍是inboundPBR 只对 从该接口进入 的流量生效正好是用户上网走向。同一张策略PBR-POLICY挂两个物理口互不干扰GE0/0/1 进来的只有网段 A 的包匹配 ACL-3001 → R1GE0/0/2 进来的只有网段 B 的包匹配 ACL-3002 → R2。内网互访逻辑不变PC1 → PC2 进入 GE0/0/1 后ACL-3001 的 rule 5 已 deny 内网目的、ACL-3002 源地址又不匹配故不重定向走交换机三层正常转发 ——内网互通不走 PBR 依然成立。若换到支持的环境真实设备或更高版本模拟器仍可改回interface Vlanif 10 / 20上traffic-policy PBR-POLICY inbound两种挂法效果等价。Step 7出口路由器 AR1 / AR2 配置shell# AR1出口1接电信A interface GigabitEthernet0/0/0 ip address 202.96.134.1 255.255.255.0 # 连 ISP电信A quit interface GigabitEthernet0/0/1 ip address 10.254.1.1 255.255.255.0 # 连 SW-CORE1上行 VLAN100 quit ip route-static 10.0.1.0 255.255.255.0 10.254.1.3 # 回程网段A 经 SW-CORE1 ip route-static 0.0.0.0 0.0.0.0 202.96.134.133 # 去外网默认路由 # AR2出口2接电信B interface GigabitEthernet0/0/0 ip address 202.96.128.1 255.255.255.0 # 连 ISP电信B quit interface GigabitEthernet0/0/1 ip address 10.254.1.2 255.255.255.0 # 连 SW-CORE1上行 VLAN100 quit ip route-static 10.0.2.0 255.255.255.0 10.254.1.3 # 回程网段B 经 SW-CORE1 ip route-static 0.0.0.0 0.0.0.0 202.96.128.68 # 去外网默认路由解析PBR 只管去程回程必须由出口路由器静态路由指回 S110.254.1.3否则 能出去、回不来。默认路由是去外网目标电信侧 202.96.x.x 为直连网段配上是为更真实、也覆盖其它外网目标。Step 8运营商 ISP 模拟设备配置验证 ping 外网必需shell# ISP电信A模拟运营商 sysname ISP-TELECOM-A interface GigabitEthernet0/0/0 ip address 202.96.134.133 255.255.255.0 # 外网地址ping 目标连 AR1 quit ip route-static 0.0.0.0 0.0.0.0 202.96.134.1 # 回程默认路由指回 AR1 # ISP电信B模拟运营商 sysname ISP-TELECOM-B interface GigabitEthernet0/0/0 ip address 202.96.128.68 255.255.255.0 # 外网地址ping 目标连 AR2 quit ip route-static 0.0.0.0 0.0.0.0 202.96.128.1 # 回程默认路由指回 AR2解析eNSP 里没有真实互联网ISP 模拟设备必须自己配互联接口 IP把外网目标地址配在接口上、回程路由默认路由指回对应出口路由器否则 ping 外网不通。想再模拟 8.8.8.8 可在 ISP 上加 LoopBackinterface LoopBack 0/ip address 8.8.8.8 255.255.255.255。五、验证一步步确认 PBR 生效1. 查看配置是否正确注意MQC 相关 display 命令必须带user-definedshelldisplay acl all # 查看 ACL display traffic classifier user-defined # 查看自定义流分类器必须带 user-defined display traffic behavior user-defined # 查看自定义流行为必须带 user-defined display traffic policy user-defined # 查看自定义流策略 display traffic-policy applied-record # 查看策略应用在哪个接口/方向此命令无需带参数2. 功能验证核心在 网段 A 的 PC1 上shellping 202.96.134.133 # 上网能通 tracert 202.96.134.133 # 第一跳应显示 10.254.1.1AR1→ 证明走了 AR1 出口在 网段 B 的 PC2 上shellping 202.96.128.68 # 上网能通 tracert 202.96.128.68 # 第一跳应显示 10.254.1.2AR2→ 证明走了 AR2 出口3. 内网互通验证shell# 在 PC1A 上 ping 网段B 的 PC2 ping 10.0.2.253能通且不经过任何出口路由器—— 说明内网流量没被重定向走了正常三层转发。4. 查看 PBR 匹配统计进阶shelldisplay traffic policy statistics interface Vlanif 10 inbound # 网段A 重定向计数 display traffic policy statistics interface Vlanif 20 inbound # 网段B 重定向计数小技巧被重定向的流量不查路由表可以对照display ip routing-table理解 —— 去往 8.8.8.8 的包明明命中默认路由却被 PBR 改道了这就是策略路由 劫持 路由表选路的证明。六、关键点与避坑总结表格序号坑点正确做法1反掩码算错反掩码 255.255.255.255 − 正掩码/24 → 0.0.0.2552网段重叠分楼层各用 /24避免0.0.3.255这类重叠反掩码3忘了定义 classifierpolicy 里引用的分类器必须先traffic classifier定义4纯源匹配导致内网被重定向ACL 里先用 deny 排除内网目的网段5eNSP 不支持在 VLANIF 上应用 PBR改在用户接入物理接口access 口inbound应用效果相同6应用方向搞反一定是inbound入方向7下一跳不可达redirect 的下一跳必须可路由最好直连先配好互联8忘配回程路由只配去程上网会 有去无回9display 命令不带参数报 Incompletetraffic classifier/behavior/policy后必须带user-defined10ISP 模拟设备不配置互联 IP 回程默认路由必配否则 ping 外网不通11命令字符复制出错ip-nexthop必须是半角连字符别用全角七、小结一句话总结本实验用 ACL 认来源用 redirect 换出口内网目的提前 deny回程路由别忘配。掌握 MQC 五件套ACL → classifier → behavior → policy → inbound 应用策略路由就能灵活实现 按源分流 按应用分流 等各种选路需求。