一、DHCP
DHCP 动态主机配置协议,局域网网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server)68(DHCP)。DHCP 通常备用与局域网环境,主要作用为集中管理,分配地址,是客户端动态的获得IP地址 ,gateway地址,DNS 服务器地址等信息,提高地址的使用率。
二、DHCP 协议报文
- DHCP discover :客户端开始DHCP过程发送的包,是DHCP协议的开始
- DHCP offer :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
- DHCP requst :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
- DHCP ack :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
- DHCP nak :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
- DHCP release :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
- DHCP inform :客户端发出的向服务器请求一些信息的报文
- DHCP decline :当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止
使用该IP地址。
DHCP 的 工作流程:
基本逻辑
原则上DHCP SERVER是一直处在被动接受请求的状态,当有客户端请求时,服务器会读取获得客户端当前所在的状态以及客户端的信息,并在静态租约表和动态租约表中进行检索找到相应的表项,再根据客户端的状态执行不同的回复。当收到客户端的首次请求时,DHCP服务器先查找静态租约表;若存在请求的表项,返回这个客户的静态IP地址;否则,从IP地址池中选择可用的IP分配给客户,并添加信息到动态数据库中。此外,服务器将会周期性的刷新租约表写入文件存档,在这个过程中会顺便对动态租约表进行租期检查。
执行回复动作:
- DHCPOFFER:
- 静态租用:首先匹配MAC地址,看是否能在静态租约表中找到对应的项,若能找到就把IP分配给他。静态表中的IP不能被其他客户使用。
- 动态租用:
- 1.server试图分配给client上次分配过的IP,在这之前检查这个IP是否正在使用。
- 2.discover中含有request ip 时,检查该IP是否在地址池范围,是否正在使用,是否到期,是否是静态IP,网络上是否已经存在。
- 3.discover不含request ip,从地址池上寻找一个最小的可用IP分配。
- DHCPACK: 根据是否含有request ip和server ip识别客户端现在init_reboot,selecting,renewing/rebinding中的哪个状态,并根据以下规则执行DHCPACK回复:
- 1.若client处于selecting状态,验证request ip和server ip是否同服务器中的匹配。
- 2.若client处于init_reboot状态,验证request ip是否符合租约记录。
- 3.若client处于renewing/rebinding状态,验证client ip address是否符合租约记录。
- DHNAK:
- 1.请求的IP是静态IP,但是MAC地址无法与其对应。
- 2.上面DHCPACK中验证失败。
- 服务器还可能会收到其他包:
- DHCPDECLINE:server会把租约表中相关client硬件地址置空,并保存这个地址一段时间。
- DHCPRELEASE:清空租期回收IP。
- DHCPINFORM:回复DHCPACK,数据包含有关于server的信息。
实验:DHCP服务器搭建。
PC1: 客户端1(克隆CentOS)
PC2: 客户端2(克隆CentOS)
Router: 模拟路由器(克隆CentOS)
步骤 一.准备实验虚拟机: (1)克隆虚拟机 (2)设置虚拟机网络模式 (3)在虚拟机的虚拟网络编辑器中关闭VMnet1和VMnet8的DHCP服务 二.实验虚拟机配置 (一)配置Router (1)修改主机名: vim /etc/hostname (2)修改网卡配置信息: vim /etc/sysconfig/network-scripts/ifcfg-ens33 (3)开启路由转发功能: vim /etc/sysctl.d/99-sysctl.conf (二)配置DHCP服务器: (1)修改主机名: vim /etc/hostname (2)修改网卡配置信息: vim /etc/sysconfig/network-scripts/ifcfg-ens33 (3)配置DHCP服务: 1)安装DHCP服务 2)编辑配置文件: vim /etc/dhcp/dhcpd.conf 3)启动DHCP服务: systemctl start dhcpd.service (三)配置客户端1 (1)修改主机名: vim /etc/hostname (2)修改网卡配置信息: vim /etc/sysconfig/network-scripts/ifcfg-ens33(设置成dhcp方式获取ip) (3)查看ip获取情况 (4)查看DHCP服务器的IP分配情况:cat /var/lib/dhcpd/dhcpd.leases (四)配置客户端2 (1)修改主机名:vim /etc/hostname (2)修改网卡配置信息: vim /etc/sysconfig/network-scripts/ifcfg-ens33(设置成dhcp方式获取ip) (3)DHCP中继服务测试 1)配置中继服务文件:/etc/systemd/system/dhcrelay.service 2)开启中继服务: systemctl restart dhcrelay.service 3)DHCP中继: dhcrelay DHCP服务器IP -i ens37 4)不同网段连通性测试
DHCP思科网络配置
实验目的
1、理解DHCP的工作原理
2、掌握DHCP服务端及客户端在cisco ios路由器的配置
拓扑及需求
router的配置如下:
router#conf t
router(config)#int lo 0
router(config-if)#ip address 1.1.1.1 255.255.255.255
router(config-if)#int e0/0
router(config-if)#ip address 192.168.1.254 255.255.255.0
router(config-if)#no sh
router(config-if)#ex
router(config)#service dhcp ///路由器开启DHCP
router(config)#ip dhcp excluded-address 192.168.1.254 ///网关是254,分配地址时需排除的IP地址
router(config)#ip dhcp pool AAA ///给地址池命名
router(dhcp-config)#network 192.168.1.0 /24 ///地址池的网络号
router(dhcp-config)#default-router 192.168.1.254 ///PC的网关地址
router(dhcp-config)#dns-server 8.8.8.8 ///DNS服务器的地址
/
PC#conf t
PC(config)#no ip routing
PC(config)#int e0/0
PC(config-if)#ip address dhcp ///接口地址采用DHCP的自动获取
PC(config-if)#no sh
结果: