凌峰创科服务平台

ubuntu 配置dhcp服务器

  1. 安装 DHCP 服务器
  2. 配置 DHCP 服务
  3. 配置网络接口
  4. 启动并启用服务
  5. 测试和故障排除
  6. 高级配置示例

准备工作

在开始之前,请确保你:

ubuntu 配置dhcp服务器-图1
(图片来源网络,侵删)
  • 拥有一台运行 Ubuntu Server (20.04 或 22.04) 的机器。
  • 你知道这台服务器的 静态 IP 地址,DHCP 服务器本身必须有一个固定的 IP 地址。
  • 你知道这台服务器要提供 DHCP 服务的 网络接口名称eth0, ens33, enp0s3),你可以使用 ip a 命令查看。

第一步:安装 DHCP 服务器

isc-dhcp-server 是 Ubuntu 官方推荐的 DHCP 服务器软件包。

  1. 更新你的软件包列表:

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

    sudo apt install isc-dhcp-server

    安装过程中,系统可能会提示你选择默认配置文件,选择 **<Yes>** 来继续,因为我们稍后会手动编辑配置文件。

    ubuntu 配置dhcp服务器-图2
    (图片来源网络,侵删)

第二步:配置 DHCP 服务

这是最关键的一步,配置文件位于 /etc/dhcp/dhcpd.conf

  1. 备份原始配置文件: 这是一个好习惯,以防配置出错可以恢复。

    sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
  2. 编辑配置文件: 使用你喜欢的文本编辑器(如 nanovim)打开文件。

    sudo nano /etc/dhcp/dhcpd.conf
  3. 清空或注释掉默认配置: 默认配置文件里有很多示例和注释,为了清晰,我们先将它们全部注释掉(在行首加 )或者直接删除,然后添加我们自己的配置。

    ubuntu 配置dhcp服务器-图3
    (图片来源网络,侵删)
    # /etc/dhcp/dhcpd.conf
    # 全局配置选项
    # 这里的配置会作用于所有定义的子网
    option domain-name "yourdomain.local"; # 设置你的域名
    option domain-name-servers 8.8.8.8, 1.1.1.1; # 设置 DNS 服务器地址,可以是你的路由器或公共 DNS
    default-lease-time 600;      # 默认租约时间(秒)
    max-lease-time 7200;         # 最大租约时间(秒)
    # --- 在这里添加你的子网配置 ---
  4. 添加子网配置: 这是最核心的部分,你需要为你需要提供 DHCP 服务的网络定义一个 subnet,下面是一个详细的例子,假设你的网络是 168.1.0/24

    # --- 子网配置示例 ---
    # 假设你的服务器 IP 是 192.168.1.100,网络是 192.168.1.0/24
    # 客户机将从这个地址池获取 IP
    subnet 192.168.1.0 netmask 255.255.255.0 {
      range 192.168.1.50 192.168.1.150;  # 可分配的 IP 地址池
      option routers 192.168.1.1;          # 默认网关地址
      option broadcast-address 192.168.1.255; # 广播地址
    }

    参数解释:

    • subnet 192.168.1.0 netmask 255.255.255.0: 定义你要管理的网络和子网掩码。
    • range 192.168.1.50 192.168.1.150: 定义可以动态分配给客户端的 IP 地址范围。
    • option routers 192.168.1.1: 告诉客户端它们的默认网关是什么。
    • option broadcast-address 192.168.1.255: 告诉客户端网络的广播地址。
    • option domain-name-servers: 在全局配置中设置,也可以在这里覆盖。
  5. 保存并退出: 在 nano 中,按 Ctrl+X,然后按 Y,最后按 Enter


第三步:配置网络接口

isc-dhcp-server 默认监听所有接口,但最佳实践是明确指定它应该在哪个接口上提供服务。

  1. 编辑 dhcpd.conf 的上级配置文件

    sudo nano /etc/default/isc-dhcp-server
  2. 修改 INTERFACESv4 变量: 找到下面这一行,取消注释并修改它,填入你希望提供 DHCP 服务的网络接口名称。

    # Defaults for isc-dhcp-server (initscript)
    # sourced by /etc/init.d/isc-dhcp-server
    # installed by the dhcp-server package
    # This is the server's DHCP configuration file.
    #dhcpd_conf=/etc/dhcp/dhcpd.conf
    # This is the server's lease database file.
    #dhcpd_leases=/var/lib/dhcp/dhcpd.leases
    # On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
    # Separate multiple interfaces with spaces, e.g. "eth0 eth1".
    INTERFACESv4="ens33"  # <--- 将 ens33 替换为你的实际接口名
  3. 保存并退出


