凌峰创科服务平台

linux dhcp服务器搭建

第一部分:核心概念简介

在开始之前,我们先简单了解几个关键概念:

linux dhcp服务器搭建-图1
(图片来源网络,侵删)
  • DHCP (Dynamic Host Configuration Protocol):动态主机配置协议,它是一种网络协议,用于自动为网络中的设备分配 IP 地址、子网掩码、网关、DNS 等网络参数。
  • 作用域:一个 IP 地址池,即 DHCP 服务器可以分配给客户端的 IP 地址范围。
  • 租约:客户端从 DHCP 服务器获得一个 IP 地址后,这个地址的使用是有时间限制的(24 小时),租约到期前,客户端会请求续租;如果续租失败,则会释放该 IP 并重新申请。
  • 排除地址:在作用域范围内,有些地址需要固定分配给特定设备(如服务器、打印机、路由器),这些地址不能被 DHCP 随机分配,需要“排除”出去。

第二部分:安装与配置

我们将分步进行:

  1. 安装 DHCP 服务器软件。
  2. 配置 DHCP 服务。
  3. 启动并启用服务。
  4. 验证配置和服务状态。

Ubuntu / Debian 系统

步骤 1: 更新系统并安装 DHCP 服务器

打开终端,执行以下命令:

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

安装完成后,DHCP 服务会自动启动,但它的配置文件是空的,所以还无法正常工作。

步骤 2: 配置 DHCP 服务器

我们需要编辑主配置文件 /etc/dhcp/dhcpd.conf,在修改前,强烈建议先备份原文件

linux dhcp服务器搭建-图2
(图片来源网络,侵删)
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

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

sudo nano /etc/dhcp/dhcpd.conf

这个文件默认有很多注释和示例,为了清晰,我们可以将其清空,然后添加我们自己的配置,下面是一个完整的、带有详细注释的配置示例。

# dhcpd.conf
# 根据你的网络环境修改以下参数
# 示例网络:192.168.1.0/24
# 路由器/网关地址:192.168.1.1
# DNS 服务器地址:8.8.8.8 和 1.1.1.1
# 默认租约时间(秒),86400 秒 = 24 小时
default-lease-time 86400;
# 最大租约时间(秒),604800 秒 = 7 天
max-lease-time 604800;
# 这部分是必需的,告诉 DHCP 服务器它应该监听哪个网络接口。
# 如果你的服务器有多个网卡,请指定提供 DHCP 服务的那个。
# eth0 或 ens33,可以通过 'ip a' 命令查看接口名。
authoritative;
# subnet 192.168.1.0 netmask 255.255.255.0 {
#   range 192.168.1.100 192.168.1.200;
#   option routers 192.168.1.1;
#   option domain-name-servers 8.8.8.8, 1.1.1.1;
# }

将上面的注释部分替换为你的实际配置:

# dhcpd.conf
# 根据你的网络环境修改以下参数
# 示例网络:192.168.1.0/24
# 路由器/网关地址:192.168.1.1
# DNS 服务器地址:8.8.8.8 和 1.1.1.1
# 默认租约时间(秒),86400 秒 = 24 小时
default-lease-time 86400;
# 最大租约时间(秒),604800 秒 = 7 天
max-lease-time 604800;
# 这部分是必需的,告诉 DHCP 服务器它应该监听哪个网络接口。
# 如果你的服务器有多个网卡,请指定提供 DHCP 服务的那个。
# eth0 或 ens33,可以通过 'ip a' 命令查看接口名。
authoritative;
# 定义一个作用域,为 192.168.1.0/24 网段提供服务
subnet 192.168.1.0 netmask 255.255.255.0 {
    # 定义可分配的 IP 地址池
    range 192.168.1.100 192.168.1.200;
    # 指定客户端的默认网关
    option routers 192.168.1.1;
    # 指定客户端的 DNS 服务器
    option domain-name-servers 8.8.8.8, 1.1.1.1;
    # 排除一些静态 IP 地址,这些地址不会被动态分配
    # 网关、服务器等固定设备
    # host server1 {
    #     hardware ethernet 00:0A:95:9D:68:16;
    #     fixed-address 192.168.1.10;
    # }
}

配置说明:

linux dhcp服务器搭建-图3
(图片来源网络,侵删)
  • subnet ... netmask ...:定义一个子网。netmask 必须与你的网络匹配。
  • range ... ...:定义 IP 地址池的起始和结束地址。
  • option routers:客户端的默认网关地址。
  • option domain-name-servers:客户端的 DNS 服务器地址,可以多个,用逗号隔开。
  • host ...:为一个特定客户端分配固定 IP(静态绑定)。
    • hardware ethernet:客户端的 MAC 地址。
    • fixed-address:要分配给该客户端的静态 IP。

步骤 3: 指定 DHCP 服务接口

编辑 /etc/default/isc-dhcp-server 文件,告诉 DHCP 服务器应该在哪个接口上监听客户端请求。

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

