凌峰创科服务平台

Linux DHCP服务器安装步骤有哪些?

DHCP (Dynamic Host Configuration Protocol) 动态主机配置协议,用于自动为网络中的客户端分配 IP 地址、子网掩码、网关、DNS 等网络参数,在 Linux 上,最常用的 DHCP 服务器软件是 isc-dhcp-server (ISC Internet Systems Consortium DHCP Server)。

Linux DHCP服务器安装步骤有哪些?-图1
(图片来源网络,侵删)

本指南将分为以下几个部分:

  1. 准备工作
  2. 安装 DHCP 服务器
  3. 基本配置
  4. 启动与管理服务
  5. 客户端测试
  6. 高级配置(可选)
  7. 常见问题排查

准备工作

在开始之前,请确保你已具备以下条件:

  • 一台运行 Linux 的服务器(推荐使用 Ubuntu Server 或 CentOS/RHEL Server)。
  • 服务器拥有 sudoroot 权限。
  • 明确你的网络规划,特别是:
    • 分配的网段168.1.0/24
    • 路由器/网关地址168.1.1
    • DNS 服务器地址8.8.81.1.1 或你的内部 DNS 服务器。
    • 要分配的 IP 地址范围:例如从 168.1.100168.1.200
    • 服务器自身的静态 IP 地址:确保服务器本身有一个固定的 IP,168.1.10

安装 DHCP 服务器

根据你的 Linux 发行版选择对应的命令。

对于 Ubuntu/Debian 系统

# 更新软件包列表
sudo apt update
# 安装 isc-dhcp-server
sudo apt install isc-dhcp-server

安装过程中,系统可能会提示你选择一个网络接口来监听 DHCP 请求,由于我们稍后会手动配置,这里可以直接按 Esc 键跳过,选择“不配置”。

Linux DHCP服务器安装步骤有哪些?-图2
(图片来源网络,侵删)

对于 CentOS/RHEL/Fedora 系统

# 首先确保 EPEL 仓库已启用(对于 RHEL/CentOS 7/8)
# sudo yum install epel-release  # 对于 CentOS 7/8
# sudo dnf install epel-release   # 对于 Fedora / CentOS 8/9
# 安装 dhcp-server 软件包
# 对于 CentOS 7/RHEL 7 使用 yum
sudo yum install dhcp-server
# 对于 CentOS 8/RHEL 8/Fedora 使用 dnf
# sudo dnf install dhcp-server

安装完成后,dhcpd 的配置文件 /etc/dhcp/dhcpd.conf 是一个示例文件,我们需要清空它并从头开始配置。


基本配置

这是最核心的一步,我们需要编辑主配置文件 /etc/dhcp/dhcpd.conf

步骤 1:备份原配置文件

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

步骤 2:清空并编辑配置文件

使用你喜欢的文本编辑器(如 nanovim)打开并清空 /etc/dhcp/dhcpd.conf

sudo nano /etc/dhcp/dhcpd.conf

步骤 3:写入基本配置

粘贴到文件中,并根据你的网络规划修改相关参数。

Linux DHCP服务器安装步骤有哪些?-图3
(图片来源网络,侵删)
# 根据你的网络修改以下参数
# 声明这是一个 DHCP v4 服务器
ddns-update-style none;
# 默认租约时间(秒),客户端在租约过半后会尝试续租
default-lease-time 600;
# 最大租约时间(秒),客户端租约的最大时长
max-lease-time 7200;
# 在日志中显示客户端的主机名
option domain-name-servers 8.8.8.8, 1.1.1.1; # 设置 DNS 服务器
# 声明要提供网络信息的网段
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 broadcast-address 192.168.1.255;
    # DNS 域名 (可选)
    option domain-name "local.lan";
}

配置解释:

  • ddns-update-style none;: 禁用动态 DNS 更新,除非你有专门的 DNS 服务器(如 BIND)与之配合,否则保持此设置。
  • default-lease-timemax-lease-time: 控制客户端 IP 地址的租期。
  • option domain-name-servers: 指定客户端应使用的 DNS 服务器。
  • subnet ... { ... }: 定义一个子网配置块。
    • range ...;: 定义 DHCP 可以分配的 IP 地址范围。
    • option routers ...;: 指定客户端的默认网关。
    • option broadcast-address ...;: 指定子网的广播地址。

