DHCP 服务器简介
DHCP (Dynamic Host Configuration Protocol,动态主机配置协议) 是一个网络协议,用于自动为网络中的客户端设备(如电脑、手机、打印机等)分配 IP 地址、子网掩码、网关、DNS 服务器等网络配置信息,这极大地简化了网络管理。

第一步:选择并安装 DHCP 服务器软件
在 Linux 世界中,最常用和经典的 DHCP 服务器软件是 ISC DHCP Server,我们将以此为例进行安装。
对于 Ubuntu/Debian 系统
使用 apt 包管理器进行安装。
-
更新软件包列表
sudo apt update
-
安装 isc-dhcp-server
(图片来源网络,侵删)sudo apt install isc-dhcp-server -y
安装过程中,系统可能会提示你选择一个网络接口来监听 DHCP 请求,此时可以先不选,我们将在后续配置文件中精确指定,所以可以直接按
Esc或Enter跳过。
对于 CentOS/RHEL/Rocky Linux 系统
使用 dnf 或 yum 包管理器进行安装。
- 安装 dhcp-server
sudo dnf install dhcp-server -y
(对于旧版的 CentOS 7,请使用
sudo yum install dhcp-server -y)
第二步:配置 DHCP 服务器
这是最关键的一步,配置文件的主要作用是定义 DHCP 服务将哪个网段(IP 地址范围)分配给客户端。

