1 简介

转自:https://www.h3c.com/cn/d_202404/2103389_30005_0.htm#
[本文档介绍了通过CLI]配置策略路由的方法。

普通报文是根据目的IP地址来查找路由表转发的,策略路由是一种依据用户制定的策略进行路由选择的机制。策略路由可以基于到达报文的源地址、目的地址、IP优先级、协议类型等字段灵活地进行路由选择。

2 配置前提

本文档不严格与具体软、硬件版本对应,如果使用过程中与产品实际情况有差异,请以设备实际情况为准。

本文档中的配置均是在实验室环境下进行的配置和验证,配置前设备的所有参数均采用出厂时的缺省配置。如果您已经对设备进行了配置,为了保证配置效果,请确认现有配置和以下举例中的配置不冲突。

本文假设您已了解策略路由特性。

3 使用限制

配置重定向到下一跳时,不能将IPv4规则重定向到IPv6地址,反之亦然。

4 IPv4策略路由配置举例

4.1 组网需求

图4-1所示,缺省情况下,Router A的接口GigabitEthernet1/0/1上收到的所有访问Server的报文根据路由表转发的下一跳均为10.4.1.2。

现要求在Router A上配置IPv4策略路由,对于访问Server的报文实现如下要求:

(1) 首先匹配接口GigabitEthernet1/0/1上收到的源IP地址为10.2.1.1的报文,将该报文的下一跳重定向到10.5.1.2。

(2) 其次匹配接口GigabitEthernet1/0/1上收到的端口号为80的TCP报文,将该报文的下一跳重定向到10.3.1.2。

图4-1 IPv4策略路由典型配置组网图
20240416_10979823_x_Img_x_png_0_2103389_30005_0.png

4.2 配置思路

为了确保能同时满足对于两种不同类型的报文重定向到不同的下一跳,需要配置两个访问控制列表,一个用于匹配接口GigabitEthernet1/0/1上收到的源IP地址为10.2.1.1的报文,另一个用于匹配接口GigabitEthernet1/0/1上收到的端口号为80的TCP报文,并在策略路由中创建两个节点,分别对匹配上的报文进行重定向。

同一条策略路由中,创建的节点编号越小,优先级越高。为了确保接口GigabitEthernet1/0/1上收到源IP地址为10.2.1.1的端口号为80的TCP报文下一跳能优先被重定向到10.5.1.2,需要在策略路由中使用较小的节点编号(本例中使用0号节点),以提高该策略的优先级。。

4.3 使用版本

本举例适用于H3C Comware平台的中低端、高端和核心路由器。以H3C MSR3610-X1-DP产品的R6749P14版本为示例,具体操作可能因不同产品型号和软件版本而略有差异,请以实际情况为准。

4.4 配置步骤

# 配置接口GigabitEthernet1/0/1的IP地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip address 10.1.2.1 255.255.255.0
[RouterA-GigabitEthernet1/0/1] quit

请参考以上方法配置图4-1中其它接口的IP地址,配置步骤这里省略。

#配置静态路由,保证三条路径都可达,并且缺省下一跳为10.4.1.2。
[RouterA] ip route-static 192.168.1.0 24 10.3.1.2
[RouterA] ip route-static 192.168.1.0 24 10.4.1.2 preference 40
[RouterA] ip route-static 192.168.1.0 24 10.5.1.2
# 定义访问控制列表ACL 3005,用于匹配源IP地址为10.2.1.1的报文。
[RouterA] acl number 3005
[RouterA-acl-adv-3005] rule 0 permit ip source 10.2.1.1 0
[RouterA-acl-adv-3005] quit
# 定义访问控制列表ACL 3006,用于匹配端口号为80的TCP报文。
[RouterA] acl number 3006
[RouterA-acl-adv-3006] rule 0 permit tcp destination-port eq 80
[RouterA-acl-adv-3006] quit
# 创建策略路由pbr1的0号节点,将匹配ACL 3005的报文下一跳重定向到10.5.1.2。
[RouterA] policy-based-route pbr1 permit node 0
[RouterA-pbr-pbr1-0] if-match acl 3005
[RouterA-pbr-pbr1-0] apply next-hop 10.5.1.2
[RouterA-pbr-pbr1-0] quit
# 创建策略路由pbr1的1号节点,将匹配ACL 3006的报文下一跳重定向到10.3.1.2。
[RouterA] policy-based-route pbr1 permit node 1
[RouterA-pbr-pbr1-1] if-match acl 3006
[RouterA-pbr-pbr1-1] apply next-hop 10.3.1.2
[RouterA-pbr-pbr1-1] quit
# 在Router A的接口GigabitEthernet1/0/1上应用策略。
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip policy-based-route pbr1
[RouterA-GigabitEthernet1/0/1] quit

4.5 验证配置

# 通过display ip policy-based-route命令可以查看到当前策略路由配置已经配置成功:
[RouterA] display ip policy-based-route policy pbr1
Policy name: pbr1
  node 0 permit:
​    if-match acl 3005
​    apply next-hop 10.5.1.2
  node 1 permit:
​    if-match acl 3006
​    apply next-hop 10.3.1.2

通过tracert命令查看以下报文的转发路径(使用Tracert功能需要在中间设备上开启ICMP超时报文发送功能,在目的端开启ICMP目的不可达报文发送功能):

  • 源IP为10.1.1.1的非端口号为80的TCP报文,重定向到10.4.1.2进行转发。

    <Router> tracert -a 10.1.1.1 192.168.1.1
    traceroute to 192.168.1.1 (192.168.1.1) from 10.1.1.1, 30 hops at most, 40 bytes
    each packet, press CTRL_C to break
    1  10.1.2.1 (10.1.2.1)  2.178 ms  1.364 ms  1.058 ms
    2  10.4.1.2 (10.4.1.2)  1.548 ms  1.248 ms  1.112 ms
    3  192.168.1.1 (192.168.1.1)  1.594 ms  1.321 ms  1.093 ms
  • 源IP为10.2.1.1的报文,重定向到10.5.1.2进行转发。

    <Router> tracert -a 10.2.1.1 192.168.1.1
    traceroute to 192.168.1.1 (192.168.1.1) from 10.2.1.1, 30 hops at most, 40 bytes
    each packet, press CTRL_C to break
    1  10.1.2.1 (10.1.2.1)  1.721 ms  1.226 ms  1.050 ms
    2  10.5.1.2 (10.5.1.2)  4.494 ms  1.385 ms  1.170 ms
    3  192.168.1.1 (192.168.1.1)  1.448 ms  1.304 ms  1.093 ms

4.6 配置文件

#
policy-based-route pbr1 permit node 0
 if-match acl 3005
 apply next-hop 10.5.1.2
#
policy-based-route pbr1 permit node 1
 if-match acl 3006
 apply next-hop 10.3.1.2
#
interface GigabitEthernet1/0/1
port link-mode route
 ip address 10.1.2.1 255.255.255.0
 ip policy-based-route pbr1
#
interface GigabitEthernet1/0/2
port link-mode route
 ip address 10.3.1.1 255.255.255.0
#
interface GigabitEthernet1/0/3
port link-mode route
 ip address 10.4.1.1 255.255.255.0
#
interface GigabitEthernet1/0/4
port link-mode route
 ip address 10.5.1.1 255.255.255.0
#
 ip route-static 192.168.1.0 24 10.3.1.2
 ip route-static 192.168.1.0 24 10.4.1.2 preference 40
 ip route-static 192.168.1.0 24 10.5.1.2
#
acl number 3005
 rule 0 permit ip source 10.2.1.1 0
#
acl number 3006
 rule 0 permit tcp destination-port eq 80
#

5 IPv6策略路由配置举例

5.1 组网需求

图5-1所示缺省情况下,Router A的接口GigabitEthernet1/0/1上收到的所有访问Server的报文根据路由表转发的下一跳均为2004::2。

现要求在Router A上配置IPv6策略路由,对于访问Server的报文实现如下要求:

(1) 首先匹配接口GigabitEthernet1/0/1上收到的源IPv6地址为2002::1的报文,将该报文的下一跳重定向到2005::2。

(2) 其次匹配接口GigabitEthernet1/0/1上收到的端口号为80的TCP报文,将该报文的下一跳重定向到2003::2。

图5-1 IPv6策略路由典型配置组网图

20240416_10979824_x_Img_x_png_1_2103389_30005_0.png

5.2 配置思路

为了确保能同时满足对于两种不同类型的报文重定向到不同的下一跳,需要配置两个访问控制列表,一个用于匹配接口GigabitEthernet1/0/1上收到的源IPv6地址为2002::1的报文,另一个用于匹配接口GigabitEthernet1/0/1上收到的端口号为80的TCP报文,并在策略路由中创建两个节点,分别对匹配上的报文进行重定向。

同一条策略路由中,创建的节点编号越小,优先级越高。为了确保接口GigabitEthernet1/0/1上收到源IPv6地址为2002::1的端口号为80的TCP报文下一跳能优先被重定向到2005::2,需要在策略路由中配置该策略使用较小的节点编号(本例中使用0号节点,另一策略使用1号节点)。

