3. DHCP服务器部署(Linux):安装与配置DHCP服务
各位同学,今天咱们来聊聊Linux下DHCP服务器的搭建。说实话,DHCP这东西看着简单,但真要在生产环境里把它配稳了,还是有不少门道的。我刚开始做运维那会儿,就因为在地址池上少配了一个排除地址,结果把领导办公室的打印机IP给抢了……嗯,从那以后我再也不敢马虎了。
3.1 为什么选择isc-dhcp-server?
Linux下的DHCP服务器软件有好几种,但isc-dhcp-server是业界最成熟、最稳定的选择。它由Internet Systems Consortium维护,功能全面,配置灵活。
我个人习惯用CentOS/RHEL系列来部署,当然Ubuntu/Debian也完全没问题。说白了,核心配置思路是一样的,只是包管理命令不同而已。
核心优势:
- 支持多子网、多地址池
- 支持DHCP中继(跨网段分配IP)
- 支持静态绑定(MAC-IP绑定)
- 日志详细,排错方便
3.2 安装isc-dhcp-server
安装过程非常简单。在CentOS/RHEL 7/8上,执行:
# 安装DHCP服务
yum install -y dhcp
# 查看安装后的主配置文件
rpm -ql dhcp | grep dhcpd.conf
在Ubuntu/Debian上,命令稍有不同:
apt-get update
apt-get install -y isc-dhcp-server
安装完成后,你会发现主配置文件/etc/dhcp/dhcpd.conf几乎是空的。为什么?因为ISC的设计理念是——给你一个模板,你自己去填。我刚开始看到这个空文件时还愣了一下,后来才明白,这样反而更清晰。
3.3 配置全局参数
全局参数,就是那些对整个DHCP服务器都生效的设置。咱们先看一个典型配置:
# /etc/dhcp/dhcpd.conf
# 全局参数
option domain-name "example.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
我来解释一下这几个参数:
| 参数 | 含义 | 建议值 |
|---|---|---|
| option domain-name | 域名后缀 | 公司内部域名 |
| option domain-name-servers | DNS服务器地址 | 内网DNS或公共DNS |
| default-lease-time | 默认租约时间(秒) | 600(10分钟) |
| max-lease-time | 最大租约时间(秒) | 7200(2小时) |
| authoritative | 声明本服务器为权威服务器 | 必须配置 |
我的经验:租约时间别设太长。我曾经给一个办公网设了7天租约,结果有同事换了电脑,旧IP一直占着,新机器拿不到地址。后来改成30分钟,问题就解决了。办公环境流动性大,短租约更灵活。
3.4 配置子网声明与地址池
子网声明是DHCP配置的核心。每个网段都需要一个独立的subnet块。咱们以办公网络为例:
# 办公网络子网声明
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
}
这里的关键是range指令,它定义了地址池的范围。上面这个配置,地址池是192.168.1.100到192.168.1.200,一共101个可用地址。
你想想看,如果公司有200个人,这个池子就不够用了。所以规划地址池时,一定要预留足够的余量。
3.5 配置排除地址
排除地址,说白了就是不让DHCP自动分配的IP。比如服务器、打印机、网络设备这些需要固定IP的,就得排除出去。
# 排除地址示例
subnet 192.168.1.0 netmask 255.255.255.0 {
# 地址池范围
range 192.168.1.100 192.168.1.200;
# 排除地址
option dhcp-excluded-addresses 192.168.1.1, 192.168.1.10, 192.168.1.20;
# 或者用多个range实现排除
# range 192.168.1.100 192.168.1.150;
# range 192.168.1.200 192.168.1.250;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
}
注意:排除地址一定要在地址池范围之外,或者明确声明排除。我曾经见过一个案例,有人把网关地址192.168.1.1写进了地址池,结果网关设备重启后拿不到IP,整个网络瘫痪了半小时。
3.6 实战:为办公网络搭建DHCP服务器
好了,理论说完了,咱们来动手。假设一个典型的办公网络:
- 网段:192.168.1.0/24
- 网关:192.168.1.1
- DNS:8.8.8.8, 114.114.114.114
- 地址池:192.168.1.100 - 192.168.1.200
- 排除地址:192.168.1.1 - 192.168.1.50(服务器和网络设备)
完整配置如下:
# /etc/dhcp/dhcpd.conf
# 办公网络DHCP配置
# 全局参数
option domain-name "office.internal";
option domain-name-servers 8.8.8.8, 114.114.114.114;
default-lease-time 600;
max-lease-time 7200;
authoritative;
# 办公子网
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
# 排除服务器和网络设备区域
# 实际排除通过地址池范围控制
}
配置完成后,启动服务:
# 检查配置语法
dhcpd -t -cf /etc/dhcp/dhcpd.conf
# 启动服务
systemctl start dhcpd
systemctl enable dhcpd
# 查看状态
systemctl status dhcpd
避坑指南:启动前一定要用dhcpd -t检查语法。我刚开始时经常手滑写错括号或者少个分号,一启动就报错。这个检查命令能帮你省下不少排错时间。
3.7 验证与排错
服务启动后,怎么知道它正常工作?
- 查看日志:
tail -f /var/log/messages(CentOS)或journalctl -u dhcpd - 客户端测试:找一台Windows或Linux机器,设置成自动获取IP
- 查看租约文件:
cat /var/lib/dhcpd/dhcpd.leases
租约文件里记录了所有分配的IP地址、MAC地址、租约时间。如果发现某个IP分配异常,可以来这里查。
排错口诀:
- 客户端拿不到IP → 先看防火墙(iptables -L)
- 拿到IP但上不了网 → 检查网关和DNS配置
- IP冲突 → 检查排除地址和静态绑定
3.8 本章知识体系
下面这张图,是我梳理的DHCP服务器部署核心逻辑,你一看就明白:
这张图把整个部署流程串起来了。你按照这个顺序来,基本不会出错。记住:安装→全局参数→子网声明→地址池→排除地址→验证,一步都不能少。
好了,这一章的内容就到这里。DHCP服务器部署其实不难,关键是细节。地址池规划、排除地址、租约时间,这些看似不起眼的参数,往往决定了你的网络稳不稳定。下一章咱们聊聊DHCP的高级功能——静态绑定和DHCP中继,到时候见。