DHCP
概述
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议 DHCP 是由 Internet 工作任务小组设计开发的,专门用于为 TCP/IP 网络中的计算机自动 分配 TCP/IP 参数的协议。 使用 DHCP 可以减少管理员的工作量,避免 IP 地址冲突,当网络更改 IP 地址网段时不 需要再重新配置每个用户的 IP 地址,提高了 IP 地址的利用率,方便客户端的。
可分配的地址信息
- 网卡的 IP 地址
- 子网掩码
- 对应的网络地址
- 广播地址
- 默认网关地址
- DNS 服务器
DHCP 分配方式
自动分配:分配到一个 IP 地址后永久使用
手动分配:由 DHCP 服务器管理员专门指定 IP 地址
动态分配:使用完后释放该 IP,供其他客户机使用
DHCP 工作流程
sequenceDiagram
participant Client
participant Server
Client->>Server: DHCP Discover (广播)
Server->>Client: DHCP Offer (广播)
Client->>Server: DHCP Request (广播)
Server->>Client: DHCP Ack (广播)1.DHCP Discover(客户端发现DHCP服务器)
- 客户端(无IP)发送 DHCP Discover 广播包(目标IP
255.255.255.255,端口67)。 - 目的:寻找可用的DHCP服务器。
- 数据包内容:
- 源MAC:客户端MAC
- 目标MAC:
FF:FF:FF:FF:FF:FF(广播) - 消息类型:
DHCP Discover
2.DHCP Offer(服务器提供IP)
- DHCP服务器 收到 Discover 后,从地址池中选择一个可用IP(如
192.168.1.100)。 - 发送 DHCP Offer 广播包(仍通过
255.255.255.255)。 - 数据包内容:
- 提供的IP地址
- 子网掩码(如
255.255.255.0) - 默认网关(如
192.168.1.1) - DNS服务器
- 租期时间(如
24小时)
3.DHCP Request(客户端确认选择)
- 客户端 可能收到多个 Offer(多DHCP服务器时),选择第一个,并发送 DHCP Request 广播包。
- 目的:正式请求该IP,并通知其他DHCP服务器撤回Offer。
- 数据包内容:
- 选择的服务器IP(
option dhcp-server-identifier) - 请求的IP地址
- 选择的服务器IP(
4.DHCP Ack(服务器确认分配)
- DHCP服务器 收到 Request 后,确认分配IP,并发送 DHCP Ack 广播包。
- 客户端收到 Ack 后:
- 配置IP地址、子网掩码、网关等。
- 记录租期时间(如
24小时)。
DHCP 续租流程(Renew & Rebind)
sequenceDiagram
participant Client
participant Server
Note over Client: 租期50%时(如12小时后)
Client->>Server: DHCP Request (单播)
alt 服务器在线
Server->>Client: DHCP Ack (续租成功)
else 服务器无响应
Note over Client: 租期87.5%时(如21小时后)
Client->>Server: DHCP Request (广播)
alt 新服务器响应
Server->>Client: DHCP Ack (重新绑定)
else 无响应
Client->>Client: 释放IP,重新Discover
end
end1. 租期50%时(Renew)
- 客户端单播发送 DHCP Request 到原DHCP服务器(IP已知)。
- 服务器响应 DHCP Ack,延长租期。
2. 租期87.5%时(Rebind)
- 如果服务器无响应,客户端广播 DHCP Request,允许其他DHCP服务器接管。
- 若仍无响应,客户端在租期到期后释放IP,重新发起 DHCP Discover。
DHCP 典型应用场景
1. 局域网(LAN)IP分配
- 客户端自动获取IP,无需手动配置。
2. 跨子网DHCP(DHCP中继)
- 中继代理(Relay Agent) 在路由器上配置,转发DHCP广播包到指定服务器。
3. IP地址预留(Reservation)
- 根据MAC地址固定分配某个IP(如打印机、服务器)。
Linux 中 DHCP 的安装与配置
安装
yum -y install dhcp文件路径
- 主配置文件:
/etc/dhcp/dhcpd.conf - 执行程序:
/usr/sbin/dhcpd、/usr/sbin/dhcrelay - 服务脚本:
/etc/init.d/dhcpd、/etc/init.d/dhcrelay - 执行参数配置:
/etc/sysconfig/dhcpd - DHCP 中继配置:
/etc/sysconfig/dhcrelay
修改配置文件dhcpd.conf
# 复制模板文件到配置文件中(rpm -ql dhcpd)
cat /usr/share/doc/dhcp-server/dhcpd.conf.example > /etc/dhcp/dhcpd.confdhcpd 服务的全局配置
ddns-update-style:动态 DNS 更新模式。用来设置与 DHCP 服务相关联的 DNS 数据动态更新模式。在实际的 DHCP 应用中很少用到该参数,将值设为“none”即 可。
default-lease-time:默认租约时间。单位为秒,表示客户端可以从 DHCP 服务器 租用某个 IP 地址的默认时间。
max-lease-time:最大租约时间。单位为秒,表示允许 DHCP 客户端请求的最大 租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
option domain-name:默认搜索区域。为客户机指定解析主机名时的默认搜索域, 该配置选项将体现在客户机的/etc/resolv.conf 配置文件中,如“search benet.com”。
option domain-name-servers:DNS 服务器地址。为客户机指定解析域名时使用 的 DNS 服务器地址,该配置选项同样将体现在客户机的/etc/resolv.conf 配置文件 中(如“nameserver 202.106.0.20”)。需设置多个 DNS 服务器地址时,以逗号进 行分隔。
ddns-update-style none; # 禁用 DNS 动态更新
default-lease-time 21600; # 默认租约为 6 小时
max-lease-time 43200; # 最大租约为 12 小时
option domain-name "bdqn.com"; # 指定默认搜索域
option domain-name-servers 202.106.0.20, 202.106.148.1; # 指定 DNS 服务器地址
log-facility local7; # 指定DHCP服务器日志消息的记录设施(facility)和级别(level)subnet 网段声明
一台 DHCP 服务器可以为多个网段提供服务,因此 subnet 网段声明必须有而且可以有 多个。
subnet 192.168.91.0 netmask 255.255.255.0 { # 声明网段地址
range 192.168.91.128 192.168.91.254; # 设置地址池,可以有多个
option routers 192.168.91.1; # 指定默认网关地址
}host 主机声明(可选)
host 声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固 定的 IP 地址(保留地址),这些主机的共同特点是要求每次获取的 IP 地址相同,以确保服 务的稳定性。host 声明通过 host 关键字指定需要使用保留地址的客户机名称,并使用“hardware ethernet”参数指定该主机的 MAC 地址,使用“fixed-address”参数指定保留给该主机的 IP 地 址。
host prtsvr {
hardware ethernet 00:c0:c3:22:46:81;
fixed-address 192.168.4.100;
}