凌峰创科服务平台

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

第一步:安装 DHCP 服务器软件

你需要在你的服务器上安装 DHCP 服务器的软件包。

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

对于 Ubuntu/Debian 系统

使用 apt 包管理器进行安装:

sudo apt update
sudo apt install isc-dhcp-server -y

对于 CentOS/RHEL/Fedora 系统

使用 yumdnf 包管理器进行安装:

# 对于 CentOS/RHEL 7/8
sudo yum install dhcp-server -y
# 对于 Fedora 或 CentOS/RHEL 8+
sudo dnf install dhcp-server -y

第二步:主配置文件 (dhcpd.conf)

DH服务器的核心配置文件是 /etc/dhcp/dhcpd.conf (在 Debian/Ubuntu 上) 或 /etc/dhcpd.conf (在较旧的 RHEL/CentOS 上),这是你需要花费最多时间的地方。

备份原始配置

在进行任何修改之前,最好先备份原始文件:

Linux配置DHCP服务器步骤有哪些?-图2
(图片来源网络,侵删)
# Ubuntu/Debian
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
# RHEL/CentOS
sudo cp /etc/dhcpd.conf /etc/dhcpd.conf.bak

编辑配置文件

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

sudo nano /etc/dhcp/dhcpd.conf

默认情况下,这个文件可能包含很多示例和注释,你可以将它们全部删除或注释掉(在行首加 ),然后粘贴以下基本配置模板。

基本配置模板

下面是一个清晰、可用的配置模板,请根据你的网络环境修改其中的参数。

# 全局配置选项
# 默认租约时间(客户端在未续租前可以使用的IP时间)
default-lease-time 600;
# 最大租约时间(客户端可以请求的最长IP使用时间)
max-lease-time 7200;
# 日志记录到 syslog
# log-facility local7;
# --- 网络段配置 ---
# 这里我们为 192.168.1.0/24 网络段配置DHCP服务
# 你可以根据需要添加多个 subnet 块来为不同网段服务
subnet 192.168.1.0 netmask 255.255.255.0 {
  # 网关地址
  option routers 192.168.1.1;
  # DNS 服务器地址
  # 你可以提供公共DNS(如 8.8.8.8)或你自己的内网DNS
  option domain-name-servers 8.8.8.8, 1.1.1.1;
  # 分配给客户端的IP地址范围
  # 从 192.168.1.100 到 192.168.1.200
  range 192.168.1.100 192.168.1.200;
  # 排除的静态IP地址(这些地址不会被动态分配)
  # 通常用于服务器、打印机等需要固定IP的设备
  # host my-printer {
  #   hardware ethernet 00:11:22:33:44:55;
  #   fixed-address 192.168.1.10;
  # }
}

配置参数解释:

Linux配置DHCP服务器步骤有哪些?-图3
(图片来源网络,侵删)
  • subnet: 定义你要提供DHCP服务的网络段。
  • netmask: 该网络的子网掩码。
  • option routers: 指定客户端的默认网关。
  • option domain-name-servers: 指定客户端使用的DNS服务器,可以设置多个,用逗号隔开。
  • range: 定义可以动态分配的IP地址池。
  • default-lease-timemax-lease-time: 控制IP地址租约的时间(秒)。
  • host ... { ... }: (可选)为特定设备分配静态IP地址。
    • hardware ethernet: 客户端的MAC地址。
    • fixed-address: 要分配给该客户端的固定IP地址。

第三步:指定监听的网络接口

DHCP服务器需要知道应该在哪个网络接口上监听客户端的请求,这通常在配置文件中指定。

对于 Ubuntu/Debian 系统

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

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

找到 INTERFACESv4 这一行,并修改为你服务器上连接到客户端网络的接口名称(eth0, ens33, ens160 等)。

# 将 INTERFACESv4="" 修改为:
INTERFACESv4="eth0" 

对于 CentOS/RHEL 系统

编辑 /etc/sysconfig/dhcpd 文件:

sudo nano /etc/sysconfig/dhcpd

找到 DHCPDARGS 这一行,并指定接口名称。

# 将 DHCPDARGS="" 修改为:
DHCPDARGS="eth0"

或者,你也可以让它在所有可用的接口上监听(不推荐,除非你有特定需求):

DHCPDARGS="eth0"

第四步:启动并启用 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

注意: 在 RHEL/CentOS 上,如果服务器有多个网络接口,你可能需要创建一个 dhcpd.service 的配置文件来明确指定它应该在哪个接口上运行,或者使用 DHCPDARGS 变量。


第五步:检查配置和日志

如果服务启动失败,首先检查配置文件是否有语法错误。

检查配置语法

  • Ubuntu/Debian:

    sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf

    如果配置正确,会输出 Configuration file is OK

  • RHEL/CentOS:

    sudo dhcpd -t -cf /etc/dhcpd.conf

查看日志

日志是排查问题的最佳工具。

  • Ubuntu/Debian: 日志通常记录在 /var/log/syslog 中,你可以使用 grep 来过滤 DHCP 相关的日志:

    grep dhcpd /var/log/syslog
  • RHEL/CentOS: 日志通常记录在 /var/log/messages 中:

    grep dhcpd /var/log/messages

第六步:客户端测试

将一台客户端电脑(如你的笔记本或另一台虚拟机)的IP地址设置为“自动获取IP地址(DHCP)”,使用以下命令检查是否成功从你的DHCP服务器获取了地址:

  • Windows: 打开命令提示符,运行 ipconfig /renew,然后查看 ipconfig 的结果。
  • Linux: 运行 sudo dhclient eth0 (替换为你的接口名),然后运行 ip addr show

你应该能看到客户端从你配置的地址池(168.1.100200)中获取了一个IP地址,并且网关和DNS也正确配置。


常见问题与排错

  1. 服务启动失败,提示 "No subnet declaration for..."

    • 原因: dhcpd.conf 文件中没有为你服务器所在网络定义 subnet 块,或者服务器自身没有IP地址在那个网段上。
    • 解决: 确保你的服务器有一个IP地址在你要提供DHCP服务的网段内,dhcpd.conf 中有对应的 subnet 配置。
  2. 客户端无法获取IP地址

    • 原因:
      • 防火墙阻止了DHCP流量(UDP端口67和68)。
      • 网线或网络连接问题。
      • 另一个DHCP服务器已经在网络上运行(你的家用路由器)。
      • IP地址池中的所有地址都已分配完毕。
    • 解决:
      • 临时关闭防火墙进行测试:sudo ufw disable (Ubuntu) 或 sudo systemctl stop firewalld (CentOS)。
      • 使用 Wireshark 等工具在服务器上抓包,查看是否收到DHCP Discover请求。
      • 检查你的家用路由器是否开启了DHCP功能,如果开启了,请关闭它,因为网络上只能有一个DHCP服务器。
  3. 客户端获取到错误的IP/网关/DNS

    • 原因: dhcpd.conf 中的 option routersoption domain-name-servers 配置错误。
    • 解决: 仔细检查并修正配置文件中的这些选项,然后重启DHCP服务。

通过以上步骤,你应该就能成功地在你的 Linux 服务器上配置一个功能正常的 DHCP 服务器了。

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