凌峰创科服务平台

Linux下DHCP服务器配置如何快速完成?

第一部分:基础概念

在开始配置前,先了解几个核心概念:

Linux下DHCP服务器配置如何快速完成?-图1
(图片来源网络,侵删)
  • DHCP (Dynamic Host Configuration Protocol):动态主机配置协议,它是一种网络协议,用于自动分配 IP 地址、子网掩码、网关、DNS 服务器等网络参数给网络中的客户端。
  • 作用域:一个 IP 地址池,DHCP 服务器从这个池中为客户端分配地址。
  • 租约:客户端从 DHCP 服务器获得的 IP 地址及其相关配置信息都有一个有效期(租约时间)。
  • 排除地址:在作用域中,你需要为一些需要固定 IP 的设备(如服务器、打印机)保留一些 IP 地址,不参与动态分配,这些地址就是“排除”的地址。
  • 保留地址:将某个设备的 MAC 地址与一个固定的 IP 地址绑定,确保该设备每次都能获得相同的 IP 地址。

第二部分:安装 DHCP 服务器

我们以 isc-dhcp-server(Debian/Ubuntu)和 dhcp(CentOS/RHEL)为例。

对于 Ubuntu/Debian 系统

  1. 更新软件包列表:

    sudo apt update
  2. 安装 isc-dhcp-server

    sudo apt install -y isc-dhcp-server

    安装完成后,服务通常会自动启动。

    Linux下DHCP服务器配置如何快速完成?-图2
    (图片来源网络,侵删)

对于 CentOS/RHEL/Fedora 系统

  1. 安装 dhcp 包:

    sudo yum install -y dhcp
    # 或者对于 dnf 系统 (如 Fedora, CentOS 8+)
    # sudo dnf install -y dhcp
  2. 复制并编辑配置文件模板(如果不存在):

    sudo cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

第三部分:配置 DHCP 服务器

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

备份原始配置文件

在进行任何修改前,请务必备份原始文件。

Linux下DHCP服务器配置如何快速完成?-图3
(图片来源网络,侵删)
# Ubuntu/Debian
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
# CentOS/RHEL
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

编辑主配置文件

使用你喜欢的文本编辑器(如 nano, vim)打开配置文件。

sudo nano /etc/dhcp/dhcpd.conf

默认情况下,该文件可能包含大量注释和示例,我们可以清空它,然后从头开始编写自己的配置,或者在其基础上修改,这里我们从头开始写一个清晰的示例。

一个完整的配置示例

以下是一个典型的家庭或小型办公室网络配置示例,请根据你的网络环境修改相关参数(如 subnet, range, option routers 等)。

# 默认租约时间(秒),客户端在未续租前可使用该地址的时间
default-lease-time 600;
# 最大租约时间(秒),客户端可申请的最长租用时间
max-lease-time 7200;
# 日志记录配置(可选,但推荐)
# 将 dhcpd 的日志发送到 syslog 的 'daemon' 设施
log-facility local7;
# --- 定义一个作用域 ---
# 假设你的网络是 192.168.1.0/24
# DHCP 服务器监听的网卡是 eth0 (请根据实际情况修改)
# 在 /etc/default/isc-dhcp-server (Ubuntu) 或 /etc/sysconfig/dhcpd (CentOS) 中指定
subnet 192.168.1.0 netmask 255.255.255.0 {
    # 分配给客户端的 IP 地址池
    # 从 192.168.1.100 到 192.168.1.200
    range 192.168.1.100 192.168.1.200;
    # 排除的 IP 地址,不参与动态分配
    # 通常用于需要固定 IP 的服务器、路由器等
    # 排除 192.168.1.1 到 192.168.1.99
    # 注意:这里的范围要与你的路由器/网关地址一致
    option routers 192.168.1.1;
    option subnet-mask 255.255.255.0;
    # DNS 服务器地址
    # 通常是你路由器的地址或公共 DNS,如 8.8.8.8
    option domain-name-servers 8.8.8.8, 1.1.1.1;
    # 广告域(可选)
    option domain-name "localdomain";
    # 为特定客户端保留 IP 地址(可选)
    # host my-printer {
    #     hardware ethernet 00:1A:2B:3C:4D:5E;  # 打印机的 MAC 地址
    #     fixed-address 192.168.1.10;           # 为其保留的 IP 地址
    # }
}

