云计算百科
云计算领域专业知识百科平台

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

一、实验背景:为什么要用 PBR

普通路由器 / 三层交换机选路只看目的 IP(查路由表)。当内网只有一个默认出口时,无论流量从哪来,上网都挤向同一个出口,无法 "分网段分流"。

但真实企业里常有这样的需求:

  • 办公区 / 财务部(网段 A)→ 走出口路由器 R1(运营商 A)
  • 宿舍区 / 访客区(网段 B)→ 走出口路由器 R2(运营商 B)
  • 两个网段之间内网互访 → 不绕出口,三层直接转发

这种 "按源地址选路" 的需求,普通路由表做不到,必须用策略路由 PBR(Policy-Based Routing):它可以在原有路由表之外,按源地址等条件强制指定下一跳,实现 "不同来源走不同出口"。

二、实验拓扑与地址规划

表格

设备接口IP 地址说明
ISP(电信 A) GE0/0/0 202.96.134.133/24 模拟运营商,外网 ping 目标,连 AR1
ISP(电信 B) GE0/0/0 202.96.128.68/24 模拟运营商,外网 ping 目标,连 AR2
AR1(出口 1) GE0/0/0 202.96.134.1/24 连 ISP(电信 A)
AR1(出口 1) GE0/0/1 10.254.1.1/24 连 SW-CORE1(GE0/0/19)
AR2(出口 2) GE0/0/0 202.96.128.1/24 连 ISP(电信 B)
AR2(出口 2) GE0/0/1 10.254.1.2/24 连 SW-CORE1(GE0/0/20)
SW-CORE1 Vlanif10 10.0.1.254/24 PC1 网关(网段 A)
SW-CORE1 Vlanif20 10.0.2.254/24 PC2 网关(网段 B)
SW-CORE1 Vlanif100 10.254.1.3/24 上行 VLAN100
SW-CORE1 GE0/0/1、GE0/0/2 access VLAN10/20 接 PC1、PC2
SW-CORE1 GE0/0/19、GE0/0/20 access VLAN100 接 AR1、AR2
PC1 Ethernet0/0/1 10.0.1.253/24,网关 10.0.1.254 VLAN10(网段 A)
PC2 Ethernet0/0/1 10.0.2.253/24,网关 10.0.2.254 VLAN20(网段 B)

实现目标:

  • 10.0.1.0/24 上网流量 → 下一跳 10.254.1.1(R1)
  • 10.0.2.0/24 上网流量 → 下一跳 10.254.1.2(R2)
  • 10.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 基础三层互通

    shell

    sys
    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 是高级 ACL(3000~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

    解析:

    • 方向仍是 inbound:PBR 只对 "从该接口进入" 的流量生效,正好是用户上网走向。
    • 同一张策略 PBR-POLICY 挂两个物理口互不干扰:GE0/0/1 进来的只有网段 A 的包(匹配 ACL-3001 → R1),GE0/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 只管去程;回程必须由出口路由器静态路由指回 S1(10.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 上加 LoopBack:interface LoopBack 0 / ip address 8.8.8.8 255.255.255.255。

    五、验证(一步步确认 PBR 生效)

    1. 查看配置是否正确(注意:MQC 相关 display 命令必须带 user-defined)

    shell

    display 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 上:

    shell

    ping 202.96.134.133 # 上网能通
    tracert 202.96.134.133 # 第一跳应显示 10.254.1.1(AR1)→ 证明走了 AR1 出口

    在 网段 B 的 PC2 上:

    shell

    ping 202.96.128.68 # 上网能通
    tracert 202.96.128.68 # 第一跳应显示 10.254.1.2(AR2)→ 证明走了 AR2 出口

    3. 内网互通验证

    shell

    # 在 PC1A 上 ping 网段B 的 PC2
    ping 10.0.2.253

    能通,且不经过任何出口路由器—— 说明内网流量没被重定向,走了正常三层转发。

    4. 查看 PBR 匹配统计(进阶)

    shell

    display 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.255
    2 网段重叠 分楼层各用 /24,避免 0.0.3.255 这类重叠反掩码
    3 忘了定义 classifier policy 里引用的分类器必须先 traffic classifier 定义
    4 纯源匹配导致内网被重定向 ACL 里先用 deny 排除内网目的网段
    5 eNSP 不支持在 VLANIF 上应用 PBR 改在用户接入物理接口(access 口)inbound 应用,效果相同
    6 应用方向搞反 一定是 inbound(入方向)
    7 下一跳不可达 redirect 的下一跳必须可路由(最好直连),先配好互联
    8 忘配回程路由 只配去程,上网会 "有去无回"
    9 display 命令不带参数报 Incomplete traffic classifier/behavior/policy 后必须带 user-defined
    10 ISP 模拟设备不配置 互联 IP + 回程默认路由必配,否则 ping 外网不通
    11 命令字符复制出错 ip-nexthop 必须是半角连字符,别用全角

    七、小结

    一句话总结本实验:用 ACL 认来源,用 redirect 换出口,内网目的提前 deny,回程路由别忘配。 掌握 MQC 五件套(ACL → classifier → behavior → policy → inbound 应用),策略路由就能灵活实现 "按源分流"" 按应用分流 " 等各种选路需求。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » eNSP实战 | 策略路由 PBR 实现:不同源网段走不同出口
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!