找到 INTERFACESv4="" 这一行,将其修改为你的服务器接口名。

# 将 INTERFACESv4="" 修改为:
INTERFACESv4="ens33" 
# 将 ens33 替换为你自己的网卡名称,如 eth0

步骤 4: 启动并启用服务

配置已经完成,让我们启动服务并设置为开机自启。

# 启动 DHCP 服务
sudo systemctl start isc-dhcp-server
# 设置为开机自启
sudo systemctl enable isc-dhcp-server

步骤 5: 验证服务

检查服务状态,确保它正在运行。

sudo systemctl status isc-dhcp-server

如果看到 active (running),则表示服务成功启动。

你还可以检查日志来排查问题:

# 查看 DHCP 服务的实时日志
tail -f /var/log/syslog | grep dhcpd

CentOS / RHEL / Rocky Linux / AlmaLinux 系统

步骤 1: 安装 DHCP 服务器

打开终端,执行以下命令:

# 安装 dhcp-server 软件包
sudo yum install dhcp-server -y
# 或者使用 dnf (对于较新版本)
# sudo dnf install dhcp-server -y

步骤 2: 配置 DHCP 服务器

在 CentOS/RHEL 系统中,配置文件 /etc/dhcp/dhcpd.conf 默认不存在或内容很少,我们需要从示例文件复制一份。

# 复制示例配置文件作为基础
sudo cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf

然后编辑这个文件:

sudo nano /etc/dhcp/dhcpd.conf

同样,我们可以清空文件内容,然后添加自己的配置,内容与 Ubuntu/Debian 的配置基本相同,只需确保参数正确。

# dhcpd.conf for CentOS/RHEL
# 根据你的网络环境修改以下参数
# 示例网络:192.168.1.0/24
# 路由器/网关地址:192.168.1.1
# DNS 服务器地址:8.8.8.8
# 默认租约时间(秒)
default-lease-time 600;
# 最大租约时间(秒)
max-lease-time 7200;
authoritative;
# 定义作用域
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8, 1.1.1.1;
    option subnet-mask 255.255.255.0;
    # 静态绑定示例(可选)
    # host printer {
    #     hardware ethernet 00:11:22:33:44:55;
    #     fixed-address 192.168.1.50;
    # }
}

步骤 3: 指定 DHCP 服务接口

在 CentOS/RHEL 中,DHCP 服务配置文件是 /etc/sysconfig/dhcpd

sudo nano /etc/sysconfig/dhcpd

找到 DHCPDARGS="" 这一行,如果你想为所有接口提供服务,可以保持为空,或者,如果你想指定特定接口(ens33),可以修改为:

DHCPDARGS="ens33"

步骤 4: 启动并启用服务

# 启动 dhcpd 服务
sudo systemctl start dhcpd
# 设置为开机自启
sudo systemctl enable dhcpd

步骤 5: 验证服务

检查服务状态:

sudo systemctl status dhcpd

查看日志(日志文件可能在 /var/log/messages):

tail -f /var/log/messages | grep dhcpd

第三部分:测试与故障排除

  1. 在客户端测试

    • 将另一台电脑(Windows 或 Linux)的 IP 地址设置为“自动获取 IP 地址”。
    • 执行 ipconfig /renew (Windows) 或 dhclient (Linux)。
    • 检查客户端是否成功获取到你配置的 IP 地址、网关和 DNS。
  2. 在服务器上检查租约

    • DHCP 服务器会记录所有分配的租约,你可以查看 /var/lib/dhcpd/dhcpd.leases 文件(路径可能略有不同)。
    • 这个文件记录了所有客户端的 MAC 地址、获取的 IP 地址、租约开始和结束时间等。
    • sudo cat /var/lib/dhcp/dhcpd.leases
  3. 常见问题

    • 服务无法启动:检查 /var/log/syslog/var/log/messages 中的错误信息,最常见的原因是配置文件语法错误或 IP 地址冲突。
    • 客户端无法获取 IP
      • 检查客户端和服务器是否在同一个网段。
      • 检查防火墙(firewalldufw)是否阻止了 UDP 67 和 68 端口。
      • 检查交换机或路由器上是否启用了 DHCP 中继(如果不在同一个广播域)。
      • 确保你排除的 IP 地址没有被错误地包含在地址池中。

第四部分:安全建议

  • 绑定 MAC 地址:对于需要固定 IP 的服务器、打印机等关键设备,使用 host 块进行 MAC 地址和 IP 地址的静态绑定,可以防止 IP 地址被其他设备占用。
  • 限制作用域:只将 DHCP 服务部署在您控制的网络范围内,避免为外部设备分配地址。
  • 监控日志:定期检查 DHCP 服务日志,了解网络中设备的连接情况。

至此,你已经成功在 Linux 服务器上搭建并配置好了一个基础的 DHCP 服务器。

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