在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行DHCP的管理。网络管理员:现在用户真是不省心,自己改个IP地址;私接AP、忘关DHCP,还有的下个小黑客程序,就想在你内网里试试。单靠交换机能管吗?测试工程师:能!很多交换机上的小功能都可帮大忙。
一、测试实况
IP与MAC绑定
思科的Catalyst 3560交换机支持DHCP Snooping功能,交换机会监听DHCP的过程,交换机会生成一个IP和MAC地址对应表。思科的交换机更进一步的支持IP source guard和Dynamic ARP Inspection功能,这两个功能任启一个都可以自动的根据DHCP Snooping监听获得的IP和MAC地址对应表,进行绑定,防止私自更改地址。
Dynamic ARP Inspection功能还有一个好处是可以防范在2层网络的中间人攻击(见图4)。
思科在DHCP Snooping上还做了一些非常有益的扩展功能,比如Catalyst 3560交换机可以限制端口通过的DHCP数据包的速率,粒度是pps,这样可以防止对DHCP服务器的进行地址请求的DoS攻击。另外Catalyst 3560交换机还支持DHCP Tracker,在DHCP请求中插入交换机端口的ID,从而限制每个端口申请的IP地址数目,防止黑客程序对DHCP服务器进行目的为耗尽IP地址池的攻击。华硕虽然不能调整速率,但是也会限制DHCP请求的数量。
DHCP(动态主机配置协议)是一种简化主机IP地址配置管理的TCP/IP标准。该标准为DHCP服务器的使用提供了一种有效的方法:即管理网络中客户机IP地址的动态分配以及启用网络上DHCP客户机的其它相关配置信息。
在基于TCP/IP协议的网络中,每台计算机都必须有唯一的IP地址才能访问网络上的资源,网络中计算机之间的通信是通过IP地址来实现的,并且通过IP地址和子网掩码来标识主计算机及其所连接的子网。在局域网中如果计算机的数量比较少,当然可以手动设置其IP地址,但是如果在计算机的数量较多并且划分了多个子网的情况下,为计算机配置IP地址所涉及的管理员工作量和复杂性就会相当繁重,而且容易出错,如在实际使用过程中,我们经常会遇到因IP地址冲突、网关或DNS服务器地址的设置错误导致无法访问网络、机器经常变动位置而不得不频繁地更换IP地址等问题。
DHCP则很好地解决了上述的问题,通过在网络上安装和配置DHCP服务器,启用了DHCP的客户机可在每次启动并加入网络时自动地获得其上网所需的IP地址和相关的配置参数。从而减少了配置管理,提供了安全而可靠的配置。
配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址、子网掩码、缺省网关,以及DNS服务器的地址。DHCP避免了因手工设置IP地址及子网掩码所产生的错误,也避免了把一个IP地址分配给多台主机所造成的地址冲突。降低了IP地址管理员的设置负担,使用DHCP服务器可以大大地缩短配置网络中主机所花费的时间。
但是,随着DHCP服务的广泛应用,也产生了一些问题。首先,DHCP服务允许在一个子网内存在多台DHCP服务器,这就意味着管理员无法保证客户端只能从管理员所设置的DHCP服务器中获取合法的IP地址,而不从一些用户自建的非法DHCP服务器中取得IP地址;其次,在部署DHCP服务的子网中,指定了合法的IP地址、掩码和网关的主机也可以正常地访问网络,而DHCP服务器却仍然会有可能将该地址分配给其他主机,这样就会造成地址冲突,影响IP地址的正常分配。
针对上述问题,本文给出了一个解决方案,即通过使用Cisco提供的DHCP Snooping技术和Dynamic ARP Inspection技术,可以有效地防止以上问题的发生。
这里首先对两种技术做一个简要的介绍,然后将给出一个应用实例加以说明。#p#
二、DHCP Snooping技术
DHCP Snooping是一种通过建立DHCP Snooping Binding数据库,过滤非信任的DHCP消息,从而保证网络安全的特性。DHCP Snooping就像是非信任的主机和DHCP服务器之间的防火墙。通过DHCP Snooping来区分连接到末端客户的非信任接口和连接到DHCP服务器或者其他交换机的受信任接口。
DHCP Snooping Binding数据库包括如下信息:MAC地址、IP地址、租约时间、binding类型、VLAN ID以及来自本地非信任端口的接口信息,但不包含通过受信任端口互相连接的接口信息。在启用了DHCP Snooping的VLAN中,如果交换机收到来自非信任端口的DHCP包,交换机将对目的MAC地址和DHCP客户端的地址进行对比,如果符合则该包可以通过,否则将被丢弃掉。
在下述情况中,DHCP包将同样被丢弃:
l 来自外网或者防火墙的DHCP服务器,包括DHCPOFFER、DHCPACK、DHCPNAK、DHCPLEASEQUERY。
l 来自非信任端口,且目的MAC地址和DHCP客户端的硬件地址不匹配。
l 交换机收到DHCPRELEASE或者DHCPDECLINE的广播信息,其MAC地址包含在DHCP snooping binding 数据库中,但与数据库中的接口信息不匹配
l 通过DHCP中继代理转发的包不包括在内#p#
三、Dynamic ARP Inspection技术
Dynamic ARP inspection是一种验证网络中ARP包的安全特性,可以阻止、记录并丢弃非法IP和MAC地址绑定的ARP包。
Dynamic ARP inspection保证只有合法的ARP请求和响应可以传播。交换机会完成如下工作,截取所有来自非信任端口ARP请求和响应,在更新ARP缓存或传播数据包之前验证所截取的数据包IP-MAC地址绑定是否合法,丢弃非法的ARP包。
前面提到,DHCP Snooping会建立一个包含合法IP-MAC地址绑定信息的数据库,Dynamic ARP inspection基于该数据库检验所截取ARP包的合法性。如果ARP包来自非信任接口,那么只有合法的可以通过。如果来自受信任端口,将可以直接通过。#p#
四、应用实例
我校1#学生公寓,PC拥有数量大约1000台。采用DHCP分配IP地址,拥有4个C类地址,实际可用地址数约1000个。由于楼内经常存在私开的DHCP服务器,导致大量主机无法分配到合法IP地址;另外,由于有相当数量的主机指定IP地址,因此造成了与DHCP分配的IP地址冲突。以上两方面,均造成了该公寓楼大量主机无法正常访问网络。
经过一段时间的分析、实验,我们决定对该公寓楼部署DHCP Snooping和Dynamic ARP Inspection两项技术,以保证网络的正常运行。
该公寓网络设备使用情况如下,接入层为××台Cisco 2950交换机上联至堆叠的4台Cisco 3750,再通过光纤上联至汇聚层的Cisco 3750交换机。同时汇聚层的Cisco 3750交换机还兼做DHCP服务器。
部署过程
首先按如下过程配置DHCP Snooping
- configure terminal
- ip dhcp snooping 在全局模式下启用DHCP Snooping
- ip dhcp snooping vlan 103 在VLAN 103中启用DHCP Snooping
- ip dhcp snooping information option Enable the switch to insert and remove DHCP relay information(option-82 field) in forwarded DHCP request messages to the DHCP server. The default is enabled.
- interface GigabitEthernet1/0/28,进入交换机的第28口
- ip dhcp snooping trust 将第28口设置为受信任端口
- ip dhcp snooping limit rate 500 设置每秒钟处理DHCP数据包上限
- end 退出
完成配置后,可用如下命令观察DHCP Snooping运行状况:
- show ip dhcp snooping
得到如下信息:
- Switch DHCP snooping is enabled
- DHCP snooping is configured on following VLANs:
- 103
- Insertion of option 82 is enabled
- Verification of hwaddr field is enabled
- Interface Trusted Rate limit (pps)
- ------------------------ ------- ----------------
- GigabitEthernet1/0/22 yes unlimited
- GigabitEthernet1/0/24 yes unlimited
- GigabitEthernet1/0/27 yes unlimited
- GigabitEthernet1/0/28 no 500
- show ip dhcp snooping binding,得到如下信息:
- MacAddress IpAddress Lease(sec) Type VLAN Interface
- ------------------ --------------- ---------- -----------
- 00:11:09:11:51:16 210.77.5.201 3209 dhcp-snooping 103 GigabitEth ernet1/0/28
- 00:50:8D:63:5A:05 210.77.6.134 2466 dhcp-snooping 103 GigabitEthernet1/0/28
- 00:E0:4C:A17:80 210.77.4.26 3070 dhcp-snooping 103 GigabitEthernet1/0/28
- 00:0F:EA:A8:BC:22 210.77.5.198 1887 dhcp-snooping 103 GigabitEthernet1/0/28
- 10:E0:8C:50:805 210.77.5.95 3034 dhcp-snooping 103 GigabitEthernet1/0/28
- 00:03:0D:0E:9A:A5 210.77.6.230 3144 dhcp-snooping 103 GigabitEthernet1/0/28
- 00:50:8D:6C:08:9F 210.77.4.17 3012 dhcp-snooping 103 GigabitEthernet1/0/28
- 00:E0:50:00:0B:54 210.77.6.18 3109 dhcp-snooping 103 GigabitEthernet1/0/28
- 00:0F:EA:13:40:54 210.77.7.7 2631 dhcp-snooping 103 GigabitEthernet1/0/28
- 00:E0:4C:45:21:E9 210.77.7.77 2687 dhcp-snooping 103 GigabitEthernet1/0/28
- --More--
接下来配置Dynamic ARP Inspection
- show cdp neighbors 检查交换机之间的连接情况
- Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
- S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
- Device ID Local Intrfce Holdtme Capability Platform Port ID
- ap Gig 1/0/23 149 T AIR-AP1230Fas 0
- hall-3750 Gig 1/0/27 135 S I WS-C3750-2Gig 1/0/1
- #west-3750 Gig 1/0/28 173 S I WS-C3750G-Gig 1/0/25
- configure terminal 进入全局配置模式
- ip arp inspection vlan 103 在VLAN 103上启用Dynamic ARP Inspection
- interface GigabitEthernet1/0/28 进入第28端口
- ip arp inspection trust 将端口设置为受信任端口
- The switch does not check ARP packets that it receives from the other switch on the trusted interface. It simply forwards the packets.
- end
配置完成后可以用如下命令观察Dynamic ARP Inspection的运行情况
- show arp access-list [acl-name] Displays detailed information about ARP ACLs.
- show ip arp inspection interfaces [interface-id] Displays the trust state and the rate limit of ARP packets for the specified interface or all interfaces.
- Interface Trust State Rate (pps) Burst Interval
- --------------- ----------- ---------- --------------
- Gi1/0/21 Untrusted 15 1
- Gi1/0/22 Trusted None N/A
- Gi1/0/23 Untrusted 15 1
- Gi1/0/24 Trusted None N/A
- Gi1/0/25 Untrusted 15 1
- Gi1/0/26 Untrusted 15 1
- Gi1/0/27 Trusted None N/A
- Gi1/0/28 Untrusted None N/A
- show ip arp inspection vlan vlan-range, Displays the configuration and the operating state of dynamic ARP inspection for all VLANs configured on the switch, for a specified VLAN, or for a range of VLANs.
- yql-2#-3750#sh ip arp inspection vlan 103
- Source Mac Validation : Disabled
- Destination Mac Validation : Disabled
- IP Address Validation : Disabled
- Vlan Configuration Operation ACL Match Static ACL
- ---- ------------- --------- --------- ----------
- 103 Enabled Active
- Vlan ACL Logging DHCP Logging
- ---- ----------- ------------
- 103 Deny Deny
注意事项:
- DHCP Snooping
l 在配置DHCP Snooping以前,必须确认该设备作为DHCP服务器。
l 建议对非信任端口的上限不要超过100。对于被设置为受信任的trunk端口,需要适当增加
- Dynamic ARP Inspection
必须限制trunk端口处理ARP包的数量#p#
五、一些问题的讨论
在实际使用过程中我们发现,在配置完上述命令后,Cisco 3750交换机会在运行一段时间以后变得缓慢,CPU利用率达到100%,性能严重下降。经过分析我们发现,在开始应用Dynamic ARP Inspection时,交换机会记录大量的数据包,当端口通过的数据包过多时,交换机会认为遭受DoS攻击,从而将端口自动errdisable,造成通信中断。为了解决这个问题,我们需要加入命令errdisable recovery cause arp-inspection。
由于Cisco 3750交换机能力有限,因此我们建议在使用Cisco 3750交换机配置上述命令时应逐级增大port limit rate。#p#
六、小结
DHCP服务在网络中的广泛应用,极大地减轻了网络管理员的负担,方便了用户使用网络。但是由于有些用户私自指定IP地址,造成了IP地址自动分配时引起的IP地址冲突,进而影响其他用户的使用。我们经过实际测试,给出了上述解决方案,本方法不仅适合于Cisco的3750交换机,也适用于Cisco的65系列交换机。
DHCP防指定IP地址的方法在我校已经得到了成功的应用,经过实践检验,我们认为这是一个非常实用的功能。在系统设置好以后,网络中的用户只有设置为自动获取IP地址才能上网,否则将无法上网。从而解决了在使用DHCP的网络中,用户私自指定IP地址而带来的IP地址冲突问题。
如果公司内网由于用户自行安装了Windows Server版本的操作系统而小心启用了DHCP服务,或其他因素在内网中出现了非授权的DHCP服务器,会给网络造成什么样的影响呢?
DHCP server可以自动为用户设置网络IP地址、掩码、网关、DNS、WINS 等网络参数,简化了用户网络设置,提高了管理效率。但是,此时如果服务器和客户端没有认证机制,网络上存在的非法的DHCP服务器将会给部分主机的地址分配、网关及DNS参数照成混乱,导致主机无法连接到外部网络。出现这种情况,如何解决这些问题呢?
作为客户端计算机来说,可以尝试使用ipconfig /release释放获得的网络参数后,然后用ipconfig /renew重新尝试获取正确的DHCP服务器配置服务,但这种方法很被动,往往要十几次甚至几十次才偶尔有可能成功一次,不能从根本解决问题。
另外一个解决办法,在windows系统组建的网络中,如果非法DHCP服务器也是用Windows系统建立的话我们可以通过“域”的方式对非法DHCP服务器进行过滤。将合法的DHCP服务器添加到活动目录(Active Directory)中,通过这种认证方式就可以有效的制止非法DHCP服务器了。原理就是没有加入域中的DHCP Server在相应请求前,会向网络中的其他DHCP Server发送DHCPINFORM查询包,如果其他DHCP Server有响应,那么这个DHCP Server就不能对客户的要求作相应,也就是说网络中加入域的DHCP服务器的优先级比没有加入域的DHCP服务器要高。这样当合法DHCP存在时非法的就不起任何作用了。
授权合法DHCP的过程如下:
第一步:开始->程序->管理工具->DHCP
第二步:选择DHCP root, 用鼠标右键单击,然后浏览选择需要认证的服务器。
第三步:点“添加”按钮, 输入要认证的DHCP服务器IP地址, 完成授权操作。
但是该方法只适用于非法DHCP服务器是windows系统,需要用到域和活动目录,配置较复杂,另外对于非Windows的操作系统,就显得力不从心了。
还有更好的方法,就是利用交换机的DHCP监听,通过建立和维护DHCP Snooping绑定表过滤不可信任的DHCP信息,也就是过滤掉非法DHCP服务器向网络上发送的数据包。首先定义交换机上的信任端口和不信任端口,将DHCP服务器所连接的端口定义为信任端口,其它连接到普通客户端的端口全部定义为不信任端口,对于不信任端口的DHCP报文进行截获和嗅探,drop掉来自这些端口的非正常 DHCP 报文,从而达到过滤非法DHCP服务器的目的。
基本配置示例:
- switch(config)#ip dhcp snooping vlan 100,200
- /* 定义哪些 VLAN 启用 DHCP嗅探
- switch(config)#ip dhcp snooping
- switch(config)#int fa4/10 /* dhcp服务器所在端口
- switch(config-if)#ip dhcp snooping trust
- switch(config)#int range fa3/1 - 48 /* 其它端口
- switch(config-if)#no ip dhcp snooping trust (Default)
- switch(config-if)#ip dhcp snooping limit rate 10 (pps)
- /* 一定程度上防止 DHCP 拒绝服 /* 务攻击