策略路由与DHCP共同使用时客户端不能获取地址的
一、 组网需求
在核心交换机S7506E-S的V5平台下(S7500E在R67XX版本之后,S10500在R12XX版本之后)的同一个三层虚接口下,既配置DHCP SERVER或者DHCP RELAY,同时又通过PBR或QoS做策略路由。希望下连PC能够通过DHCP获取到地址,之后再通过PBR或者QoS做策略路由。
二、 组网图
如图所示,两台S7506E-S和两台MSR36-40分别通过IRF2做堆叠,S7506E-S与MSR36-40通过两条链路互联,保证两者直连的连通性。其中一条链路的互联地址采用2.2.2.0/24网段,另一条链路地址采用3.3.3.0/24网段。MSR36-40上创建一个Lookback 0接口,地址为100.0.0.1,同时配置默认路由指回S7506E-S。
三、 配置步骤:
下文均以DHCP SERVER为例进行分析,实际情况中DHCP RELAY也是一样的。
1、在S7506E-S配置DHCP SERVER:
S7506E-S为终端1和终端2的网关,终端1和终端 2通过DHCP获取地址,S7506E-S做DHCP SERVER。 (配置略)
此时终端正常获取到了地址,在S7506E-S上查看
[H3C]dis dhcp se ip al
Pool utilization: 0.39%
IP address Client-identifier/ Lease expiration Type
Hardware address
172.16.1.2 2c59-e501-a055 Jan 4 2015 12:41:40 Auto:COMMITTED
172.16.2.33 2c59-e501-a01b Jan 4 2015 12:42:20 Auto:COMMITTED
--- total2 entry ---
2、在S7506E-S上配置PBR策略:
#
[H3C]dis acl 3000
Advanced ACL 3000, named -none-, 1 rule,
ACL's step is 5
rule 0 permit ip source 172.16.1.0 0.0.0.255
rule5 permit ip source 172.16.2.0 0.0.0.255
#
[H3C]dis acl 3001
Advanced ACL 3001, named -none-, 1 rule,
ACL's step is 5
rule 0 permit ip source 172.16.2.0 0.0.0.255
#
[H3C]dis policy-based-route test100
policy-based-route : test
Node 10 permit :
if-match acl 3000
apply ip-address next-hop 2.2.2.2 //通过PBR下一跳指向MSR3640-1
#
[H3C]dis policy-based-route test200
policy-based-route : test
Node 10 permit :
if-match acl 3001
apply ip-address next-hop 3.3.3.2 //通过PBR下一跳指向MSR3640-2
#
interface Vlan-interface100
ip policy-based-route test100
#
interface Vlan-interface200
ip policy-based-route test200
#
此时从终端1和终端2上 ping 100.0.0.1。由于在S7506E-S上的路由表中没有到达100.0.0.1的路由,因此互PING能通证明流量匹配了PBR策略。
此时终端1能够获取DHCP地址,且流量在S7506E-S上匹配了PBR策略。但是这是在先获取地址后,再配置PBR策略的情况,此时不涉及DHCP地址的获取。让终端重新获取地址,会发现此时无法正常获取地址。通过在终端上抓包查看,只有DHCP DISCOVER报文,而无任何的回应。
3、修改PBR策略路由
由于PBR策略的下发,会导致172.16.1.0的流量重定向到MSR3640-1上,172.16.2.0的流量重定向到MSR3640-2上,从而S7506E-S无法处理DHCP报文, 因此通过修改PBR的策略,将DHCP 报文单独匹配出来。
#
[H3C]disacl 3002
Advanced ACL 3001, named -none-, 1 rule,
ACL's step is 5
rule 0 permit udp destination-port eq bootps (22 times matched)
#
[H3C]dis policy-based-route test100
policy-based-route : test
Node 0 permit :
if-match acl 3002
Node 10 permit :
if-matchacl 3000
applyip-address next-hop 2.2.2.2
#
[H3C]dis policy-based-route test200
policy-based-route : test
Node 0 permit :
if-match acl 3002
Node 10 permit :
if-match acl 3001
apply ip-address next-hop 3.3.3.2
#
实现的重点是写一条ACL 3003,以匹配目的端口为bootps的DHCP协议报文。可以看到此时终端成功获取了地址,抓包查看报文交互完整。
当然相同的操作也可以通过QoS策略来实现需求,具体配置略。
四、 配置关键点:
1、ACL中的DHCP协议端口号,如果没有bootps,则需要指定UDP端口号为67;
2、由于PBR节点的匹配顺序是从小到大依次匹配,因此需要将匹配DHCP的节点号放在前面,以避免该报文被其他节点所匹配。
3、QoS策略中有不同CB对时,是按照配置顺序,先下发先生效的,匹配一个就不再往下匹配,因此需要将匹配DHCP报文的ACL的CB对放在最前面。
4、DHCP RELAY与DHCP SERVER的配置相同。
2016年06月
本期文章
-
刊首语
-
公司动态
-
行业聚焦
-
产品推荐
-
案例介绍
-
经验共享
-
服务明星
-
培训天地