凌峰创科服务平台

Linux DHCP服务器配置步骤有哪些?

概述

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

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

本教程将涵盖:

  1. 安装 DHCP 服务器软件
  2. 配置核心文件 (dhcpd.conf)
  3. 启动和管理 DHCP 服务
  4. 客户端测试
  5. 排错与常见问题

第一步:安装 DHCP 服务器

你需要在你的 Linux 服务器上安装 isc-dhcp-server (Debian/Ubuntu) 或 dhcp (CentOS/RHEL)。

对于 Debian / Ubuntu 系统

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

安装过程中,它可能会提示你选择一个网络接口来监听 DHCP 请求,你应该选择连接到你的 局域网 的接口(eth0, ens33),如果你不确定,可以先不选,稍后在配置文件中指定。

对于 CentOS / RHEL / Rocky Linux / AlmaLinux 系统

# 首先确保 EPEL 仓库已启用
sudo dnf install epel-release
# 安装 DHCP 服务器
sudo dnf install dhcp

在 CentOS/RHEL 系统上,安装完成后,主配置文件 /etc/dhcp/dhcpd.conf 可能是一个模板文件,你需要备份并清空它,然后创建自己的配置。

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

第二步:配置 DHCP 服务器

这是最关键的一步,配置文件的主要位置是:

  • Debian/Ubuntu: /etc/dhcp/dhcpd.conf
  • CentOS/RHEL: /etc/dhcp/dhcpd.conf

备份原始配置文件

# Debian/Ubuntu
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig
# CentOS/RHEL
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig

编辑配置文件

使用你喜欢的文本编辑器(如 nanovim)打开配置文件:

sudo nano /etc/dhcp/dhcpd.conf

清空文件内容(如果存在模板),并粘贴以下示例配置。请务必根据你的网络环境修改参数

示例配置 (dhcpd.conf)

# 标准配置头
# 告诉服务器它不是权威的 DNS 服务器
# 对于家庭/办公室网络,这通常可以忽略或设为 'false'
# authoritative;
# 定义一个共享网络配置块
# '192.168.1.0' 是你的局域网网络地址
# 'netmask 255.255.255.0' 是子网掩码
subnet 192.168.1.0 netmask 255.255.255.0 {
    # --- 可分配的 IP 地址范围 ---
    # range 起始IP 结束IP;
    # 注意:起始和结束 IP 应该在你的网络范围内,并且不要与服务器、路由器或其他静态设备的 IP 冲突。
    range 192.168.1.100 192.168.1.200;
    # --- 默认网关 ---
    # option routers 路由器IP;
    option routers 192.168.1.1;
    # --- DNS 服务器 ---
    # option domain-name-servers DNS服务器IP1, DNS服务器IP2;
    # 通常使用你的路由器地址或公共 DNS,如 8.8.8.8
    option domain-name-servers 8.8.8.8, 1.1.1.1;
    # --- 域名 ---
    # option domain-name "yourdomain.local";
    # 这会给客户端设置默认域名,可选
    # --- IP 地址租约时间 ---
    # default-lease-time 600;      # 默认租约时间(秒)
    # max-lease-time 7200;        # 最大租约时间(秒)
    # 默认租1小时,最大租2小时
    default-lease-time 3600;
    max-lease-time 7200;
    # --- 为特定主机分配固定 IP (可选) ---
    # 使用客户端的 MAC 地址来绑定一个固定的 IP 地址
    # host my-printer {
    #     hardware ethernet 00:11:22:33:44:55; # 打印机的 MAC 地址
    #     fixed-address 192.168.1.10;           # 分配给它的固定 IP
    # }
}

配置参数详解

  • subnet: 定义一个 DHCP 作用域,你需要指定你的网络地址和子网掩码。
  • range: 定义可以动态分配的 IP 地址池。
  • option routers: 指定客户端的默认网关。
  • option domain-name-servers: 指定客户端的 DNS 服务器。
  • default-lease-time: 客户端在没有请求续约的情况下,可以使用该 IP 地址的默认时间。
  • max-lease-time: 客户端可以获得的最长租约时间。
  • host: 用于为特定设备(通过其 MAC 地址)分配一个固定的、永久的 IP 地址,这被称为 DHCP 保留静态绑定

第三步:启动和管理 DHCP 服务

指定监听的网络接口

DHCP 服务器需要知道在哪个网络接口上监听客户端的请求。

