文章目录
- [DHCP 服务器知识点整理](#DHCP 服务器知识点整理)
-
- [一、DHCP 服务基础](#一、DHCP 服务基础)
-
- [1. 服务背景与作用](#1. 服务背景与作用)
- [2. DHCP 通信过程](#2. DHCP 通信过程)
- [3. 多 DHCP 服务器机制](#3. 多 DHCP 服务器机制)
- [二、DHCP 服务器部署与配置](#二、DHCP 服务器部署与配置)
-
- [1. 部署前提](#1. 部署前提)
- [2. 安装与防火墙配置](#2. 安装与防火墙配置)
- [3. 核心配置(/etc/dhcp/dhcpd.conf)](#3. 核心配置(/etc/dhcp/dhcpd.conf))
- [4. 配置验证与服务启停](#4. 配置验证与服务启停)
- [三、DHCP 客户端配置与验证](#三、DHCP 客户端配置与验证)
-
- [1. 客户端配置(Linux 系统)](#1. 客户端配置(Linux 系统))
- [2. 客户端验证](#2. 客户端验证)
- [四、基于 MAC 地址的 IP 预留](#四、基于 MAC 地址的 IP 预留)
-
- [1. 应用场景](#1. 应用场景)
- [2. 配置步骤](#2. 配置步骤)
-
- [(1)获取客户端 MAC 地址](#(1)获取客户端 MAC 地址)
- [(2)配置 IP 预留(修改服务器 dhcpd.conf)](#(2)配置 IP 预留(修改服务器 dhcpd.conf))
- (3)重启服务与验证
- [五、DHCP 中继服务器](#五、DHCP 中继服务器)
-
- [1. 中继作用](#1. 中继作用)
- [2. 工作原理](#2. 工作原理)
- [3. 中继部署(以 Linux 为例)](#3. 中继部署(以 Linux 为例))
- [六、轻量级 DHCP 工具(Dnsmasq)](#六、轻量级 DHCP 工具(Dnsmasq))
-
- [1. 工具特点](#1. 工具特点)
- [2. 安装与核心配置](#2. 安装与核心配置)
-
- [(1)安装 Dnsmasq](#(1)安装 Dnsmasq)
- (2)关键配置(/etc/dnsmasq.conf)
- [3. Dnsmasq 作为 DHCP 中继](#3. Dnsmasq 作为 DHCP 中继)
- [4. 客户端验证](#4. 客户端验证)
DHCP 服务器知识点整理
一、DHCP 服务基础
1. 服务背景与作用
- 静态 IP 分配问题:在大型网络中,静态分配 IP 需避免地址重复,且新系统需手动配置,云环境中难以满足自动化需求。
- DHCP 核心功能:动态主机配置协议(DHCP)自动分配网络参数,包括 IP 地址、默认网关、DNS 服务器、域及 NTP 服务器,实现集中化管理。
- 协议版本:分为用于 IPv4 的 DHCPv4 和用于 IPv6 的 DHCPv6,本文重点讲解 DHCPv4。
2. DHCP 通信过程
DHCP 客户端与服务器的交互分为初始分配和租约续约两个阶段,共 6 个关键步骤:
阶段 | 步骤 | 详细描述 |
---|---|---|
初始 IP 分配 | 1. 客户端发送 DISCOVER | 客户端通过网卡发送DHCPDISCOVER 数据包到广播地址255.255.255.255 ,因路由器默认不转发该广播,服务器需与客户端同物理网络(或配置 DHCP 中继) |
2. 服务器响应 OFFER | 服务器接收DHCPDISCOVER 后,发送DHCPOFFER 数据包,包含自身 IP、分配给客户端的 IP、租约期限及其他网络参数(网关、DNS 等) |
|
3. 客户端发送 REQUEST | 客户端收到DHCPOFFER 后,广播DHCPREQUEST 数据包,指定接受某台服务器的 IP(解决多服务器环境下的选择问题) |
|
4. 服务器发送 ACK | 服务器接收DHCPREQUEST 后,发送DHCPACK 数据包,确认客户端对 IP 的独占使用权至租约到期 |
|
租约续约 | 5. 客户端发起续约请求 | 租约到期前,客户端发送DHCPREQUEST(renew) 数据包请求续约 |
6. 服务器确认续约 | 服务器响应DHCPACK(renew) 数据包,同意客户端继续使用 IP(共 3 次续约机会) |

3. 多 DHCP 服务器机制
-
部署建议:同一物理网络不建议部署多台 DHCP 服务器,单台即可满足需求。
-
多服务器交互:
- 客户端可能收到多台服务器的
DHCPOFFER
,仅接受一台并通过DHCPREQUEST
指定,其他服务器释放预留 IP。 - 服务器权威性影响续约:非权威服务器忽略未知 IP 的
DHCPREQUEST
;权威服务器若发现 IP 不在自身管理范围,会发送DHCPNAK
,客户端需重新申请 IP。 - 默认配置:DHCP 服务器默认非权威,避免接管其他权威服务器的 IP。
- 客户端可能收到多台服务器的
二、DHCP 服务器部署与配置
1. 部署前提
- 网络接口要求 :使用
ip addr
命令确认服务器网络接口配置BROADCAST
地址(例:ens160
接口的brd 10.1.8.255
)。 - 静态 IP 要求:DHCP 服务器必须配置静态 IP,避免自身 IP 动态变化导致服务异常。
2. 安装与防火墙配置
bash
# 1. 安装DHCP服务包
[root@server~]# dnf install -y dhcp-server
# 2. 防火墙放行DHCP服务(临时+永久)
[root@server~]# firewall-cmd --add-service=dhcp
[root@server~]# firewall-cmd --add-service=dhcp --permanent
3. 核心配置(/etc/dhcp/dhcpd.conf)
(1)配置文件来源
-
系统提供示例文件:
/usr/share/doc/dhcp-*/dhcpd.conf.example
可复制为正式配置文件:
bash[root@server~]# cp /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
(2)典型配置示例与说明
bash
[root@server ~ 10:25:51]# vim /etc/dhcp/dhcpd.conf
# 域名
option domain-name "qy.cloud";
# DNS 服务器
option domain-name-servers 223.6.6.6, 223.5.5.5;
# 默认租约时间
default-lease-time 600;
# 最大租约时间
max-lease-time 7200;
# 日志级别
log-facility local7;
# 配置 DHCP 池
subnet 10.1.8.0 netmask 255.255.255.0 {
range 10.1.8.101 10.1.8.130;
#option domain-name-servers ns1.internal.example.org;
#option domain-name "internal.example.org";
option routers 10.1.8.2;
option broadcast-address 10.1.8.255;
#default-lease-time 600;
#max-lease-time 7200;
}
# 根据Mac地址配置固定IP
host client.laoma.cloud {
hardware ethernet 00:0c:29:2f:9a:06;
fixed-address 10.1.8.100;
}
4. 配置验证与服务启停
bash
# 1. 验证配置文件语法(返回0表示无错误)
[root@server~]# dhcpd -t
[root@server~]# echo $? # 检查返回值
# 2. 启用并启动服务
[root@server~]# systemctl enable dhcpd --now
# 3. 查看服务状态
[root@server~]# systemctl status dhcpd
三、DHCP 客户端配置与验证
1. 客户端配置(Linux 系统)
bash
# 1. 添加自动获取IP的网络连接(指定接口ens192)
[root@client~]# nmcli connection add con-name dynamic type ethernet ifname ens192
# 2. 激活该连接
[root@client~]# nmcli connection up dynamic
2. 客户端验证
bash
# 查看接口IP配置(确认获取到DHCP分配的IP)
[root@client~]# ip addr show ens192
# 示例输出(关键信息):
# inet 10.1.8.150/24 brd 10.1.8.255 scope global dynamic noprefixroute ens192
# valid_lft 597sec preferred_lft 597sec(租约剩余时间)
四、基于 MAC 地址的 IP 预留
1. 应用场景
为特定设备(如 Web 服务器、数据库服务器)分配固定 IP,确保其网络地址稳定。
2. 配置步骤
(1)获取客户端 MAC 地址
bash
[root@client~]# ip link show ens192 # 查看ens192接口MAC
# 示例输出:link/ether 00:0c:29:ba:fd:88 brd ff:ff:ff:ff:ff:ff
(2)配置 IP 预留(修改服务器 dhcpd.conf)
在/etc/dhcp/dhcpd.conf
末尾添加:
bash
host client.linux.fun { # 自定义主机名
hardware ethernet 00:0c:29:ba:fd:88; # 客户端MAC地址
fixed-address 10.1.8.30; # 预留的固定IP
}
(3)重启服务与验证
bash
# 服务器重启DHCP服务
[root@server~]# systemctl restart dhcpd
# 客户端重新激活连接并验证
[root@client~]# nmcli connection up dynamic
[root@client~]# ip addr show ens192 # 确认IP为10.1.8.30
五、DHCP 中继服务器
1. 中继作用
解决 DHCP 客户端与服务器跨广播域(如不同子网、VLAN)的通信问题:客户端广播的DHCPDISCOVER
会被三层设备丢弃,中继代理可转发 DHCP 报文。
2. 工作原理
中继在客户端与服务器间转发报文,将客户端的广播报文转为单播发送给服务器,服务器响应的单播报文经中继转发给客户端,交互仍遵循 "发现 - 提供 - 请求 - 确认" 四阶段。
3. 中继部署(以 Linux 为例)
(1)实验环境
主机名 | IP 地址 | 虚拟网络 | 角色 |
---|---|---|---|
dhcp-server.linux.fun | 10.1.8.10/24 | vmnet8 | DHCP 服务器 |
dhcp-relay.linux.fun | 10.1.8.20/24、10.1.1.20/24 | vmnet8、vmnet1 | DHCP 中继 |
dhcp-client.linux.fun | 自动获取 | vmnet1 | DHCP 客户端 |
(2)服务器端配置(dhcp-server)
-
配置双子网地址池 :在
/etc/dhcp/dhcpd.conf
中添加10.1.1.0/24
子网配置(参考前文 "典型配置")。 -
配置路由
:确保服务器能访问中继的
10.1.1.20
bash[root@dhcp-server~]# nmcli connection modify ens160 ipv4.routes '10.1.1.20/32 10.1.8.20' [root@dhcp-server~]# nmcli connection up ens160
(3)中继端配置(dhcp-relay)
-
安装中继服务
bash[root@dhcp-relay~]# dnf install -y dhcp-relay
-
修改中继服务配置
bash# 复制服务文件并编辑 [root@dhcp-relay~]# cp /usr/lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay.service [root@dhcp-relay~]# vim /etc/systemd/system/dhcrelay.service # 修改ExecStart,指定DHCP服务器IP: ExecStart=/usr/sbin/dhcrelay -d --no-pid 10.1.8.10
-
启用中继服务
bash[root@dhcp-relay~]# systemctl enable dhcrelay.service --now
-
开启路由转发
bash[root@dhcp-relay~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf [root@dhcp-relay~]# sysctl -p /etc/sysctl.conf # 生效配置
(4)客户端测试
同 "DHCP 客户端配置与验证" 步骤,确认客户端能跨网段获取 IP。
六、轻量级 DHCP 工具(Dnsmasq)
1. 工具特点
集 DNS 缓存、DHCP 服务器、DHCP 中继、TFTP 服务器于一体,轻量易配置,适用于个人或小型网络。
2. 安装与核心配置
(1)安装 Dnsmasq
bash
[root@server~]# dnf install -y dnsmasq
(2)关键配置(/etc/dnsmasq.conf)
bash
# 1. IP地址池:10.1.8.50-150,掩码24,租约12小时
dhcp-range=10.1.8.50,10.1.8.150,255.255.255.0,12h
# 2. MAC绑定固定IP(租约45分钟)
dhcp-host=00:0c:29:ba:fd:88,10.1.8.30,45m
# 3. 配置网关
dhcp-option=option:router,10.1.8.2
# 4. 配置DNS服务器
dhcp-option=option:dns-server,218.2.135.1
# 5. 配置域搜索列表
dhcp-option=option:domain-search,linux.fun,example.com
# 6. 配置NTP服务器(可选)
dhcp-option=option:ntp-server,1.2.3.4,1.2.3.5
3. Dnsmasq 作为 DHCP 中继
在中继主机(dhcp-relay)的/etc/dnsmasq.conf
中添加:
bash
# 转发10.1.1.20接口的DHCP请求到10.1.8.10(DHCP服务器)
dhcp-relay=10.1.1.20,10.1.8.10
启用服务并开启路由转发(同前文 "中继端配置" 步骤)。
4. 客户端验证
同 "DHCP 客户端配置与验证",可通过route -n
(查看网关)、cat /etc/resolv.conf
(查看 DNS)进一步确认配置生效。