引言
本文介绍了DHCP的工作原理及租约过程,以及如何使用DHCP动态配置主机地址。
一、DHCP工作原理
1、了解DHCP服务
1.1 什么是DHCP
DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议,是一个应用层协议,使用UDP的67和68端口。
DHCP的前身是BOOTP协议(BootstrapProtocol),BOOTP被创建出来为连接到网络中的设备自动分配地址,后来被DHCP取代了,DHCP比BOOTP更加复杂,功能更强大。
1.2 DHCP的好处
由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的IP地址,不仅造成了IP地址的浪费,也会为ISP服务商带来高额的维护成本。而使用DHCP服务有以下好处:
减少管理员的工作量
避免输入错误的可能
避免IP地址冲突
当更改IP地址段时,不需要重新配置每个用户的IP地址
提高了IP地址的利用率
方便客户端的配置
1.3 为什么使用DHCP
DHCP 服务避免了因手动设置 IP 地址所产生的错误,同时也避免了把一个 IP 地址分配给多台工作站所造成的地址冲突。DHCP 提供了安全、可靠且简单的 TCP/IP 网络设置,降低了配置 IP 地址的负担。
1.4 DHCP的模式
在网络中架设一台专用的 DHCP 服务器,负责集中分配各种网络地址参数(主要包括 IP 地址、子网掩码、广播地址、默认网关地址、DNS 服务器地址);其他主机作为 DHCP 客户机,将网卡配置为自动获取地址,即可与 DHCP 服务器进行通信,完成自动配置过程。
DHCP 是 C/S 模式,DHCP 服务端和客户端需要保持通信,DHCP 基于 UDP 协议,双方都有可能会主动向对方发起通信,因此双方都需要监听端口。
Server 端:DHCP Server(运行 dhcp 服务)
UDP 服务:监听端口 67(bootps)
Client 端:DHCP Client(运行 dhcp 程序)
UDP 服务:监听端口 68 (bootpc)
1.5 DHCP 的分配方式
自动分配:分配到一个IP地址后永久使用
手动分配:由DHCP服务器管理员专门指定IP地址
动态分配:使用完后释放该IP,供其它客户机使用
2、DHCP的租约过程
客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程分为4个步骤
2.1 客户机请求IP地址
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
此时DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器
2.2 服务器响应
DHCP服务器接收到来自客户机请求lP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机
如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播一则DHCP Offer消息
2.3 客户机选择lIP地址
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
2.4 服务器确定租约
DHCP服务器接收到DHCP Request消息后,以DHCPACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息
当客户机收到DHCPACK消息时,配置IP地址,完成TCP/IP的初始化
2.5 重新登录
DHCP客户机每次重新登录网络时,不需要再发送DHCPDiscover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息
2.6 更新租约
当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约
客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约
租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
二、使用DHCP动态配置主机地址
1、DHCP服务
DHCP服务
为大量客户机自动分配地址,提供集中管理
减轻管理和维护成本、提高网络配置效率
可分配的地址信息主要包括
网卡的IP地址、子网掩码
对应的网络地址、广播地址
默认网关地址
DNS服务器地址
2、安装DHCP服务器
DHCP服务器软件
CentOS光盘中的dhcp-4.2.5-47.el7.centos.x86_64.rpm
DHCP软件包的主要文件
主配置文件:/etc/dhcpd.conf
执行程序:/usr/sbin/dhcpd、/usr/sbin/dhcrelay
3、主配置文件
ddns-update-style interim; ###全局配置参数
subnet 192.168.100.0 netmask 255.255.255.0 { ###网段声明
option routers 192.168.100.1; ###配置选项
.....
default-lease-time 21600; ###配置参数
......
host hostname { #指定需要分配固定IP地址的客户机名称
hardware ethernet xx:xx:xx:xx:xx:xx; #指定该主机的MAC地址
fixed-address 192.168.100.100; #指定保留给该主机的IP地址
}
4、设置全局配置参数
[root@localhost /etc/dhcp]#vim dhcpd.conf
option domain-name "example.org" ; //指定默认搜索域,本地域名
option domain-name-servers ns1.example.org, ns2.example.org; //指定DNS 服务器地址,多台用逗号隔开
default-lease-time 600; //默认租约为600秒
max-lease-time 7200; //最大租约为2小时,在客户端没有特殊的租约时间请求的时候,都会统一的指派默认租约时间(多数情况)。如果客户端请求了自定义的租约时间,服务器将会启用最大租约时间作为限制,客户端自己请求的租约时间不能大于该值
ddns-update-style none; //禁用DNS 动态更新,提高DHCP的效率,减少带宽的使用,默认注释了
ignore client-updates: //与ddns-update-style设定相关,客户端可以通过DHcP服务器来更新DNs相关信息,这里暂时不予考虑,所以设置成igore.
5、subnet 网段声明(作用域整个子网段,部分配置参数优先级高于全局配置参数)
一台DHCP服务器可以为多个网段提供服务,因此 subnet网段声明必须有而且可以有多个。
subnet 192.168.100.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 192.168.100.200 192.168.100.220; #设置地址池
option routers 192.168.100.254; #指定默认网关地址
}
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.120;
option routers 192.168.1.254;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.120;
option routers 192.168.2.254;
}
6、开启DHCP服务
systemctl start dhcpd #开启dhcp服务
systemctl stop firewalld #关闭防火墙
sentenforce 0 #关闭防火墙
netstat -naup | grep 67 #查看服务是否启动
tail -f /var/log/messages #如果启动失败,可以通过查看日志文件来排查错误
客户端验证:
ipconfig /release
ipconfig /renew
查看租约文件/varllibldhcpd/dhcpd.lease
[root@localhost ~]# less /varllibldhcpd/dhcpd.leases
lease 192.168.4.131{ ###分配得客户端IP
starts 4 2017/05/11 17:27:15; ###租期时间
ends 4 2017/05/11 23:27:15;
cltt 4 2017/05/11 17:27:15;
binding state active;
hardware ethernet 00:0c:29:3b:ff:76; ###客户端MAC地址
}
7、DHCP局部配置及测试
一台 DHCP 服务器可以为多个网段提供服务,因此 subnet 网段声明必须有而且可以有多个。
注意别少了每行结尾的分号!
[root@zhang ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.109.0 netmask 255.255.255.0 { //声明网段地址
#default-lease-time 6000; //默认租约为6000秒,当和全局设置重复时,subnet里的配置生效
range 192.168.109.33 192.168.109.55; //设置地址池
#option broadcast-address 192.168.109.255; //定义广播地址
option routers 192.168.109.11; //指定默认网关地址
option domain-name-servers 114.114.114.114; //定义DNS服务器
实验:
进入vim /etc/dhcp/dhcpd.conf
2、添加以下4行,声明网段地址,设置地址池,指定默认网关地址,定义DNS服务器
3、重启一下dhcpd,然后查看状态是否开启
客户端验证
4、开启一台win10,按win+R进入cmd界面,然后ipconfig /release释放租约
5、ipconfig /renew重新申请IP地址,配置成功
四、总结
本文主要讲了DHCP工作原理及租约过程,如何使用DHCP动态配置主机地址。