主配置文件路径
- Ubuntu/Debian:
/etc/dhcp/dhcpd.conf - CentOS/RHEL/Rocky Linux:
/etc/dhcp/dhcpd.conf
在开始编辑前,强烈建议先备份原始配置文件:
# Ubuntu/Debian sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak # CentOS/RHEL/Rocky Linux sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
默认的 dhcpd.conf 文件里有很多注释和示例,可能会干扰我们的配置,我们可以将其清空,然后添加我们自己的配置。
示例配置
以下是一个典型的家庭或小型办公室网络配置示例,请根据你的网络环境修改以下参数:
network: 你的局域网网段,168.1.0netmask: 子网掩码,255.255.0range: 你要分配的 IP 地址范围。option routers: 默认网关地址。option domain-name-servers: DNS 服务器地址(可以是你路由器的地址或公共 DNS,如8.8.8)。
使用你喜欢的文本编辑器打开配置文件,nano:
sudo nano /etc/dhcp/dhcpd.conf
粘贴到文件中,并根据你的实际情况进行修改:
# 标准的 DHCP 配置文件
# 默认租约时间(秒),客户端在未续约前可以使用的 IP 时间
default-lease-time 600;
# 最大租约时间(秒),客户端可以请求的最长使用 IP 时间
max-lease-time 7200;
# 指定要提供 DHCP 服务的网络
# 'subnet' 后面是网络地址,'netmask' 后面是子网掩码
subnet 192.168.1.0 netmask 255.255.255.0 {
# 分配给客户端的 IP 地址池
range 192.168.1.100 192.168.1.200;
# 默认网关
option routers 192.168.1.1;
# DNS 服务器地址
# 可以设置多个,用逗号隔开
option domain-name-servers 8.8.8.8, 8.8.4.4;
# (可选)为特定客户端分配固定 IP 地址
# host my-printer {
# hardware ethernet 00:1A:2B:3C:4D:5E; # 打印机的 MAC 地址
# fixed-address 192.168.1.10; # 分配给它的固定 IP
# }
}
配置说明:
subnet声明:这是核心部分,告诉 DHCP 服务器哪个网段需要管理。range:定义了可以动态分配的 IP 地址范围。option routers:告诉客户端,当需要访问其他网络时,数据包应该发送到哪里(通常是你的路由器)。option domain-name-servers:告诉客户端应该使用哪个 DNS 服务器来解析域名。host ... fixed-address ...:这是一个非常有用的功能,可以通过客户端的 MAC 地址为其分配一个固定的 IP 地址,便于管理服务器、NAS 等设备。
第三步:指定 DHCP 服务器监听的接口
你需要告诉 DHCP 服务应该在哪个网络接口上(eth0, ens33, wlan0)监听客户端的请求。
对于 Ubuntu/Debian
编辑 isc-dhcp-server 的配置文件:
sudo nano /etc/default/isc-dhcp-server
找到 INTERFACESv4 这一行,取消注释并修改为你希望监听的接口名称(ens33)。
# 默认是 INTERFACESv4="" # 修改为你的网络接口,ens33 INTERFACESv4="ens33"
对于 CentOS/RHEL/Rocky Linux
编辑 dhcpd 的服务配置文件:
sudo nano /etc/sysconfig/dhcpd
找到 DHCPDARGS 这一行,修改为你的网络接口名称,如果需要监听多个接口,用空格隔开。
# 默认可能是 DHCPDARGS=eth0 # 修改为你的网络接口,ens33 DHCPDARGS="ens33"
注意:如果你的服务器有多个网络卡,并且想让 DHCP 服务在所有接口上监听,可以设置为 DHCPDARGS="all"。
第四步:启动并启用 DHCP 服务
现在配置已经完成,我们需要启动服务并设置为开机自启。
对于 Ubuntu/Debian
# 启动服务 sudo systemctl start isc-dhcp-server # 设置开机自启 sudo systemctl enable isc-dhcp-server # 查看服务状态,确保没有错误 sudo systemctl status isc-dhcp-server
对于 CentOS/RHEL/Rocky Linux
# 启动服务 sudo systemctl start dhcpd # 设置开机自启 sudo systemctl enable dhcpd # 查看服务状态 sudo systemctl status dhcpd
如果启动失败,请仔细检查前面的配置步骤,特别是 /etc/dhcp/dhcpd.conf 文件的语法是否正确,可以使用 sudo dhcpd -t 命令来测试配置文件的语法。
第五步:验证配置
-
在客户端上测试 将一台电脑或手机连接到同一局域网,并设置为“自动获取 IP 地址”,在命令行中运行
ipconfig /all(Windows) 或ifconfig/ip a(Linux/macOS),你应该能看到从你的 DHCP 服务器获取到的 IP 地址、网关和 DNS 信息。 -
在服务器上查看租约信息 你可以查看 DHCP 服务器当前的租约记录,以确认分配是否成功。
- Ubuntu/Debian:
/var/lib/dhcp/dhcpd.leases - CentOS/RHEL/Rocky Linux:
/var/lib/dhcpd/dhcpd.leases
# 实时查看租约分配情况 sudo tail -f /var/lib/dhcp/dhcpd.leases
你会看到类似
lease 192.168.1.101 { ... }的记录,这表示 IP 地址已经被成功分配。 - Ubuntu/Debian:
常见问题排查
- 服务启动失败:首先检查
journalctl -u isc-dhcp-server(Ubuntu) 或journalctl -u dhcpd(CentOS) 的日志,找出具体错误,最常见的原因是配置文件语法错误或 IP 地址冲突。 - 客户端获取不到 IP:
- 确认客户端和服务器在同一个网段。
- 检查防火墙设置,默认情况下,DHCP 使用 UDP 端口
67和68,确保服务器的防火墙没有阻止这些端口。- Ubuntu (UFW):
sudo ufw allow 67/udp - CentOS (Firewalld):
sudo firewall-cmd --permanent --add-service=dhcp && sudo firewall-cmd --reload
- Ubuntu (UFW):
- 检查你指定的网络接口是否正确且已启动。
如何停止或删除 DHCP 服务器
如果你想停止或卸载 DHCP 服务器:
停止并禁用服务
# Ubuntu/Debian sudo systemctl stop isc-dhcp-server sudo systemctl disable isc-dhcp-server # CentOS/RHEL/Rocky Linux sudo systemctl stop dhcpd sudo systemctl disable dhcpd
卸载软件
# Ubuntu/Debian sudo apt remove --purge isc-dhcp-server -y # CentOS/RHEL/Rocky Linux sudo dnf remove dhcp-server -y
希望这份详细的指南能帮助你成功安装和配置 DHCP 服务器!