配置详解:

  • subnet ... { ... }:定义一个 IP 子网及其配置。
  • range ... ...:定义动态 IP 地址池的范围。
  • option routers ...:指定客户端的默认网关。
  • option subnet-mask ...:指定子网掩码。
  • option domain-name-servers ...:指定客户端的 DNS 服务器,可以指定多个。
  • host ... { ... }:为单个主机保留 IP 地址。hardware ethernet 是客户端的 MAC 地址(小写,无冒号或带冒号均可),fixed-address 是要分配给它的固定 IP。

第四部分:指定 DHCP 服务器监听的网卡

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

对于 Ubuntu/Debian 系统

编辑文件 /etc/default/isc-dhcp-server

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

找到 INTERFACESv4 这一行,取消注释并修改为你希望 DHCP 服务器监听的网卡名称(如 eth0, ens33, ens160)。

# 默认是注释掉的
# INTERFACESv4=""
# 修改为你的网卡名称,ens33
INTERFACESv4="ens33"

对于 CentOS/RHEL 系统

编辑文件 /etc/sysconfig/dhcpd

sudo nano /etc/sysconfig/dhcpd

找到 DHCPDARGS 这一行,修改为你的网卡名称。

# 默认可能是 -q 或为空
# DHCPDARGS="-q"
# 修改为你的网卡名称,ens33
# 如果要监听所有接口,可以使用 DHCPDARGS=""
# 如果要指定特定接口,使用 DHCPDARGS=ens33
DHCPDARGS=ens33

第五部分:启动并启用 DHCP 服务

配置完成后,启动服务并设置为开机自启。

对于 Ubuntu/Debian (使用 systemd)

# 启动服务
sudo systemctl start isc-dhcp-server
# 设置开机自启
sudo systemctl enable isc-dhcp-server
# 查看服务状态
sudo systemctl status isc-dhcp-server

对于 CentOS/RHEL (使用 systemd)

# 启动服务
sudo systemctl start dhcpd
# 设置开机自启
sudo systemctl enable dhcpd
# 查看服务状态
sudo systemctl status dhcpd

第六部分:验证配置

  1. 检查服务状态: 确保 active (running)

  2. 查看日志: 查看日志是排查问题的最佳方式。

    # Ubuntu/Debian
    tail -f /var/log/syslog | grep dhcpd
    # CentOS/RHEL
    tail -f /var/log/messages | grep dhcpd

    或者使用 journalctl

    journalctl -u isc-dhcp-server.service -f
  3. 在客户端上测试: 将一台客户端(如你的电脑或手机)的 IP 地址设置为“自动获取(DHCP)”,然后检查其网络配置,你应该能看到它从你的 DHCP 服务器那里获取了 IP 地址、网关和 DNS 信息。

  4. 查看 IP 地址租约: 你可以在 DHCP 服务器上查看当前的地址租约情况。

    # Ubuntu/Debian
    sudo cat /var/lib/dhcp/dhcpd.leases
    # CentOS/RHEL
    sudo cat /var/lib/dhcpd/dhcpd.leases

    这个文件会记录所有已分配的 IP 地址、客户端 MAC 地址、租约开始和结束时间等信息。


第七部分:常见问题排查

  • 服务启动失败

    • 检查配置文件语法错误:sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf,如果配置有误,它会提示你。
    • 检查 /etc/default/isc-dhcp-server/etc/sysconfig/dhcpd 中指定的网卡是否存在并且已启动。
    • 检查防火墙是否阻止了 DHCP 端口(UDP 67 和 68),在服务器上运行 sudo ufw allow dhcp (Ubuntu) 或配置 firewalld。
  • 客户端无法获取 IP

    • 确保客户端和 DHCP 服务器在同一个网段。
    • 确保网络线缆连接正确,并且客户端能 ping 通网关。
    • 检查网络上是否已经有另一台 DHCP 服务器(例如你的家用路由器),可能导致冲突。
    • 检查 /var/log/syslog/var/log/messages 中的错误信息。
  • IP 地址范围不够用

    • 修改 dhcpd.conf 文件中的 range 值,然后重启 DHCP 服务:sudo systemctl restart isc-dhcp-server

第八部分:总结

配置 Linux 下的 DHCP 服务器主要分为以下几个步骤:

  1. 安装 isc-dhcp-serverdhcp 包。
  2. 编辑 /etc/dhcp/dhcpd.conf,定义作用域、地址池、网关、DNS 等核心参数。
  3. 指定 服务器监听的网卡(在 /etc/default/isc-dhcp-server/etc/sysconfig/dhcpd 中)。
  4. 启动启用 DHCP 服务。
  5. 验证 配置是否生效,并查看日志进行排错。

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

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