原文https://blog.51cto.com/5167020/2312718安全
序:DHCP服务相对简单,写本文的目的是为了讲一些DHCP安全方面的技术。服务器
一、DHCP基础网络
DHCP 全称动态主机配置协议(Dynamic Host Configuration Protocol),用于给终端设备如PC、IPad、手机等自动分配IP地址。
工做过程简洁高效,易于掌握,首先借着一张图介绍DHCP基本的工做原理:oop
从图上能够清晰看出,客户端经过DHCP协议获取IP地址等信息的过程能够分为四个步骤:性能
1.1发现阶段,即DHCP客户端发现DHCP服务器的阶段。blog
DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。因为DHCP客户端不知道DHCP服务器的IP地址,因此DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255,源IP地址为0.0.0.0),同一网段内全部DHCP服务器都能收到此报文。接口
1.2提供阶段,即DHCP服务器提供IP地址的阶段。内存
服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,而且从中选择一个可用的IP地址,而后经过DHCP OFFER报文发送给DHCP客户端。DHCP OFFER报文里面携带了但愿分配给指定MAC地址客户端的IP地址(DHCP报文中的yiaddr字段)及其租期等配置参数。路由
1.3选择阶段,即DHCP客户端选择IP地址的阶段。部署
由于DHCP DISCOVER报文是广播发送的,因此若是同一网段内存在多个DHCP服务器,接收到DHCP DISCOVER报文的服务器都会回应DHCP OFFER报文。若是有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端通常只接收第一个收到的DHCP OFFER报文。
以广播方式发送DHCP REQUEST报文,是为了通知全部的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其余DHCP服务器能够从新将曾经分配给客户端的IP地址分配给其余客户端。
1.4确认阶段,即DHCP服务器确认所分配IP地址的阶段。
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址分配给客户端使用。
小结:DHCP工做过程四个步骤涉及四种数据包,分别是DISCOVER、OFFER、REQUEST、ACK。
二、DHCP Snooping
在企业实际网络环境中,常常会遇到电脑获取到错误IP地址等状况,致使没法正常上网,这是由于网络中非法接入了DHCP服务器(最多见的非法DHCP服务器就是TP-link家用路由器)。
这时候就须要在网络交换机上配置DHCP snooping功能来防止非法DHCP服务器给客户端分配IP地址。
DHCP Snooping不论从配置上仍是工做原理上也都很简单,继续用一张图说明:
在二层网络接入设备(即交换机)启用DHCP Snooping场景中,通常将与合法DHCP服务器直接链接的接口设置为信任接口(如上图中的if1接口),其余接口设置为非信任接口(如上图中的if2接口),启用了DHCP Snooping功能的交换机会检测从每一个接口收到的DHCP各种数据包,若是从非信任接口收到,则丢弃;使DHCP的四种数据包仅能从信任接口转发或者接受,从而保证DHCP客户端只能从合法的DHCP服务器获取IP地址,私自架设的DHCP Server仿冒者没法为DHCP客户端分配IP地址。
小结:DHCP Snooping在交换机上启用,并将链接合法服务器的接口设置为信任接口,其余接口默认都是非信任接口。
三、DHCP Relay(中继)
上面提到的DHCP客户端与服务器都在同一个网段,比较适用于家庭网络和小型企业网络。但在中到大型企业网络中,有不少网段,不推荐在每一个网段都部署一个DHCP服务器,既不经济也很差管理。
实际状况是,在大型网络中,每每采用一台高性能的服务器看成DHCP服务器,它只存在于一个网段。因为DHCP的工做高度依赖于广播,而咱们知道广播包是不能跨网段传输的,因此正常状况下其余网段的客户端是没法获取IP地址的。
DHCP Relay的出现就是为了解决这个问题,用一张图说明:
仍是以前熟悉的四个步骤,不过此次在客户端与服务器中间多了一个DHCP中继设备,一般DHCP中继为网络中每一个网段的网关设备(即启用了DHCP Relay功能的三层交换机)。
DHCP中继将从客户端接收到的广播报文转换成单播报文,这样报文就能够跨越网段进行传输。单播报文意味着明确且惟一的目的IP地址,因此开启DHCP中继的设备必须手工明确配置DHCP服务器的IP地址。
有了DHCP中继,不论企业网络中有多少个IP网段,咱们只须要在一个网段部署DHCP服务器,其余网段则由网关设备开启中继功能,这样整个网络都能经过DHCP服务器获取IP地址。
小结:在三层交换机的各个网段开启DHCP Relay功能,并手动指定DHCP服务器的IP地址,可实现整网共享一台DHCP服务器。
四、一个关于DHCP Snooping与 DHCP Relay的小思考
在一个部署了DHCP Relay的网络中,DHCP Snooping应该启用哪些设备上?
如图所示:
其中有三个部门即三个网段,而DHCP服务器是一台路由器,不属于其中任意一个网段。
在这个网络中,每一个包含DHCP客户端的二层网络中都应该启用DHCP Snooping,而仅包含服务器的二层网络是不须要启用DHCP Snooping的。
备注:客户端二层网络启用DHCP Snooping很好理解,而服务器二层网络无需启用DHCP Snooping的背后缘由稍显复杂。具体缘由是当部署了DHCP Relay后,DHCP服务器收到的DHCP各类报文必定是中继设备转换后的单播报文,单播报文有明确且惟一的目的IP,这时就不会存在仿冒DHCP服务器的问题。而实际上若是真的在服务器二层网络中的交换机上启用了DHCP Snooping功能,它也是不会影响DHCP正常工做的,由于从中继设备发过来的单播DHCP报文里面UDP层的源端口号已经被中继设备修改为UDP 67(而原始报文里则为UDP 68),交换机一旦检测到这点变化,就会自动忽略,正常转发DHCP各种报文,不作DHCP Snooping额外处理。