分享一个小故事,“2017年夏季,某集团因打印机老旧需要替换升级,新设备由各区域分公司人员自行安装调试。操作人员配置网络时,错误的将网关IP配置在打印机本地网卡中,导致整个办公室网络时断时续,100多人半天的时间无法正常办公,严重影响该分公司桌面业务运行”。诸如此类因手动配置IP引起的生产故障还有很多,因此大部分企业开始使用动态地址分配的方法取代传统手动配置。今天就为大家普及关于动态地址分配的基础知识,希望在日常的工作中可以提供帮助。enjoy:
动态主机配置协议(DHCP):是一个局域网的网络协议,由服务器控制一个动态的IP地址段范围,客户端接入网络时,服务器通过监听客户端请求的报文自动为客户端配置IP地址、网关地址、子网掩码、主备DNS等关键配置项。这样不仅减少因手动配置产生的网络故障,还能提高地址使用率。简单的来说,DHCP就是一个不需要账号密码认证,自动给网内客户端分配IP地址等信息的协议。
1. DHCP部署场景
DHCP作为办公网重要的基础支撑服务,由于其可以为多个网段同时分配IP地址,同时为保证其具有良好的运行环境,现网部署时通常在数据中心内使用专业的服务器进行部署。
DHCP服务器部署拓扑
2. DHCP运行原理
2.1. DHCP地址获取流程
DHCP获取地址流程
客户端自动获取地址分为发现、提供、选择、确认四个阶段,下面针对四个阶段进行详细解释。
① 发现阶段:即DHCP客户端寻找DHCP服务器的阶段。DHCP客户端以广播方式(因为DHCP服务器的IP地址对于客户端来说是未知的)发送DHCPDISCOVER信息来寻找网络中的DHCP服务器,三层网关设备收到DISCOVE的广播请求后,使用单播的方式将报文中继转发至指定的DHCP服务器中。DHCP服务器收到DISCOVE报文后视为第一阶段结束。
② 提供阶段:DHCP服务器提供IP地址的阶段。DHCP服务器收到客户端发送的DISCOVER报文后,首先识别该报文中继的源网关地址,并在网关地址对应的网络内寻找未使用的IP地址。DHCP服务器主动发送ping包去检测预分配IP是否在线,确认ping包超时后,即认为预分配IP没有在网络中被使用。DHCP服务器使用单播的方式向三层网关设备发送包含分配的IP地址、网关地址、子网掩码地址、DNS地址等其他设置的DHCPOFFER信息报文,三层网关设备收到DHCPOFFER报文后,在对应的二层网络内进行广播,客户端通过监听广播的方式收到DHCPOFFER报文后,视为第二阶段结束。
③ 选择阶段:DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户端发送DHCPOFFER信息,理论上DHCP客户端会使用第一个接收到的DHCPOFFER。客户端以广播的方式回答一个DHCPREQUEST报文。三层网关设备收到REQUEST广播报文后,使用单播的方式将报文中继转发至指定的DHCP服务器中。DHCP服务器收到REQUEST报文后视为第三阶段结束。
④ 确认阶段:即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到客户端回答的DHCPREQUEST报文后,DHCP服务器使用单播的方式向三层网关设备发送包含分配的IP地址、网关地址、子网掩码地址、DNS地址等其他设置的DHCPACK信息报文,三层网关设备收到DHCPACK报文后,在对应的二层网络内进行广播,客户端通过监听广播的方式收到DHCPACK报文后,客户端主动在二层网络中发送arp报文,验证DHCPACK报文中包含的IP地址没有被其他客户端使用,确认arp报文超时后,视为第四阶段结束。至此,客户端成功获得IP地址,可开始正常使用。
2.2. DHCP地址续约流程
DHCP地址续约流程
当客户端成功获取IP地址后会根据IP地址使用租期自动启动续约过程,客户端续约有两个关键时间。如果将地址使用租期用T来表示,第一次续约T1=1/2T,第二次续约T2=3/4T,接下来针对两个续约过程进行详细解释。
① T1时间续约:客户端通过DHCP服务器获取IP地址时,自动检索ACK报文中关于租约时间的option,并主动记录这个时间。如果地址使用时间到达T1时间时,客户端希望连续使用这个地址。客户端会使用单播的方式向DHCP服务器发送DHCPREQUEST报文延续租期。DHCP服务器收到报文后检查本地租约信息,确认这个IP地址没有分配给其他客户端时,会使用单播的方式回复DHCPACK报文。至此客户端完成地址续约,并且地址使用时间从当前开始向后顺延T时间。
② T2时间续约:如果T1时间续约失败后,客户端认为之前分配地址的DHCP服务器已经故障,为了保证已经获得的IP地址可以正常使用,客户端会在T2时间使用广播的方式发送DHCPREQUEST报文,目的是收到该报文的所有DHCP服务器都可以为客户端续约使用。三层网关设备收到报文后,会使用单播的方式将该报文中继至DHCP服务器。DHCP服务器收到报文后检查本地租约信息,确认这个IP地址没有分配给其他客户端时,会使用单播的方式回复DHCPACK报文,至此客户端完成地址续约,并且地址使用时间从当前开始向后顺延T时间。
3. 技术验证
实践是检验真理的唯一标准,上述内容都是理论讲解,接下来进入实操干货。测试场景见下图:
DHCP测试拓扑
· 客户端本地网卡设置“自动获得IP地址”和“自动获取DNS服务器地址”,配置比较简单,就不进行配图说明了
注意:“自动获得IP地址”为客户端关键配置,必须勾选。“自动获得DNS服务器地址”可根据是否使用DHCP配置的统一DNS要求进行勾选,对实验不产生影响;
·三层设备配置对应VLAN及DHCP中继
dhcp relay server-group 1 ip 10.1.104.98 //配置DHCP转发组,可以填写多个。该组ID会在客户端VLAN中被引用;
interface Vlan-interface104 //配置VLAN
description used by SRVER //描述信息,便于查看。可不配置
ip address 10.1.104.1 255.255.255.0 //配置网关及子网范围
interface Vlan-interface107 //配置VLAN及DHCP转发应用
description used by CLIENT //描述信息,便于查看。可不配置
ip address 10.1.107.1 255.255.255.0 //配置网关及子网范围
dhcp select relay //使用renay的方式转发DHCP报文
dhcp relay server-select 1 //转发组
interface GigabitEthernet1/0/3 //进入客户端接入网卡
port access vlan 104 //将VLAN 104应用在客户端接入端口上
interface GigabitEthernet1/0/4 //进入服务器接入网卡
port access vlan 107 //将VLAN104应用在服务器接入网卡上
注意:为防止DHCP服务器污染网络环境,很多交换机默认开启DHCP SNOOPINP功能来抑制DHCP报文。可以通过dis dhcp-snooping 来查看该功能开启情况。如SNOOPING功能已开启,默认所有接口为untrust级别,DHCP报文不会像该端口转发,此时需要指定DHCP服务器接入网卡为trust安全级别。
· DHCP服务器配置
配置网络范围:10.1.107.0/24
配置地址池空间:10.1.107.75~10.1.107.79
配置IP网关:10.1.107.1
配置DNS地址:8.8.8.8
配置IP生效时间7秒
注意:IP网关地址必须属于终端接入VLAN的子网范围内,否则会导致终端地址获取异常现象。
·地址获取及续约流程
DHCP服务器抓包(含地址分配和续约过程)
客户端抓包(含地址分配和续约过程)
·报文介绍
ACK报文
结论:上方截图中的报文顺序及内容与“2 DHCP运行原理”完全一致。
注意:通过上面实验可以看出,地址分配过程中PING CHECK的超时时间为1秒钟,与windows客户端第一次地址请求的time out时间相同,第二次重试时大约为3秒种。因此可以通过关闭DHCP服务器PING CHECK功能后加速地址获取速度。(此操作有潜在风险:终端没有进行ARP冲突检查时,可能会导致二层网络内IP冲突现象)
4. 写在最后
通过以上小实验可以看出,DHCP协议在无人值守情况下自动配置IP过程相对简单,通过管理服务器配置可以实现终端关键配置快速下发的同时,支持与PING检查机制配合使用,在手动IP和自动获取IP的混合场景中,有效的避免因IP冲突而产生的安全故障。