如果没有 DHCP,很难想象我们将如何连接到互联网或本地网络,DHCP 是我们在 IP 网络上的设备如何相互通信以及与我们周围的世界通信的重要组成部分。
那么DHCP背后的原理是什么?为什么说DHCP是革命性的技术?在配置DHCP的时候要注意什么?
本文,瑞哥就用图解的形式带大家揭开DHCP的神秘面纱,让我们直接开始!
什么是DHCP?
英文全称:Dynamic Host Configuration Protocol
中文名称:动态主机配置协议
是一种网络管理协议
DHCP术语
- DHCP有许多专业术语,下面我们来简单了解一下:
- DHCP Discover:当客户端 (PC) 启动时,它会通过以太网广播 DHCP Discover 消息来定位同一子网中的所有可用 DHCP 服务器,到达同一子网中的所有 DHCP 服务器。
- DHCP Offer:当 DHCP 服务器收到来自客户端的 DHCP Discover 消息时,它还会通过以太网广播 DHCP Offer 消息,通知客户端它可用。
- DHCP Request:收到 DHCP Offer 消息的客户端识别出在同一子网上有可用的 DHCP 服务器,然后它通过以太网向服务器广播 DHCP 请求消息,请求网络配置数据,包括自己的 IP 地址。
- DHCP Reservation:网络的预定义 IP 地址范围
- DHCP ACK:DHCP确认
- DHCP Server:DHCP服务器,运行和管理 DHCP 信息的设备
- DHCP Client:DHCP客户端,负责请求 IP 地址并与 DHCP 服务器建立 DHCP 连接
- DHCP Relay Agent:DHCP 中继代理,是在本地 DHCP 客户端和远程 DHCP 服务器之间发送请求和回复的主机或路由器,当多个LAN中只有一个 DHCP 服务器时,中继代理会处理所有网络的请求。
- Lease Time:租用时间,客户端可以使用分配给它的 IP 地址的时间
DHCP 基本拓扑
DHCP组成部分
上面我们介绍了DHCP的术语,一般DHCP会包含以下部分:
DHCP组成部分
这个就印证了上面的DHCP 基本拓扑图,IP地址池、子网、DHCP租约我们会在DHCP原理中介绍。
DHCP原理
DHCP 在应用层运行以动态地为客户端分配 IP 地址,这是通过共享 DHCP 事务或 DHCP 会话来实现的:
DHCP过程
我们来用一张图来简单的解释以下DHCP的握手过程:
DHCP的握手过程
- 第一步:discover:客户端发送一个dhcp discover消息通知服务器
- 第二步:offer:服务器回应一个可用的IP地址和其他参数
- 第三步:request:客户端从服务器请求IP地址
- 第四步:acknowledge:服务器回应一个可用的IP地址和其他参数
为了方便大家记忆,我们将图简化一下:
DHCP工作过程
我们来看一下DHCP工作过程的抓包:
DHCP工作过程的抓包分析
DHCP 租约
每个 IP 地址都不会无限期地属于某一台计算机,与 IP 地址一起,DHCP 服务器将发送一个称为租用时间的到期日期,表示主机何时需要更新地址,DHCP 租约可以避免一定程度上的IP地址的浪费,因为可能有些IP分配出去了,但是所属计算机已经不在某个局域网了,这个时候如果这个地址还不释放的话,久而久之就会造成浪费。
DHCP租约周期如下:
- 客户端通过向 DHCP 服务器请求一个 IP 地址租用的分配过程来获得一个 IP 地址租用。
- 如果客户端已从现有租约中获得 IP 地址,则在重启时需要刷新其 IP 地址,并联系 DHCP 服务器重新分配IP 地址。
- 租约未到期,则客户端绑定相关租约和IP地址。
- 租约到期,客户端将联系最初授予租约的服务器来更新它,获得继续使用其 IP 地址的权力。
- 如果客户端移动到不同的网络,它的动态 IP 地址将被终止,它会从新网络的 DHCP 服务器请求一个新的 IP 地址。
配置DHCP
Windows
windows配置dhcp比较简单,而且也几乎是默认的配置方式:
- 打开【网络和internet设置】
网络和internet设置
- 点击你连接的网络的【属性】
网络属性
- 找到【IP设置】
找到【IP设置】
看到我的电脑已经是设置成DHCP获取的方式了
ip设置
点开【IP设置】我们看到有DHCP和手动两种设置方式。
我们来看下通过DHCP设置后,我的IP地址是多少:
查看本机IP地址
可以看到通过DHCP自动分配后,我的电脑IP地址为:192.168.50.234
Linux
我以我的一个云服务器为例子给大家演示一下,我的这台云服务器是香港的,Centos系统,那么网络配置文件都是在/etc/sysconfig/network-scripts/路径下。
我们来看一下这台服务器的网络设置:
more /etc/sysconfig/network-scripts/ifcfg-eth0
命令行显示:
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
服务器的网络设置
由此可见我的这台云服务器的ip地址也是DHCP的方式。
查看DHCP分配的地址租约
我们怎么去查看DHCP分配的地址租约呢?
还是以我这台香港的云服务器为例:
执行命令:
cat /var/lib/dhclient/dhclient--eth0.lease
结果显示:
lease {
interface "eth0";
fixed-address 172.16.2.231;
option subnet-mask 255.255.0.0;
option routers 172.16.0.1;
option dhcp-lease-time 86400;
option dhcp-message-type 5;
option domain-name-servers 8.8.4.4;
option dhcp-server-identifier 172.16.0.2;
option interface-mtu 1450;
option dhcp-renewal-time 40305;
option classless-static-routes 32.169.254.169.254 172.16.0.2,0 172.16.0.1;
option broadcast-address 172.16.255.255;
option dhcp-rebinding-time 72705;
option host-name "host-172-16-2-231";
option domain-name "openstacklocal";
renew 6 2022/07/09 09:49:26;
rebind 6 2022/07/09 19:34:44;
expire 6 2022/07/09 23:22:59;
}
lease {
interface "eth0";
fixed-address 172.16.2.231;
option subnet-mask 255.255.0.0;
option routers 172.16.0.1;
option dhcp-lease-time 86400;
option dhcp-message-type 5;
option domain-name-servers 8.8.4.4;
option dhcp-server-identifier 172.16.0.2;
option interface-mtu 1450;
option dhcp-renewal-time 39746;
option classless-static-routes 32.169.254.169.254 172.16.0.2,0 172.16.0.1;
option broadcast-address 172.16.255.255;
option dhcp-rebinding-time 72146;
option host-name "host-172-16-2-231";
option domain-name "openstacklocal";
renew 6 2022/07/09 20:31:46;
rebind 0 2022/07/10 05:51:52;
expire 0 2022/07/10 09:49:26;
}
DHCP分配的地址租约
我们看到有一项参数叫option dhcp-lease-time 86400,这个就是租期时间,单位是秒。
我们还能看出:
- renew 6 2022/07/09 20:31:46;:重新设置的时间
- rebind 0 2022/07/10 05:51:52;:将要重新绑定的时间
- expire 0 2022/07/10 09:49:26;:到期时间
以上就是DHCP的设置部分,我们最后看看DHCP的优缺点。
DHCP的优缺点
DHCP优点
- 减少 IP 冲突:手动分配 IP 地址会增加网络中不正确或重复地址的可能性,使用 DHCP可以确保通过集中控制自动、准确地分配地址。
- 简化网络管理:借助DHCP,网络管理员可以轻松监控、管理和分配 IPv4 和 IPv6 地址。
- 降低成本: 与手动分配 IP 相比,DHCP 有助于节省大量时间,尤其是对于大型企业而言,它还可以节省资金和其他资源,因为公司不需要有专门的专家来持续监督知识产权管理和分配。
DHCP缺点
DHCP 本身并不安全,如果恶意行为者访问 DHCP 服务器,他们可能会造成严重破坏。
如果 DHCP 服务器没有备份并且服务器出现故障,它所服务的设备也会出现故障。
如果网络只有一个 DHCP 服务器,则 DHCP 服务器可能是单点故障。
总结
DHCP 是 1985 年网络 IP 管理协议 Bootstrap 协议 ( BOOTP ) 的扩展,用于为网络上的每台主机动态分配 IP 地址和其他信息,以便它们能够高效地进行通信。DHCP 自动、集中管理 IP 地址的分配,简化了网络管理员的工作,除了IP 地址,DHCP 还为主机分配子网掩码、默认网关和域名服务器地址等配置,从而使网络管理员的工作更加轻松。