我们将使用 dhcpd (ISC DHCP Server) 这个最经典、最稳定的 DHCP 服务器软件。

第一步:安装 DHCP 服务器软件包
确保您的系统已经更新,然后安装 dhcp 包。
-
更新系统软件包:
sudo yum update -y
-
安装 dhcp 服务器:
sudo yum install -y dhcp
安装完成后,主要的配置文件位于 /etc/dhcp/dhcpd.conf,在首次安装时,这个文件可能只包含一些注释和示例,我们需要自己编写配置内容。

第二步:配置 DHCP 服务器
这是最关键的一步,我们需要编辑 /etc/dhcp/dhcpd.conf 文件来定义我们网络的 DHCP 范围、网关、DNS 等信息。
-
备份原始配置文件(好习惯):
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
-
编辑配置文件:
sudo vi /etc/dhcp/dhcpd.conf
清空文件中的所有内容(或者以 开头的注释行),然后添加以下配置。请务必根据您的实际网络环境修改参数。
(图片来源网络,侵删)# dhcpd.conf 配置文件示例 # 定义一个默认的租约时间(秒),86400 秒 = 24 小时 default-lease-time 86400; # 定义一个最大租约时间(秒),604800 秒 = 7 天 max-lease-time 604800; # 声明我们正在为哪个网络提供服务。 # subnet 网络地址 netmask 子网掩码 subnet 192.168.1.0 netmask 255.255.255.0 { # 声明网关(路由器)地址 option routers 192.168.1.1; # 声明 DNS 服务器地址 option domain-name-servers 8.8.8.8, 8.8.4.4; # 声明 DNS 搜索域(可选) option domain-name "localdomain"; # 定义 IP 地址池(地址范围) # range 起始IP 结束IP; range 192.168.1.100 192.168.1.200; # 可选:为特定设备(如 MAC 地址为 aa:bb:cc:dd:ee:ff 的服务器)分配固定 IP # host my-server { # hardware ethernet aa:bb:cc:dd:ee:ff; # fixed-address 192.168.1.10; # } }配置参数详解:
default-lease-time: 客户端获取到的 IP 地址默认租期。max-lease-time: 客户端可以请求的最长租期。subnet: 定义一个子网,您需要填入您自己的网络地址和子网掩码。- 您的网络是
168.1.0/24,那么网络地址就是168.1.0,子网掩码就是255.255.0。
- 您的网络是
option routers: 指定客户端的默认网关。option domain-name-servers: 指定客户端使用的 DNS 服务器,可以指定多个,用逗号隔开。range: 定义 DHCP 服务器可以动态分配的 IP 地址范围。host ... { ... }: 用于为特定主机分配一个固定的 IP 地址,通常用于服务器、打印机等设备。
第三步:指定 DHCP 服务监听的网络接口
DHCP 服务器需要知道应该在哪个网络接口上服务请求,这通过 /etc/sysconfig/dhcpd 文件来配置。
-
编辑配置文件:
sudo vi /etc/sysconfig/dhcpd
-
添加或修改
DHCPDARGS变量: 如果您的服务器有多个网卡(eth0是外网,eth1是内网),DHCP 服务只在eth1上提供,那么您需要指定接口名称。# 在文件中添加以下行,指定 DHCP 服务器要监听的接口 DHCPDARGS=eth1
如果不确定或者想让服务器在所有可用接口上监听,可以将其留空或注释掉:
# DHCPDARGS=
对于新手,建议先留空,让系统自动处理。
第四步:启动并设置开机自启
配置完成后,启动 DHCP 服务并设置为开机自启。
-
启动 DHCP 服务:
sudo systemctl start dhcpd
-
设置开机自启:
sudo systemctl enable dhcpd
-
检查服务状态:
sudo systemctl status dhcpd
如果看到绿色的
active (running),说明服务已成功启动。
第五步:配置防火墙(非常重要!)
CentOS 默认使用 firewalld 防火墙,DHCP 服务使用 UDP 端口 67 (服务器) 和 68 (客户端),必须允许这些流量通过。
-
永久允许 DHCP 服务流量:
sudo firewall-cmd --permanent --add-service=dhcp
-
重新加载防火墙使配置生效:
sudo firewall-cmd --reload
-
验证防火墙规则:
sudo firewall-cmd --list-all
您应该能在输出中看到
dhcp服务已经在允许列表中。
第六步:排查常见问题
如果客户端无法获取到 IP 地址,请按以下步骤排查:
-
检查 DHCP 服务状态:
sudo systemctl status dhcpd
如果服务没有运行,查看错误日志:
journalctl -u dhcpd。 -
检查配置文件语法: 在重启服务前,可以使用以下命令检查配置文件是否有语法错误:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
如果输出
No subnet declaration for ...等错误,说明配置文件有误,请返回第二步仔细检查。 -
检查日志文件: DHCP 服务的日志通常记录在
/var/log/messages中,使用grep过滤 DHCP 相关信息:sudo grep dhcpd /var/log/messages
日志会显示是否有客户端请求、IP 是否分配成功、是否有配置错误等信息。
-
检查网络接口配置: 确保您在
/etc/sysconfig/dhcpd中指定的接口是存在的并且已经启动。ip a
-
检查 IP 地址池是否冲突: 确保
range中定义的 IP 地址没有被网络中的其他设备(如静态 IP 的服务器、路由器等)占用。
回顾一下整个流程:
- 安装:
sudo yum install -y dhcp - 配置: 编辑
/etc/dhcp/dhcpd.conf,定义subnet、range、option routers等。 - 指定接口: 编辑
/etc/sysconfig/dhcpd,设置DHCPDARGS。 - 启动服务:
sudo systemctl start dhcpd && sudo systemctl enable dhcpd - 防火墙:
sudo firewall-cmd --permanent --add-service=dhcp && sudo firewall-cmd --reload
按照以上步骤,您应该就能在 CentOS 上成功搭建一个功能完善的 DHCP 服务器了。