Linux DHCP服务器配置步骤有哪些?-图3
(图片来源网络,侵删)
  • Debian/Ubuntu: 编辑 /etc/default/isc-dhcp-server 文件:

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

    找到 INTERFACESv4="" 这一行,将其修改为你的 LAN 接口名称:

    INTERFACESv4="eth0"
    # 或者可能是 ens33, br0 等
  • CentOS/RHEL: 编辑 /etc/sysconfig/dhcpd 文件:

    sudo nano /etc/sysconfig/dhcpd

    找到 DHCPDARGS= 这一行,可以指定接口,

    DHCPDARGS=eth0
    # 或者可以指定多个接口:DHCPDARGS="eth0 eth1"

启动并启用服务

你可以启动 DHCP 服务,并设置为开机自启。

  • 对于使用 systemd 的系统 (现代的 Debian, Ubuntu, CentOS, RHEL 等):

    # 启动服务
    sudo systemctl start isc-dhcp-server   # Debian/Ubuntu
    sudo systemctl start dhcpd             # CentOS/RHEL
    # 设置开机自启
    sudo systemctl enable isc-dhcp-server   # Debian/Ubuntu
    sudo systemctl enable dhcpd             # CentOS/RHEL

检查服务状态

# 查看服务是否正在运行
sudo systemctl status isc-dhcp-server   # Debian/Ubuntu
sudo systemctl status dhcpd             # CentOS/RHEL
# 查看详细的日志,这对于排错至关重要
# 在 Debian/Ubuntu 上
sudo journalctl -u isc-dhcp-server -f
# 在 CentOS/RHEL 上
sudo journalctl -u dhcpd -f

第四步:客户端测试

你可以用另一台连接到同一网络的设备来测试了。

  1. Windows 客户端:

    • 打开命令提示符 (cmd)。
    • 运行 ipconfig /release(如果之前有 IP)。
    • 运行 ipconfig /renew
    • 再次运行 ipconfig,检查获取到的 IP 地址是否在你配置的 168.1.100168.1.200 范围内,网关和 DNS 是否正确。
  2. Linux/macOS 客户端:

    • 打开终端。
    • 如果使用 dhclient (常见于 Linux),可以运行:
      sudo dhclient -r  # 释放当前 IP
      sudo dhclient     # 重新获取 IP
    • 使用 ip aifconfig 命令检查网络接口获取到的 IP 信息。

第五步:排错与常见问题

如果客户端无法获取到 IP,请按以下步骤排查:

  1. 检查 DHCP 服务状态:

    sudo systemctl status isc-dhcp-server

    确保服务是 active (running) 状态。

  2. 检查日志文件:

    • Debian/Ubuntu: sudo journalctl -u isc-dhcp-server
    • CentOS/RHEL: sudo journalctl -u dhcpd
    • 通用日志位置: /var/log/syslog (Debian/Ubuntu) 或 /var/log/messages (CentOS/RHEL)。 日志中会明确指出错误原因,
    • No free leases on subnet...: IP 地址池已用完。
    • No subnet declaration for...: 配置文件中缺少对应网络的 subnet 块。
    • Not configured to listen on any interfaces...: 监听的接口配置错误。
  3. 检查网络接口配置:

    • 确保你在 /etc/default/isc-dhcp-server/etc/sysconfig/dhcpd 中指定的接口名称是正确的,并且该接口是 UP 状态。
    • 使用 ip a 命令查看所有网络接口及其状态。
  4. 检查防火墙: 防火墙可能会阻止 DHCP 通信(UDP 端口 67 和 68),如果你启用了防火墙,需要允许这些端口。

    • 使用 ufw (Ubuntu):
      sudo ufw allow 67/udp  # DHCP Server
      sudo ufw allow 68/udp  # DHCP Client
    • 使用 firewalld (CentOS/RHEL):
      sudo firewall-cmd --permanent --add-service=dhcp
      sudo firewall-cmd --reload
  5. 检查 IP 地址冲突: 确保你的 DHCP 范围 (168.1.100-200) 中的 IP 没有被服务器、路由器或其他设备静态使用,可以使用 ping 命令测试范围内的 IP 是否已被占用。

  6. 检查配置文件语法: 在重启服务前,可以检查配置文件的语法是否正确。

    • Debian/Ubuntu:
      sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf

      如果没有输出,则语法正确,如果有错误,会提示具体位置。

    • CentOS/RHEL:
      sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf

通过以上步骤,你应该能够成功地在 Linux 服务器上部署并运行一个功能完善的 DHCP 服务器。

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