实验目的:
•了解DHCP协议和DHCP中继的应用场景
•掌握DHCP服务器和DHCP中继的基本配置方法
•掌握配置和检测DHCP客户端的方法
本次实验的拓扑图如下:
开启PC的DHCP
这时候我们查看pc的ip地址可以查看到电脑的ip如下所示,地址为0.0.0.0,说明并没有被分配ip地址。
配置全局
先通过命令“dhcp enable”开启dhcp。再创建一个名为net的IP池,并配置网段、网关、DNS等,这里的ip pool是用来配置Sub-VLAN的IP地址池。
配置端口
配置端口使用interface这个命令配置端口,这里我们把ip地址设置为192.168.1.1 24.这里的24是指我们的局域网是前24位,也就是我们的网络号。具体配置如下所示:
测试动态分配结果
可以通过ipconfig获取到分配的地址,这里可以发现分配给pc1的ip地址为192.168.1.253。
同样使用ipconfig这个命令查看剩余的两个pc的ip地址如下:
第二台pc ip地址
第三台pc ip地址
可以发现第二台ip的地址是192.168.1.252.第三台的ip地址是192.168.1.254.这就表明ip地址的分配是由大到小分配的,这个原因可能和我设置的网关地址有关。
抓包分析
DHCP抓包
为了动态获取并使用一个合法的IP地址,需要经历以下几个阶段:
(1) 发现阶段:即DHCP客户端寻找DHCP服务器的阶段。
(2) 提供阶段:即DHCP服务器提供IP地址的阶段。
(3)选择阶段:即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。
(4) 确认阶段:即DHCP服务器确认所提供的IP地址的阶段
发现阶段(客户端广播寻找DHCP服务器)
Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCPServer。
这里可以看到广播地址的Mac地址是ff:ff:ff:ff:ff:ff,使用udp协议的67和68号端口,这里的hops表示没有经过代理。同时还有客户端的ip地址是0.0.0.0,以及客户端的Mac地址(54:89:98: b2:79:1a)
提供阶段(DHCP服务器发送可用IP详细信息)
网络中接收到DHCP-DISCOVER报文的DHCP服务器,会选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址,域名服务器地址等)一同通过DHCP-OFFER报文发送给DHCP客户端。
DHCP服务器通过地址池保存可供分配的IP地址和其他配置信息。当DHCP服务器接收到DHCP请求报文后,将从IP地址池中取得空闲的IP地址及其他的参数,发送给DHCP客户端。
DHCP服务器为客户端分配IP地址的优先次序如下:
(1) 与客户端MAC地址或客户端ID静态绑定的IP地址;
(2) DHCP服务器记录的曾经分配给客户端的IP地址;
(3) 客户端发送的DHCP-DISCOVER报文中Option 50字段指定的IP地址;
(4) 在DHCP地址池中,顺序查找可供分配的IP地址,最先找到的IP地址;
(5) 如果未找到可用的IP地址,则依次查询租约过期、曾经发生过冲突的IP地址,如果找到则进行分配,否则将不予处理。
DHCP服务器为客户端分配IP地址时,服务器首先需要确认所分配的IP没有被网络上的其他设备所使用。DHCP服务器通过发送ICMP Echo Request(ping)报文对分配的IP进行探测。如果在规定的时间内没有应答,那么服务器就会再次发送ping报文。到达规定的次数后,如果仍没有应答,则所分配的IP地址可用。否则将探测的IP地址记录为冲突地址,并重新选择IP地址进行分配。
这里端口号仍然是67和68。Messagetype是服务器发出的报文。这里的ipaddress就是服务器可以提供的的地址是192.168.1.252.下面的leasetime是地址租期,这里是一天。
选择阶段(选择IP并广播通告其他DHCP服务器)
如果有多台DHCP服务器向DHCP客户端回应DHCP-OFFER报文,DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。 DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。该报文中包含Option 54(服务器标识选项),即它选择的DHCP服务器的IP地址信息。
以广播方式发送DHCP-REQUEST请求报文,是为了通知所有的DHCP服务器,它将选择Option 54中标识的DHCP服务器提供的IP地址,其他DHCP服务器可以重新使用曾提供的IP地址。
这里客户端使用的ip地址仍然是0.0.0.0,并没有使用可以使用的ip,目的端口是广播。告诉所有的服务器他选择的ip地址。这里的request(3)表明是选择选择阶段。下面的option就是表明客户端选择的ip。
确认阶段(广播ARP探测是否有其他主机使用该IP)
收到DHCP客户端发送的DHCP-REQUEST请求报文后,DHCP服务器根据DHCP-REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则发送DHCP-ACK报文作为应答,通知DHCP客户端可以使用分配的IP地址。
DHCP客户端收到DHCP服务器返回的DHCP-ACK确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP-DECLINE报文给DHCP服务器,通知DHCP服务器该地址不可用,并重新申请IP地址。
如果DHCP服务器收到DHCP-REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP-NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP-DISCOVER报文来请求新的IP地址。
这里的message type ack(5),表示ack类型。可以看到这里的目的端口已经换成服务器给分配的地址了。
版权归原作者 星念. 所有, 如有侵权,请联系我们删除。