第四步:启动并启用服务

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

  1. 启动 DHCP 服务

    sudo systemctl start isc-dhcp-server
  2. 设置开机自启

    sudo systemctl enable isc-dhcp-server
  3. 检查服务状态

    sudo systemctl status isc-dhcp-server

    如果看到绿色的 active (running),说明服务已经成功启动。


第五步:测试和故障排除

  1. 在客户端测试: 将一台电脑或手机连接到同一个局域网,并设置为“自动获取 IP 地址”,如果一切正常,它应该能从你配置的地址池(168.1.50)中获得一个 IP。

  2. 在服务器上检查

    • 查看日志:DHCP 服务器的日志非常有用。

      # 实时查看日志
      sudo tail -f /var/log/syslog | grep dhcpd
      # 或者查看专门的 dhcpd 日志
      sudo tail -f /var/log/daemon.log | grep dhcpd

      日志中会显示 DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK 等交互过程,这对于排查问题至关重要。

    • 检查租约文件: 服务器会将分配的 IP 地址和客户端信息记录在租约文件中。

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

      你可以看到哪些 IP 已经被分配,以及分配给了哪个客户端(通过 MAC 地址标识)。

  3. 常见错误

    • 服务启动失败:检查 /var/log/syslog 中的错误信息,最常见的原因是:
      • 配置文件语法错误:检查 dhcpd.conf 的括号 是否匹配,拼写是否正确。
      • 接口配置错误:确保 /etc/default/isc-dhcp-server 中的 INTERFACESv4 指向了正确的、正在活动的网络接口。
      • IP 地址冲突:确保 DHCP 服务器本身的 IP 地址、网关等与你要配置的子网不冲突,并且没有被其他设备静态占用。
    • 客户端无法获取 IP
      • 检查客户端和服务器是否在同一个网段。
      • 检查防火墙(ufw)是否阻止了 DHCP 端口(UDP 67 和 68)。
      • 检查网络中是否已经有一个 DHCP 服务器(比如你的家用路由器),这会导致冲突。

第六步:高级配置示例

为多个子网提供服务

你可以在 dhcpd.conf 中定义多个 subnet 块。

# 子网 A
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.50 192.168.1.100;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8;
}
# 子网 B
subnet 10.0.0.0 netmask 255.255.255.0 {
  range 10.0.0.100 10.0.0.200;
  option routers 10.0.0.1;
  option domain-name-servers 1.1.1.1;
}

为特定主机(MAC 地址)分配固定 IP

这叫“静态绑定”或“保留地址”。

host my-server {
  hardware ethernet 00:0A:95:9D:68:16; # 目标主机的 MAC 地址
  fixed-address 192.168.1.10;         # 为该主机分配的固定 IP
}

排除某些 IP 地址

如果你希望某些 IP 地址(例如服务器、打印机)不被 DHCP 动态分配,可以使用 range 之前的 pool 语句,或者更简单的方法是使用 deny,但最清晰的方法是使用 range 的起始和结束地址来巧妙地避开它们,如果无法避开,可以使用 pooldeny,但更推荐使用 host 块为特定设备分配静态 IP,然后在 range 中不包含这些 IP。


配置 Ubuntu DHCP 服务器的主要步骤是:

  1. 安装 isc-dhcp-server
  2. 编辑 /etc/dhcp/dhcpd.conf 定义子网、地址池和选项。
  3. 配置 /etc/default/isc-dhcp-server 指定服务监听的接口。
  4. 启动启用 isc-dhcp-server 服务。
  5. 测试 并通过 日志 排查问题。

遵循以上步骤,你就可以成功地在 Ubuntu 上搭建一个功能完善的 DHCP 服务器了。

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