一、DHCP服务概述
DHCP(动态主机配置协议),通常用于局域网内的一个通信协议,使用UDP协议工作。它用来自动给客户端分配TCP/IP信息的网络协议,如IP地址、网关、子网掩码、DNS等信息,也可以用来配合其他服务,完成集成化管理服务,如无人执守安装服务器。
二、DHCP工作原理
DHCP协议采用UDP作为传输协议,主机发送请求到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。
DHCP的请求过程如下如所示。
1.DHCP客户端以广播的方式发出DHCP Discover报文。
2.所有的DHCP服务端都能接收到DHCP客户端的DHCP Discover报文,所有的DHCP服务器都会给出响应,向DHCP客户端发送一个DHCP Offer报文。
3.DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP服务端能够提供给DHCP客户端使用的IP地址,且DHCP服务器会将自己的IP地址放在“Option”字段中以便DHCP客户端区分不同的DHCP服务端。DHCP服务端在发出此后会存在一个已经分配IP地址的记录。
4.DHCP客户端会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP服务端的IP地址和需要的IP地址。DHCP服务端在收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的相同。如果不同,DHCP服务端不做任何处理,只清楚相应IP地址分配记录;如果相同,DHCP服务端就会向DHCP客户端相应一个DHCP Ack报文,并在选项字段中增加IP地址的使用租期等信息。
5.DHCP客户端接收到DHCP Ack报文后,检查DHCP服务端分配的IP地址是否能够使用。如果可以使用,则DHCP客户端成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP客户端发现DHCP服务端分配的IP地址已经被使用,则DHCP客户端向DHCP服务端发出DHCP Decline(拒绝)报文,通知DHCP服务端禁用这个IP'地址,然后DHCP客户端开始新的地址申请过程。
6.DHCP客户端在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP服务端在收到DHCP Release报文后,会回收相应的IP的地址并重新分配。
7.在使用租期超过50%时刻处,DHCP客户端会以单播形式向DHCP服务端发送DHCP Request报文来续租IP地址。如果DHCP客户端成功收到DHCP服务端发送的DHCP Ack报文,则按相应时间延长IP地址租期;如果没有收到DHCP服务端发送的DHCP Ack报文,则DHCP客户端继续使用这个IP地址。
在使用租期超过87.5%时刻处,DHCP客户端会以广播形式向DHCP服务端发送DHCP Request报文来续租IP地址。如果DHCP客户端成功收到DHCP服务端发送的DHCP Ack报文,则按相应市场延长IP的hi之租期;如果没有收到DHCP服务端发送的DHCP Ack报文,则DHCP客户端继续使用这个IP地址,直到IP地址使用租期到期时,DHCP客户端才会向DHCP服务端发送DHCP Release报文来释放这个IP地址,并开始新的申请过程。
注:DHCP客户端可以接收多个DHCP服务端的DHCP Offer数据包,然后可能接收任何一个DHCP Offer数据包,但DHCP客户端通常只接收收到的第一个DHCP Offer数据包。另外,DHCP服务器的DHCP Offer数据包中指定的地址不一定为最终分配的IP地址。通常情况下,DHCP服务端会保留该地址直到DHCP客户端发出正式请求。正式请求DHCP服务端分配地址地址DHCP Request采用广播包,是为了让其他所有发送DHCP Offer数据包的DHCP服务端也能收到该数据包,然后释放已经预分配给DHCP客户端的IP地址。如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,DHCP客户端会向DHCP服务端发送DHCP Decline信息包拒绝已经分配的地址信息。在协商过程中,如果DHCP客户端发送的DHCP Request数据包的地址信息不正确,如客户端已经迁移到新的子网或租约已经过期,DHCP服务端会发送DHCPNck消息给客户端,让客户端重新发起地址请求过程。
三、DHCP服务的安装与配置
3.1 DHCP安装
[root@centos7 ~]# yum -y install dhcp
3.2 配置文件/etc/dhcp/dhcpd.conf
subnet 10.5.5.0 netmask 255.255.255.0 { #子网地址(子网号,主机位全0),netmask为子网掩码
range 10.5.5.2 10.5.5.100; #此DHCP服务分配的IP地址范围
option domain-name-servers 10.5.5.1; #DNS地址
option domain-name "centos.vbird"; #配置域名
option routers 10.5.5.1; #指定默认网关
option broadcast-address 10.5.5.254; #指定广播地址
default-lease-time 600; #默认租约时间
max-lease-time 7200; #最大租约时间
ddns-update-style none; #更新主机名与IP的对应关系
log-facility local7; #说明日志发向何处
ignore client-updates; #客户端可以通过dhcpd服务器来更新DNS相关的信息
}
host passacaglia { #指定固定IP对应到固定MAC的设置值
hardware ethernet 0:0:c0:5d:bd:95; #利用网卡上面的硬件地址来设置
fixed-address 10.5.5.28; #给予固定的IP地址
}
3.3 DHCP服务的启动与关闭
[root@centos7 ~]# systemctl start dhcpd #开启dhcp服务
[root@centos7 ~]# systemctl stop dhcpd #关闭dhcp服务
3.4 测试
1.Linux下,进入网卡配置文件(CentOS7为etc/sysconfig/network-scripts/ifcfg-ens33 ),改BOOTPROTO为dhcp,然后重启网络服务
[root@centos7 ~]# systemctl restart network #重启网络服务
2.Windows下, 依次点击控制面板-- 网络和Internet--网络和共享中心--更改适配器设置--若为以太网点击以太网,若为无线网卡(WIFI)点击WLAN--这里点击的是以太网----Internet协议版本4(TCP/IPV4)--选择自动获取IP地址与DNS服务器,即可自动获取IP地址