Linux 下搭建 DHCP Server
以下是安装与配置 isc-dhcp-server 的完整指南,涵盖安装步骤、配置详解、故障排查及高级功能,适用于 Ubuntu/Debian 系统:
🔧 一、安装步骤
更新软件源
确保系统包列表最新:sudoapt update
安装 isc-dhcp-server
执行安装命令:sudoaptinstall isc-dhcp-server
- 安装后自动生成配置文件目录:/etc/dhcp/
⚙️ 二、基础配置
1. 指定监听网卡
编辑 /etc/default/isc-dhcp-server,设置提供 DHCP 服务的网卡(如 eth0 或 ens33):
INTERFACESv4=”eth0”# 单网卡
# 多网卡示例:INTERFACESv4=”eth0 eth1”
2. 配置 DHCP 服务池
编辑主配置文件 /etc/dhcp/dhcpd.conf:
# 全局配置(可选)
option domain-name “example.com”;
option domain-name-servers 8.8.8.8, 8.8.4.4;# DNS 服务器
default-lease-time 600;# 默认租期(秒)
max-lease-time 7200;# 最大租期(秒)
# 子网配置(必填)
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;# IP 地址池范围
option routers 192.168.1.1;# 网关地址
option subnet-mask 255.255.255.0;# 子网掩码
option broadcast-address 192.168.1.255;# 广播地址
}
关键注意:
- 每行结尾必须带分号 ;,否则服务启动失败
- 保留地址需在 range 范围外(如网关 192.168.1.1 不可包含在池中)
▶️ 三、启动与验证
重启服务
sudo systemctl restart isc-dhcp-server
设置开机自启
sudo systemctl enable isc-dhcp-server
检查服务状态
sudo systemctl status isc-dhcp-server
- 正常状态显示:active (running)
验证端口监听
DHCP 服务默认监听 UDP 67 端口:sudonetstat -uap |grep dhcpd
输出示例:udp 0 0 0.0.0.0:bootps 0.0.0.0:* 12345/dhcpd
🚨 四、故障排查
服务启动失败常见原因
问题类型 | 解决方案 | 日志定位命令 |
---|---|---|
配置文件语法错误 | 检查 dhcpd.conf 分号/括号缺失 | journalctl _PID=<服务进程ID> |
网卡未指定或错误 | 确认 /etc/default/isc-dhcp-server 中的网卡名 | ip link show 查看网卡名称 |
端口冲突 | 关闭其他 DHCP 服务(如 dnsmasq) | sudo ss -ulpn ‘sport = 67’ |
日志查看示例
若服务启动失败,使用进程 ID 查详细日志:
# 获取失败服务的 PID(从 systemctl status 输出)
journalctl _PID=12345*# 替换为实际 PID*
典型错误日志:
Config error: /etc/dhcp/dhcpd.conf line 22: semicolon expected.
⚡ 五、高级配置
1. 静态 IP 绑定
在 /etc/dhcp/dhcpd.conf 中添加:
host Printer {
hardware ethernet 00:11:22:33:44:55;# 设备 MAC
fixed-address 192.168.1.50;# 固定 IP
}
适用于打印机、服务器等需固定 IP 的设备。
2. 多子网支持
为不同 VLAN 配置独立子网:
subnet 10.0.10.0 netmask 255.255.255.0 {
range 10.0.10.10 10.0.10.100;
option routers 10.0.10.1;
}
subnet 10.0.20.0 netmask 255.255.255.0 {
range 10.0.20.10 10.0.20.100;
option routers 10.0.20.1;
}
🔐 六、防火墙与安全
若启用 ufw 防火墙,需放行 DHCP 流量:
sudo ufw allow dhcp # 或指定端口:sudo ufw allow 67/udp
💻 七、开机自启动优化
避免因网络未就绪导致服务失败,创建自启脚本:
新建 /etc/init.d/dhcp-delay-start:
#!/bin/bash
sleep15*# 等待网络初始化*
systemctl restart isc-dhcp-server设置可执行权限并启用:
sudochmod +x /etc/init.d/dhcp-delay-start
sudo update-rc.d dhcp-delay-start defaults
💎 总结建议
配置优先级:先验证 dhcpd.conf 语法 → 检查网卡名 → 再查端口冲突
生产环境必做:
- 启用静态 IP 绑定避免地址冲突
- 配置 max-lease-time 防止 IP 枯竭
排错黄金命令:
sudo systemctl status isc-dhcp-server && journalctl -xe
通过以上步骤,可快速搭建稳定 DHCP 服务。若需动态 DNS 或 IPv6 支持,需额外集成 BIND9 并配置 dhcpd6.conf。