重要提示: 如果你的服务器有多个网络接口,并且你只想让它在某个特定的接口上提供 DHCP 服务,你需要编辑 /etc/default/isc-dhcp-server (Ubuntu/Debian) 或 /etc/sysconfig/dhcpd (CentOS/RHEL) 文件。

  • Ubuntu/Debian:

    sudo nano /etc/default/isc-dhcp-server

    找到 INTERFACESv4="" 这一行,修改为你的接口名,INTERFACESv4="eth0"INTERFACESv4="ens33"

  • CentOS/RHEL:

    sudo nano /etc/sysconfig/dhcpd

    找到 DHCPDARGS="" 这一行,修改为 DHCPDARGS="eth0"DHCPDARGS="ens33"


启动与管理服务

配置完成后,现在可以启动 DHCP 服务了。

启动服务

  • Ubuntu/Debian (使用 systemd):

    sudo systemctl start isc-dhcp-server
  • CentOS/RHEL (使用 systemd):

    sudo systemctl start dhcpd

设置开机自启

  • Ubuntu/Debian:

    sudo systemctl enable isc-dhcp-server
  • CentOS/RHEL:

    sudo systemctl enable dhcpd

检查服务状态

# Ubuntu/Debian
sudo systemctl status isc-dhcp-server
# CentOS/RHEL
sudo systemctl status dhcpd

如果看到 active (running),则表示服务已成功启动,如果启动失败,请检查 /var/log/syslog (Ubuntu) 或 /var/log/messages (CentOS) 中的错误信息。


客户端测试

你可以将另一台设备(如笔记本电脑或另一台虚拟机)连接到同一网络,并设置为“自动获取 IP 地址”。

在客户端上,打开命令行,使用以下命令检查是否成功获取到 IP:

在 Windows 上

打开命令提示符,运行:

ipconfig /renew
ipconfig

查看是否有从 DHCP 服务器获取到的 IP 地址、子网掩码、默认网关和 DNS。

在 Linux/macOS 上

# 使用 dhclient (如果系统使用它)
sudo dhclient -r  # 释放当前 IP
sudo dhclient    # 重新获取 IP
# 然后查看 IP 配置
ip addr show

如果客户端成功获取到了你在 dhcpd.conf 中配置的 IP 地址段(168.1.1xx),那么恭喜你,DHCP 服务器已经正常工作了!


高级配置(可选)

为特定设备分配固定 IP (静态租约)

如果你希望某个设备(如打印机、服务器)总是获得同一个固定的 IP 地址,你可以使用 host 声明。

/etc/dhcp/dhcpd.conf 文件中,subnet 声明的后面添加以下内容:

# 为特定 MAC 地址的设备分配固定 IP
host printer-server {
    hardware ethernet 00:0A:95:9D:68:16; # 设备的 MAC 地址
    fixed-address 192.168.1.50;          # 为其分配的固定 IP
}

hardware ethernet 替换为你设备的实际 MAC 地址。

查看租约信息

DHCP 服务器会维护一个租约数据库,你可以查看它来了解当前分配的 IP 地址。

  • Ubuntu/Debian:

    sudo cat /var/lib/dhcp/dhcpd.leases
  • CentOS/RHEL:

    sudo cat /var/lib/dhcpd/dhcpd.leases

    这个文件会显示每个客户端的 MAC 地址、获取的 IP、租约开始和结束时间等信息。


常见问题排查

  1. 客户端无法获取 IP 地址

    • 检查服务状态:确认 isc-dhcp-serverdhcpd 服务正在运行。
    • 检查防火墙:确保服务器上的防火墙没有阻止 DHCP 流量,DHCP 使用 UDP 端口 67 (服务器) 和 68 (客户端)。
      • UFW (Ubuntu): sudo ufw allow 67/udp
      • Firewalld (CentOS): sudo firewall-cmd --permanent --add-service=dhcp && sudo firewall-cmd --reload
    • 检查网络接口配置:确认 /etc/default/isc-dhcp-server/etc/sysconfig/dhcpd 中指定的接口是正确的,并且该接口已启动。
    • 检查日志:这是最重要的步骤!
      • Ubuntu: sudo tail -f /var/log/syslog | grep dhcpd
      • CentOS: sudo tail -f /var/log/messages | grep dhcpd 查看日志中是否有错误信息,如 No subnet declaration for... (通常表示 subnet 配置错误) 或 Unable to create listen socket for... (表示接口问题)。
  2. 客户端获取的 IP 不在设定的范围内

    • 检查 dhcpd.conf 文件中的 range 声明是否正确无误。
  3. 客户端获取的 IP 后很快就丢失了

    • 检查 default-lease-timemax-lease-time 的值是否设置得过小。
    • 检查客户端是否因为无法联系到 DHCP 服务器而导致租约续约失败。

希望这份详细的指南能帮助你成功搭建 Linux DHCP 服务器!

分享:
扫描分享到社交APP
上一篇
下一篇