Linux 下搭建 DHCP Server

Lear 2025-08-11 14:10:00
Categories: > Tags:

Linux 下搭建 DHCP Server

以下是安装与配置 isc-dhcp-server 的完整指南,涵盖安装步骤、配置详解、故障排查及高级功能,适用于 Ubuntu/Debian 系统:

🔧 一、安装步骤

  1. 更新软件源
    确保系统包列表最新:

    sudoapt update

  2. 安装 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;# 广播地址
}

关键注意

▶️ 三、启动与验证

  1. 重启服务

    sudo systemctl restart isc-dhcp-server

  2. 设置开机自启

    sudo systemctl enable isc-dhcp-server

  3. 检查服务状态

    sudo systemctl status isc-dhcp-server

    • 正常状态显示:active (running)
  4. 验证端口监听
    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

💻 七、开机自启动优化

避免因网络未就绪导致服务失败,创建自启脚本:

  1. 新建 /etc/init.d/dhcp-delay-start:

    #!/bin/bash
    sleep15*# 等待网络初始化*
    systemctl restart isc-dhcp-server

  2. 设置可执行权限并启用:

    sudochmod +x /etc/init.d/dhcp-delay-start
    sudo update-rc.d dhcp-delay-start defaults

💎 总结建议

  1. 配置优先级:先验证 dhcpd.conf 语法 → 检查网卡名 → 再查端口冲突

  2. 生产环境必做

    • 启用静态 IP 绑定避免地址冲突
    • 配置 max-lease-time 防止 IP 枯竭
  3. 排错黄金命令

    sudo systemctl status isc-dhcp-server && journalctl -xe

通过以上步骤,可快速搭建稳定 DHCP 服务。若需动态 DNS 或 IPv6 支持,需额外集成 BIND9 并配置 dhcpd6.conf。