CentOS7配置DHCP服务器全攻略
在 CentOS 7 上配置 DHCP(Dynamic Host Configuration Protocol)服务器,可以实现对局域网内客户端的 IP 地址自动分配,同时支持高级功能,如 主机地址绑定(静态分配)、设备分类(class)、以及客户端重新获取 IP 等。
下面是对 CentOS 7 中 DHCP 服务器配置的全面总结,包括:
一、DHCP 服务简介
DHCP(Dynamic Host Configuration Protocol):用于自动为客户端分配 IP 地址、子网掩码、网关、DNS 等网络参数。
服务端软件:在 CentOS 7 中通常使用 ISC DHCP Server,包名为
dhcp。主配置文件:
/etc/dhcp/dhcpd.conf服务管理命令:
systemctl start/stop/restart/status dhcpd监听网卡:默认监听所有网卡,也可指定。
二、安装 DHCP 服务
1. 安装 dhcp 软件包
yum install dhcp -y2. 检查是否安装成功
rpm -qa | grep dhcp你应该能看到类似 dhcp-4.2.5-XX.el7.x86_64的包。
三、配置 DHCP 服务器
1. 主配置文件路径
/etc/dhcp/dhcpd.conf⚠️ 默认该文件可能为空或只有示例注释,你可以备份后清空,或者参考
/usr/share/doc/dhcp-*/dhcpd.conf.example来构建自己的配置。
2. 配置示例(基础 + 高级功能)
假设场景:
DHCP 服务器 IP:
192.168.1.10分配的网段:
192.168.1.0/24可分配 IP 范围:
192.168.1.50 ~ 192.168.1.100网关:
192.168.1.1DNS:
8.8.8.8和8.8.4.4默认租期:1天,最大租期:3天
3. 编辑配置文件 /etc/dhcp/dhcpd.conf
vi /etc/dhcp/dhcpd.conf填入如下内容(根据需求调整):
# 全局配置
option domain-name "example.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;default-lease-time 86400; # 默认租约时间(秒),这里为1天
max-lease-time 259200; # 最大租约时间,这里为3天# 指定监听的网络接口(可选,如果不指定则监听所有)
# subnet 192.168.1.0 netmask 255.255.255.0 {
# range 192.168.1.50 192.168.1.100;
# option routers 192.168.1.1;
# option broadcast-address 192.168.1.255;
# }# 正式配置一个子网
subnet 192.168.1.0 netmask 255.255.255.0 {range 192.168.1.50 192.168.1.100; # 动态分配的IP范围option routers 192.168.1.1; # 网关option subnet-mask 255.255.255.0; # 子网掩码option domain-name-servers 8.8.8.8, 8.8.4.4; # DNSoption broadcast-address 192.168.1.255; # 广播地址default-lease-time 86400;max-lease-time 259200;
}四、主机地址绑定(静态分配 / 固定IP)
有时候你希望某些设备(比如服务器、打印机、网络摄像头)每次都获取固定的 IP 地址,可以通过 MAC 地址绑定来实现。
示例:为某台设备固定分配 IP 192.168.1.100
在 subnet块内添加如下配置:
host printer {hardware ethernet 00:0c:29:xx:xx:xx; # 替换为目标设备的 MAC 地址fixed-address 192.168.1.100; # 指定固定IP
}🔧 如何获取设备的 MAC 地址?
Linux 客户端:
ip link或ifconfigWindows 客户端:
ipconfig /all,找到物理地址(Physical Address)
你可以为多个设备分别定义多个 host块。
五、设备分类设置(Class 匹配)
DHCP 支持基于 设备类型、厂商信息、用户类 等进行分类,从而为不同类别的设备分配不同的参数,比如不同的 DNS、网关等。
示例:基于 Class 匹配(简单示例)
# 定义一个 class,比如匹配某个特定的用户类或标识
class "special-devices" {match if substring (option vendor-class-identifier, 0, 5) = "MYDEV";
}subnet 192.168.1.0 netmask 255.255.255.0 {range 192.168.1.50 192.168.1.100;option routers 192.168.1.1;# 对于匹配 class "special-devices" 的设备,使用不同的 DNSpool {allow members of "special-devices";range 192.168.1.150 192.168.1.180;option domain-name-servers 1.1.1.1, 1.0.0.1;}# 其它普通设备pool {deny members of "special-devices";range 192.168.1.50 192.168.1.149;option domain-name-servers 8.8.8.8, 8.8.4.4;}
}⚠️
class和pool的搭配使用较为灵活,可以实现策略路由、不同网段分配、DNS 控制等高级功能。但配置也相对复杂,适合有定制需求的场景。
六、启动与启用 DHCP 服务
1. 启动 DHCP 服务
systemctl start dhcpd2. 设置开机自启
systemctl enable dhcpd3. 检查服务状态
systemctl status dhcpd如果看到 active (running)表示服务已经正常启动。
七、防火墙与 SELinux 设置
1. 开放 DHCP 服务端口(UDP 67/68)
DHCP 服务使用:
UDP 67:服务器端
UDP 68:客户端
如果启用了防火墙(firewalld),需要放行 DHCP 服务:
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload如果你使用的是传统 iptables,需要允许 UDP 67/68 端口。
2. SELinux(通常无需特别配置)
默认情况下,只要 DHCP 配置正确,SELinux 不会阻止其运行。如有问题,可以暂时设置为宽松模式测试:
setenforce 0(生产环境请谨慎,建议正确配置安全策略)
八、客户端如何获取/重新获取 DHCP 地址
1. Linux 客户端获取 IP(DHCP)
自动获取(通常系统启动时自动获取):
dhclient手动重新获取 IP(释放并重新请求):
dhclient -r # 释放当前IP dhclient # 重新获取IP或者:
nmcli connection down <连接名> && nmcli connection up <连接名>
2. Windows 客户端
自动获取:通常默认开启
手动更新:
命令提示符下:
ipconfig /release ipconfig /renew
九、DHCP 服务日志查看
DHCP 服务日志默认在:
journalctl -u dhcpd -f # 实时查看 DHCP 服务日志或者查看系统日志:
tail -f /var/log/messages通过日志可以排查:
是否有客户端成功获取 IP
是否有地址冲突
配置是否生效等
十、总结:关键配置要点
功能 | 配置要点 |
|---|---|
基础 DHCP 服务 | 修改 |
主机地址绑定(固定IP) | 使用 |
设备分类设置 | 使用 |
服务启停 |
|
客户端获取IP | Linux: |
防火墙 | 开放 UDP 67/68,或放行 |
日志排查 |
|
📌 附加建议
如果你的网络中已有其他 DHCP 服务器(比如路由器),请确保只启用一个,避免 IP 冲突。
可以给不同 VLAN 或网段配置多个
subnet块,但需要 DHCP 服务支持中继(dhcp relay)。建议备份
/etc/dhcp/dhcpd.conf文件,以便出错时快速恢复。
