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 验证与排错

服务启动后,怎么知道它正常工作?

  1. 查看日志:tail -f /var/log/messages(CentOS)或journalctl -u dhcpd
  2. 客户端测试:找一台Windows或Linux机器,设置成自动获取IP
  3. 查看租约文件:cat /var/lib/dhcpd/dhcpd.leases

租约文件里记录了所有分配的IP地址、MAC地址、租约时间。如果发现某个IP分配异常,可以来这里查。

排错口诀:

  • 客户端拿不到IP → 先看防火墙(iptables -L)
  • 拿到IP但上不了网 → 检查网关和DNS配置
  • IP冲突 → 检查排除地址和静态绑定

3.8 本章知识体系

下面这张图,是我梳理的DHCP服务器部署核心逻辑,你一看就明白:

DHCP服务器部署核心流程 ① 安装服务 yum install dhcp ② 全局参数 租约时间/DNS/域名 ③ 子网声明 subnet 192.168.1.0 ④ 地址池 range 100-200 ⑤ 排除地址 排除服务器/打印机 验证与排错 dhcpd -t 检查语法 tail -f /var/log/messages 配置完成后,记得重启服务并检查防火墙

这张图把整个部署流程串起来了。你按照这个顺序来,基本不会出错。记住:安装→全局参数→子网声明→地址池→排除地址→验证,一步都不能少。


好了,这一章的内容就到这里。DHCP服务器部署其实不难,关键是细节。地址池规划、排除地址、租约时间,这些看似不起眼的参数,往往决定了你的网络稳不稳定。下一章咱们聊聊DHCP的高级功能——静态绑定和DHCP中继,到时候见。

专注资料整理