DHCP Snooping实验
配置命令
说明:“ip dhcp snooping binding 000f.1fc5.1008 vlan 10 192.168.10.131 int f1/2 expiry 692000”条
目中“expiry”参数为4294967295时表示绑定永不过期。
1、单机交换(DHCP服务器和DHCP客户端位于同一VLAN)
环境:Windows2003 DHCP服务器和客户端都位于Vlan 10;服务器接在F0/1,客户端接在F0/2。
2960交换机相关配置:
说明:
①本例中交换机对于客户端的DHCP请求报文将插入选项82信息,也可以通过配置“no ip dhcp snooping
information option”命令选择不插入选项82信息,两种情况都可以。
②客户端端口推荐配置“spanning-tree portfast”命令,使得该端口不参与生成数计算,节省端口启动时间,
防止可能因为端口启动时间过长导致客户端得不到IP地址。
③开启DHCP监听特性的VLAN并不需要该VLAN的三层接口被创建。
2、单交换机(DHCP服务器和DHCP客户端位于同一VLAN)
环境:Cisco IOS DHCP服务器(2821路由器)和PC客户端都位于Vlan 10;路由器接在F0/1,客户端接在F0/2。
2960交换机相关配置:
2821路由器相关配置:
说明:
①需要注意的是路由器连接到交换机的端口需要配置“ip dhcp relay information trusted”命令,否则客户
端将无法得到IP地址。这是因为交换机配置了(默认情况)“ip dhcp snooping information option”命令,
此时交换机会在客户端发出的DHCP请求报文中插入选项82信息。另一方面由于DHCP服务器(这里指Cisco IOS
DHCP服务器)与客户端处于同一个VLAN中,所以请求实际上并没有经过DHCP中继代理。
②对于Cisco IOS DHCP服务器来说,如果它收到的DHCP请求被插入了选项82信息,那么它会认为这是一个从DHCP
中继代理过来的请求报文,但是它检查了该报文的giaddr字段却发现是0.0.0.0,而不是一个有效的IP地址
(DHCP请求报文中的giaddr字段是该报文经过的第一个DHCP中继代理的IP地址,具体请参考DHCP报文格式),因
此该报文被认为“非法”,所以将被丢弃。可以参考路由器上的DHCP的debug过程。
③Cisco IOS里有一个命令,专门用来处理这类DHCP请求报文“ip dhcp relay information trusted”(接口命
令)或者“ip dhcp relay information trust-all”(全局命令,对所有路由器接口都有效);这两条命令的作
用就是允许被插入了选项82信息,但其giaddr字段为0.0.0.0的DHCP请求报文通过。
④如果交换机不插入选项82信息,即配置了“no ip dhcp snooping information option”命令,那么就不会出
现客户端无法得到IP地址的情况,路由器也不需要配置“ip dhcp relay information trusted”命令。
⑤Windows DHCP服务器则不认为Option 82的值为0.0.0.0的DHCP报文是错误的,所以上一个实例中不论交换机是
否插入选项82信息,客户端总是可以得到IP地址。
3、单交换机(DHCP服务器和DHCP客户端位于不同VLAN)
环境:Cisco IOS DHCP服务器(2821路由器)的IP地址为192.168.2.2,位于Vlan 2;DHCP客户端位于Vlan 10;交换机为3560,路由器接在F0/1,客户端接在F0/2。
3560交换机相关配置:
2821路由器相关配置:
说明:
①本例中的路由器不需要配置“ip dhcp relay information trusted”命令,因为从交换机过来的DHCP请求经
过了中继代理,其报文中的giaddr字段为192.168.10.1,而不是0.0.0.0,是默认正常的DHCP请求报文。
4、多交换机环境(DHCP服务器和DHCP客户端位于不同VLAN)
环境:2611路由器作为DHCP服务器,IP地址为192.168.2.2,位于Vlan 2;PC位于Vlan 10;路由器接在3560的G0/2,PC接2960的F0/1口,两交换机互连口都是G0/1。
3560交换机相关配置:
2960交换机相关配置:
2611路由器相关配置:
说明:
①本例中3560没有开启DHCP监听功能,2960开启了该功能。需要注意的是int vlan 10需要配置“ip dhcp
relay information trusted”命令,理由如同实例2。
5、多交换机(DHCP服务器和DHCP客户端位于同一VLAN)
环境:3560交换机自身作为DHCP服务器;PC1和PC2都位于Vlan 10;PC1接3560的F0/1口,PC2接2960的F0/1口;两交换机互连口都是G0/1。
3560交换机相关配置:
2960交换机相关配置:
说明:
①本例中3560和2960同时开启了DHCP监听功能。从2960过来的DHCP请求报文是已经被插入了选项82信息,如果将
3560的G0/1设置为信任端口,那么插入了82选项的DHCP请求报文是允许通过的,但不会为其建立DHCP监听绑定
表。即3560上只有PC1的绑定条目,而没有PC2的绑定条目。
②如果此时同时部署DAI,IPSG,由于2960不支持这两项功能,对于3560来说,从2960上过来的数据可能存在IP
欺骗和ARP欺骗等***,是不安全的。另一方面,由于3560没有PC2的绑定条目,而DAI和IPSG必须依赖DHCP监
听绑定表。因此如果需要在3560上再部署DAI或者IPSG,就不能将3560的G0/1设置为信任端口。
③但是将3560的G0/1口设置为非信任端口以后,默认情况下,非信任端口将会丢弃收到的插入了82选项的DHCP请
求报文。而从2960过来的DHCP请求报文又正好是被插入了选项82信息的。因此必须配置“ip dhcp
snooping information option allow-untrusted”命令,否则3560将丢弃这些DHCP请求报文,接在2960上的
PC2将得不到IP地址。只有配置了该命令以后,3560才会接收从2960发送的插入了选项82的DHCP报文,并为这
些信息建立绑定条目。
④3560下联的G0/1口由于是非信任端口,默认限速为每秒15个DHCP请求报文,如果2960上的所有PC都同时发起
DHCP请求,可能此端口会被errdisable掉。这里假设2960为24口,因此简单的设置限速为24*15=360。
⑤2960上联的G0/1口必须被配置为信任端口,否则将丢弃从3560过来的DHCP应答报文,PC2将无法得到IP地址。
6、多交换机环境(DHCP服务器和DHCP客户端位于同一VLAN)
环境:4503交换机自身作为DHCP服务器;PC1和PC2都位于Vlan 10;PC1接4503的G2/1口,PC2接3560的F0/1口;两交换机互连口是4503 G1/1 -- 3560 G0/1。
4503交换机相关配置:
3560交换机相关配置:
说明:
①本例中4503和3560同时开启了DHCP监听功能。由于4503的下联口被设置为信任端口,所以从3560过来的DHCP请
求报文即使已经被插入了选项82信息,也允许通过的,但不会为其建立DHCP监听绑定表。所以4503上只有PC1
的绑定条目,而没有PC2的绑定条目。
②作为接入层交换机的3560支持DAI,IPSG,如果同时配置这两项功能,那么有理由相信从3560过来的数据是已
经经过检验的安全数据,因此将4503的下联口设置为信任端口是可行的。另外,4503没有PC2的绑定条目,也
减少了系统运行时所需的内存空间。