凌峰创科服务平台

Ubuntu如何配置DHCP服务器?

我们将使用 isc-dhcp-server,这是 Ubuntu 和其他 Debian/Ubuntu 系列操作系统中最常用、最标准的 DHCP 服务器软件。

Ubuntu如何配置DHCP服务器?-图1
(图片来源网络,侵删)

第一步:安装 DHCP 服务器

我们需要更新软件包列表并安装 isc-dhcp-server

  1. 更新包索引 打开终端,运行以下命令以确保你的系统拥有最新的软件包信息:

    sudo apt update
  2. 安装 isc-dhcp-server 安装 DHCP 服务器软件包:

    sudo apt install isc-dhcp-server

    安装过程中,系统可能会提示你配置网络接口,此时可以先选择 No,因为我们将在下一步手动进行更精确的配置。

    Ubuntu如何配置DHCP服务器?-图2
    (图片来源网络,侵删)

第二步:配置 DHCP 服务器

安装完成后,我们需要编辑其主配置文件 /etc/dhcp/dhcpd.conf,这个文件定义了 DHCP 服务器将如何分配 IP 地址。

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

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

    sudo nano /etc/dhcp/dhcpd.conf
  3. 清空或注释掉默认配置 默认配置文件包含大量示例和注释,为了清晰起见,你可以先将所有内容注释掉(在行首加 )或直接删除它们,我们将添加自己的配置。

    Ubuntu如何配置DHCP服务器?-图3
    (图片来源网络,侵删)

    文件开头部分:通常包含一些全局选项,如 DNS 服务器、域名等,你可以先添加这些。

    # 全局选项,作用于所有子网
    option domain-name "yourdomain.local";  # 替换为你的域名
    option domain-name-servers 8.8.8.8, 8.8.4.4; # 替换为你首选和备用的 DNS 服务器
    # 默认租约时间(秒)
    default-lease-time 600;
    # 最大租约时间(秒)
    max-lease-time 7200;
  4. 定义子网配置 这是最核心的部分,你需要在这里指定 DHCP 服务器管理的网络范围,请根据你的网络环境修改以下参数:

    • subnet <网络地址> netmask <子网掩码>: 定义你要提供 DHCP 服务的网络。
    • range <起始IP> <结束IP>: 定义可以动态分配的 IP 地址池。
    • option routers <网关地址>: 指定客户端的默认网关。

    示例配置:假设你的网络是 168.1.0/24,网关是 168.1.1,你希望从 168.1.100168.1.200 分配 IP 地址。

    # 为 192.168.1.0/24 网络定义 DHCP 作用域
    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 subnet-mask 255.255.255.0;
      # 可选:为特定设备分配固定 IP 地址
      # host my-server {
      #   hardware ethernet 00:0A:95:9D:68:16; # 设备的 MAC 地址
      #   fixed-address 192.168.1.10;           # 为其分配的固定 IP
      # }
    }

    重要提示

    • 不要将 .1 分配出去,因为这通常是路由器/网关的地址。
    • 确保 range 中的 IP 地址没有被其他设备(如服务器、打印机)静态使用,否则会造成 IP 地址冲突。
    • option routersoption subnet-mask 是必须的,否则客户端可能无法正确通信。
  5. 保存并关闭文件nano 中,按 Ctrl+X,然后按 Y,最后按 Enter


第三步:配置 DHCP 服务监听的接口

默认情况下,isc-dhcp-server 可能不知道应该在哪个网络接口上监听客户端请求,我们需要在 /etc/default/isc-dhcp-server 文件中指定。

  1. 编辑默认配置文件

    sudo nano /etc/default/isc-dhcp-server
  2. 修改 INTERFACESv4 变量 找到 INTERFACESv4="" 这一行,将其修改为你希望 DHCP 服务器监听的接口名称,如果你的服务器连接了多个网络,可以指定多个,用空格隔开。

    示例:如果你的 DHCP 服务器通过 eth0ens33(虚拟机常见网卡名)提供服务:

    # 将 INTERFACESv4="" 修改为:
    INTERFACESv4="eth0"
    # 或者
    # INTERFACESv4="ens33"
  3. 保存并关闭文件 (Ctrl+X, Y, Enter)。


第四步:启动并启用 DHCP 服务

配置已经完成,我们可以启动服务了。

  1. 启动 DHCP 服务

    sudo systemctl start isc-dhcp-server
  2. 检查服务状态 确保服务已成功启动并且没有错误:

    sudo systemctl status isc-dhcp-server

    如果看到 active (running),说明服务正在运行,如果看到错误,请根据错误信息检查 /etc/dhcp/dhcpd.conf 的语法是否正确。

  3. 使服务开机自启 这样服务器重启后,DHCP 服务会自动启动:

    sudo systemctl enable isc-dhcp-server

第五步:测试 DHCP 服务

这是验证配置是否成功的关键步骤。

  1. 在客户端测试 将一台客户端电脑(如你的笔记本或另一台虚拟机)连接到同一网络,并确保其设置为“自动获取 IP 地址 (DHCP)”。

  2. 检查客户端 IP 在客户端上,使用 ipconfig (Windows) 或 ip a (Linux/macOS) 命令查看是否成功从你的 Ubuntu DHCP 服务器获取到了 IP 地址、子网掩码、网关和 DNS 信息。

  3. 在服务器上查看租约信息 你可以登录到 Ubuntu DHCP 服务器,查看当前的 IP 地址租约情况:

    # 查看 dhcpd.leases 文件
    sudo cat /var/lib/dhcp/dhcpd.leases

    如果配置成功,你应该能看到从客户端获取的 MAC 地址和分配的 IP 地址等信息。


第六步:常见问题排查

如果服务无法启动或客户端无法获取 IP,请按以下步骤排查:

  1. 检查配置文件语法 isc-dhcp-server 提供了一个命令来检查配置文件的语法是否正确:

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

    如果没有输出,说明语法正确,如果有错误,它会告诉你哪一行有问题。

  2. 检查服务日志 DHCP 服务的日志会记录详细的运行信息和错误,使用 journalctl 查看:

    # 查看最新的日志
    sudo journalctl -u isc-dhcp-server -f

    常见的错误包括:

    • No subnet declaration for eth0...: 这是最常见的错误,通常意味着 /etc/dhcp/dhcpd.conf 文件中没有定义与 eth0 接口所在网络匹配的 subnet 块,或者定义的网络不正确。
    • No free leases...: IP 地址池 (range) 中的所有地址都已经被分配出去了。
  3. 检查防火墙 如果服务器启用了防火墙(如 ufw),需要确保 DHCP 的 UDP 端口 6768 是开放的,客户端发送请求到服务器的 67 端口,服务器响应到客户端的 68 端口。

    # 允许 DHCP 服务
    sudo ufw allow dhcp
  4. 检查网络接口 确保 /etc/default/isc-dhcp-server 中指定的 INTERFACESv4 是正确的,并且该接口是 up 状态:

    ip a show eth0

配置 Ubuntu DHCP 服务器的核心步骤可以概括为:

  1. 安装: sudo apt install isc-dhcp-server
  2. 配置主文件: 编辑 `/
分享:
扫描分享到社交APP
上一篇
下一篇