5.3 使用版本

本举例适用于H3C Comware V7平台的中低端、高端和核心路由器。以H3C MSR3610-X1-DP产品的R6749P14版本为示例,具体操作可能因不同产品型号和软件版本而略有差异,请以实际情况为准。

5.4 配置步骤

# 配置接口GigabitEthernet1/0/1的IPv6地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ipv6 address 2007::1 64
[RouterA-GigabitEthernet1/0/1] quit
# 请参考以上方法配置图5-1中其它接口的IPv6地址,配置步骤这里省略。
# 配置静态路由,保证三条路径都可达,并且缺省下一跳为2004::2/64。
[RouterA] ipv6 route-static 3001:: 64 2003::2
[RouterA] ipv6 route-static 3001:: 64 2004::2 preference 40
[RouterA] ipv6 route-static 3001:: 64 2005::2
# 定义IPv6访问控制列表IPv6 ACL 3005,用于匹配源IPv6地址为2002::1的报文。
[RouterA] acl ipv6 number 3005
[RouterA-acl6-adv-3005] rule 0 permit ipv6 source 2002::1/128
[RouterA-acl6-adv-3005] quit
# 定义IPv6访问控制列表IPv6 ACL 3006,用于匹配GigabitEthernet1/0/1端口上收到的端口号为80的TCP报文。
[RouterA] acl ipv6 number 3006
[RouterA-acl6-adv-3006] rule 0 permit tcp destination-port eq 80
[RouterA-acl6-adv-3006] quit
# 创建IPv6策略路由pbr1的0号节点,将匹配IPv6 ACL 3005的报文下一跳重定向到2005::2。
[RouterA] ipv6 policy-based-route pbr1 permit node 0
[RouterA-pbr6-pbr1-0] if-match acl 3005
[RouterA-pbr6-pbr1-0] apply next-hop 2005::2
[RouterA-pbr6-pbr1-0] quit
# 创建IPv6策略路由pbr1的1号节点,将匹配IPv6 ACL 3006的报文下一跳重定向到2003::2。
[RouterA] ipv6 policy-based-route pbr1 permit node 1
[RouterA-pbr6-pbr1-1] if-match acl 3006
[RouterA-pbr6-pbr1-1] apply next-hop 2003::2
[RouterA-pbr6-pbr1-1] quit
# 在Router A的接口GigabitEthernet1/0/1上应用策略。
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ipv6 policy-based-route pbr1
[RouterA-GigabitEthernet1/0/1] quit

5.5 验证配置

# 通过display ipv6 policy-based-route可以查看到当前IPv6策略路由配置已经生效:
[RouterA] display ipv6 policy-based-route policy pbr1
Policy name: pbr1
  node 0 permit:
    if-match acl 3005
    apply next-hop 2005::2
  node 1 permit:
    if-match acl 3006
    apply next-hop 2003::2

当Router A收到源IPv6地址为2002::1的报文时,有如下结果:

  • 当2005::2可达时,报文被重定向到2005::2。
  • 当2005::2不可达时,报文会根据普通的路由表转发到下一跳2004::2。

当Router A收到端口号为80的TCP报文时,有如下结果:

  • 当2003::2可达时,报文被重定向到2003::2。
  • 当2003::2不可达时,报文会根据普通的路由表转发到下一跳2004::2。

5.6 配置文件

#
ipv6 policy-based-route pbr1 permit node 0
 if-match acl 3005
 apply next-hop 2005::2
#
ipv6 policy-based-route pbr1 permit node 1
 if-match acl 3006
 apply next-hop 2003::2
#
interface GigabitEthernet1/0/1
port link-mode route
 ipv6 policy-based-route pbr1
 ipv6 address 2007::1/64
#
interface GigabitEthernet1/0/2
port link-mode route
 ipv6 address 2003::1 64
#
interface GigabitEthernet1/0/3
port link-mode route
 ipv6 address 2004::1 64
#
interface GigabitEthernet1/0/4
port link-mode route
 ipv6 address 2005::1 64
#
 ipv6 route-static 3001:: 64 2003::2
 ipv6 route-static 3001:: 64 2004::2 preference 40
 ipv6 route-static 3001:: 64 2005::2
#
acl ipv6 number 3005
 rule 0 permit ipv6 source 2002::1/128
#
 acl ipv6 number 3006
 rule 0 permit tcp destination-port eq 80
#

6 相关资料

  • 《H3C MSR 系列路由器 配置指导(V7)》中的“三层技术-IP路由配置指导”

  • 《H3C MSR 系列路由器 命令参考(V7)》中的“三层技术-IP路由命令参考”