Skip to content

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 工作流程

mermaid
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地址

4.DHCP Ack(服务器确认分配)

  • DHCP服务器 收到 Request 后,确认分配IP,并发送 DHCP Ack 广播包。
  • 客户端收到 Ack 后:
    • 配置IP地址、子网掩码、网关等。
    • 记录租期时间(如 24小时)。

DHCP 续租流程(Renew & Rebind)

mermaid
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
    end

1. 租期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 的安装与配置

安装

bash
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

bash
# 复制模板文件到配置文件中(rpm -ql dhcpd)
cat /usr/share/doc/dhcp-server/dhcpd.conf.example > /etc/dhcp/dhcpd.conf

dhcpd 服务的全局配置

  • 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 服务器地址时,以逗号进 行分隔。

ini
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 网段声明必须有而且可以有 多个。

ini
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 地 址。

ini
host prtsvr {
    hardware ethernet 00:c0:c3:22:46:81;
    fixed-address 192.168.4.100;
}