策略路由PBR配置实例:基于源地址与应用的流量导向

策略路由(PBR)能够基于源地址、应用等条件灵活控制流量路径。本文通过典型场景,详细讲解PBR的配置步骤、验证方法、常见误区与排错思路,助您实现精细化流量调度。

策略路由PBR配置实例:基于源地址与应用的流量导向
封面图:ZuCDN · ZuCDN 原创

策略路由PBR(Policy-Based Routing)是网络工程师常用的流量调度手段。与传统的基于目的地址的路由不同,PBR 允许我们根据源地址、应用协议、报文大小甚至 DSCP 值等条件,灵活地指定下一跳或出接口。本文将通过三个典型场景,演示如何配置基于源地址和应用的流量导向,并分享一些常见的配置误区和排错思路。

场景一:基于源地址的流量导向

某公司有两条出口链路,一条是电信(202.100.1.1),一条是联通(210.50.1.1)。现在要求研发部门(192.168.10.0/24)的流量走电信出口,而其他部门走联通出口。传统路由无法实现这种基于源地址的策略,而 PBR 可以轻松搞定。

以 Cisco IOS 为例,配置步骤如下:

  1. 定义 route-map,匹配源地址:
    access-list 100 permit ip 192.168.10.0 0.0.0.255 any
    route-map PBR-ROUTE permit 10
     match ip address 100
     set ip next-hop 202.100.1.1
  2. 在接口上应用 route-map:
    interface GigabitEthernet0/0
     ip policy route-map PBR-ROUTE

验证命令:show route-mapshow ip policy 可以查看配置是否生效。此外,可以使用 debug ip policy 查看 PBR 的匹配过程(注意在生产环境慎用 debug)。

华为设备(以 VRP 为例)配置类似:

acl number 3000
 rule 5 permit ip source 192.168.10.0 0.0.0.255 destination any
policy-based-route PBR permit node 10
 if-match acl 3000
 apply next-hop 202.100.1.1
interface GigabitEthernet0/0/0
 ip policy-based-route PBR

场景二:基于应用协议的流量导向

除了源地址,PBR 还可以根据应用协议(如 HTTP、HTTPS、DNS 等)进行分流。例如,将 HTTP 流量导向到出口 A,而 HTTPS 流量导向到出口 B,以实现带宽优化或安全策略。

在 Cisco 设备上,可以通过匹配 TCP 端口号实现:

access-list 101 permit tcp any any eq 80
access-list 102 permit tcp any any eq 443
route-map PBR-APP permit 10
 match ip address 101
 set ip next-hop 202.100.1.1
route-map PBR-APP permit 20
 match ip address 102
 set ip next-hop 210.50.1.1

注意:route-map 中的 permit 语句是顺序匹配的,一旦匹配成功就不再往下执行,因此顺序很重要。

华为设备的配置类似,使用高级 ACL 匹配端口号:

acl number 3001
 rule 5 permit tcp source any destination any destination-port eq 80
acl number 3002
 rule 5 permit tcp source any destination any destination-port eq 443
policy-based-route PBR-APP permit node 10
 if-match acl 3001
 apply next-hop 202.100.1.1
policy-based-route PBR-APP permit node 20
 if-match acl 3002
 apply next-hop 210.50.1.1

场景三:基于 DSCP 值的优先级调度

有时我们希望高优先级的流量(如 VoIP)走低延迟链路,而普通流量走另一条链路。这可以通过匹配 DSCP 值实现。例如,将 DSCP EF 的流量导向到低延迟的 MPLS 链路,其余走 Internet 链路。

Cisco 配置示例:

class-map match-any VOIP
 match ip dscp ef
policy-map PBR-QOS
 class VOIP
   set ip next-hop 10.1.1.1
interface GigabitEthernet0/1
 service-policy input PBR-QOS

注意:这里使用的是基于策略的路由(PBR)的另一种实现方式——基于策略映射(policy-map)的 QOS 策略,它也可以实现类似的功能,但更侧重于 QoS 处理。如果只是简单的下一跳设置,route-map 更直接。

常见误区与排错

在配置 PBR 时,有几个常见的误区需要注意:

  • PBR 只对入站流量生效:PBR 是应用在入站接口上的,只对进入该接口的流量生效。如果流量从其他接口进入,则不会匹配。因此,需要确保 PBR 应用在正确的接口上。
  • 下一跳的可达性:PBR 设置的下一跳必须是路由器已知的直连路由,否则流量会被丢弃。可以使用 show ip route 验证下一跳是否可达。
  • route-map 的匹配顺序:route-map 是顺序匹配的,一旦匹配成功就不在继续。因此,将更具体的条件放在前面。
  • PBR 与路由表的交互:PBR 会覆盖路由表,但如果没有匹配到 PBR 策略,流量仍会按照路由表转发。另外,PBR 不会影响路由器自身产生的流量,只影响转发的流量。

排错思路:首先检查接口是否正确应用了 PBR;其次使用 show route-map 查看匹配计数是否增加;再次使用 debug ip policy 观察匹配过程(注意生产环境慎用);最后确认下一跳是否可达。

总结

策略路由PBR是一种强大的流量调度工具,通过基于源地址、应用协议或 DSCP 值等条件,可以实现精细化的流量导向。在配置时,需要注意 PBR 的作用范围、匹配顺序以及下一跳的可达性。通过本文的实例,希望您能掌握 PBR 的基本配置方法,并能在实际工作中灵活运用。

参考资料

  • OWASP 日志安全速查表:虽然此文章主要关于日志安全,但其中提到“许多系统启用网络设备、操作系统、Web 服务器、邮件服务器和数据库服务器日志,但自定义应用事件日志常常缺失”,这提醒我们,在配置 PBR 时,应记录相关日志以便审计和排错。
  • OpenTelemetry Logs 官方文档:该文档讨论了日志与其他可观测性信号的集成,虽然与 PBR 无直接关系,但强调了日志记录的重要性,可用于监控 PBR 策略的效果。
  • Python Logging 官方文档:虽然这是编程语言日志库的文档,但其中关于日志配置和层次化记录的思想,可以类比到网络设备的日志管理中,以便更好地记录 PBR 的匹配事件。

请注意,以上参考资料并非直接针对 PBR,但其中关于日志记录和可观测性的讨论,对于网络设备配置的审计和监控具有借鉴意义。

延伸阅读