了解DHCP服务的工作原理及Linux操作系统下DHCP服务的搭建过程

1.什么是DHCP?
DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
DHCP有三种机制分配IP地址:
自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。这种方式也是我们日常生活中应用最多的方式。
手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
了解DHCP服务的工作原理及Linux操作系统下DHCP服务的搭建过程_第1张图片
2.DHCP的工作原理:
DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。详细的交互过程如下图。
了解DHCP服务的工作原理及Linux操作系统下DHCP服务的搭建过程_第2张图片
1)DHCP Client以广播的方式发出DHCP Discover报文。(以广播的方式发送Discover报文是因为此时客户端不知道DHCP服务器是谁)
2)所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。
3)DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。
DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。
4)DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。 Request报文广播发送的目的是:当DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息
5)DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline(拒绝)报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
6)DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。
7)在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址。
在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程。
需要注意的是
DHCP客户端可以接收到多个DHCP服务器的DHCPOFFER数据包,然后可能接受任何一个DHCPOFFER数据包,但客户端通常只接受收到的第一个DHCPOFFER数据包。另外,DHCP服务器DHCPOFFER中指定的地址不一定为最终分配的地址,通常情况下,DHCP服务器会保留该地址直到客户端发出正式请求。
正式请求DHCP服务器分配地址DHCPREQUEST采用广播包,是为了让其它所有发送DHCPOFFER数据包的DHCP服务器也能够接收到该数据包,然后释放已经OFFER(预分配)给客户端的IP地址。
如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,客户端会向服务器发送DHCPDECLINE信息包拒绝接受已经分配的地址信息。

在协商过程中,如果DHCP客户端发送的REQUEST消息中的地址信息不正确,如客户端已经迁移到新的子网或者租约已经过期,DHCP服务器会发送DHCPNAK消息给DHCP客户 端,让客户端重新发起地址请求过程。
3.做DHCP服务器的条件:
1)拥有真实物理网卡,或者连接广播域的真实物理网卡;
2)该接口或者该物理网卡必须有一个合理的ip地址。
4.Linux操作系统下配置DHCP服务
在配置DHCP服务之前,我们首先得明确的了解,配置DHCP服务至少所需求的几点:地址池、声明的网段、网关、DNS等。
配置要求:Linux操作系统下开启两台虚机,切记两台虚机的网络配置模式应用仅主机模式或是NAT模式,因为桥接模式下我们配置的DHCP是不生效的,生效的是我们真实环境下的DHCP服务器。一台虚机模拟DHCP服务器,另一台模拟客户端。本次搭建是在仅主机的模式下进行的,NAT模式下的步骤与本次搭建过程大致相同。
4.1首先完成客户端虚拟网络编辑器的设定:
了解DHCP服务的工作原理及Linux操作系统下DHCP服务的搭建过程_第3张图片
如图所示,客户端要取消"使用本地DHCP服务将IP地址分配给虚拟机"的选项,服务端不用取消,因为仅主机的模式下,服务端必须拿到一个IP地址。
4.2服务端的配置:

#软件安装
[root@localhost ~]# yum install dhcp -y
#配置DHCP服务对应的主配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;       //dns的动态更新模式,none表示不支持,interim表示dns互动更新,ad-hoc表示特殊的
ignore client-updates;           // 忽略客户端更新,客户端更新时,服务端忽略它,防止客户端对服务端产生影响
#子网配置段
subnet 192.168.10.0 netmask 255.255.255.0 {         //声明网段和掩码
        option routers 192.168.10.1;                //指定网关
        option subnet-mask 255.255.255.0;           //指定掩码
        option domain-name-servers 114.114.114.114; //指定DNS
        range dynamic-bootp 192.168.10.66 192.168.10.86;     //指定DHCP下放的IP地址范围
        default-lease-time 600;                     //默认租约时间,单位为秒
        max-lease-time  600;                        //最大租约时间,单位为秒
}
#固定IP地址的配置,比如企业中某些设备需要IP地址固定,不能发生变动
host myboss {                                       //这块host后的命名是任意的
        hardware ethernet 00:0c:29:df:0b:91;        //根据MAC地址固定IP地址
        fixed-address 192.168.10.77;
}

4.3客户端进行测试:

[root@localhost ~]# dhclient                        //发起DHCP请求获取IP地址
[root@localhost ~]# ifconfig                        //查看本主机IP地址

你可能感兴趣的:(Linux)