dhcpd (简体中文) - ArchWiki

Jump to content

翻译状态：本文是 dhcpd 的翻译。上次翻译日期：2022-10-03。如果英文版本有所更改，则您可以帮助同步翻译。

相关文章

- dhcpcd (简体中文)

dhcpd 是 Internet Systems Consortium DHCP 服务器。它可用作局域网环境中的路由管理。

注意： dhcpd (DHCP (服务器) 守护进程) 不是 dhcpcd (DHCP 客户端 守护进程).

## 安装

安装 dhcp 包。

## 使用

dhcpd 包括两个单元文件：`dhcpd4.service` 和 `dhcpd6.service`，可用于控制守护进程。它们分别在 IPv4 和 IPv6 的所有 网络接口 上启动守护进程。可查看 #只侦听单一网口 了解单一网口配置。

## 配置

为你想使用的接口分配静态 IPv4 地址（在实例中我们将使用 `eth0`）。指定的子网不应与其他接口的子网重叠。

    # ip link set up dev eth0
    # ip addr add 139.96.30.100/24 dev eth0 # arbitrary address

提示： 通常有三个预留的网段用于私有网络，它们不会与任何互联网中的主机发生冲突：

- `192.168/16` (subnet `192.168.0.0`, netmask `255.255.0.0`)
- `172.16/12` (subnet `172.16.0.0`, netmask `255.240.0.0`)
- `10/8` (for large networks; subnet `10.0.0.0`, netmask `255.0.0.0`)

另请参阅 RFC 1918。

要在启动时分配静态 IP 地址，查看网络配置#静态 IP 地址。

默认的 `dhcpd.conf` 文件包含许多注释的例子，复制一份该文件：

    # mv /etc/dhcpd.conf /etc/dhcpd.conf.example

欲仅监听子网 `139.96.30.0/24`，您可以创建以下最精简的配置文件：

    /etc/dhcpd.conf

    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option subnet-mask 255.255.255.0;
    option routers 139.96.30.100;
    subnet 139.96.30.0 netmask 255.255.255.0 {
      range 139.96.30.150 139.96.30.250;
    }

注意：

- 如果 `eth0` 是子网 `139.96.30.0/24`的仅有接口（往往如此），那么 `dhcpd` 只监听 `eth0`

- 如果您想 `dhcpd` 监听其他接口，通过指定使用其他接口的子网修改配置文件以监听。

如果你要为一台特定的设备提供一个固定的 IP 地址，你可以定义主机块：

    /etc/dhcpd.conf

    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option subnet-mask 255.255.255.0;
    option routers 139.96.30.100;
    subnet 139.96.30.0 netmask 255.255.255.0 {
      range 139.96.30.150 139.96.30.250;
    }
    host macbookpro{
      hardware ethernet 70:56:81:22:33:44;
      fixed-address 139.96.30.199;
    }

`domain-name-servers` 选项包含提供给客户的 DNS 服务器地址，这个例子中使用了谷歌的公共 DNS 服务器。如果你知道一个本地的DNS服务器（例如，由你的服务商提供的），那么你应该使用这个 DNS。如果 DNS 服务器部署在本地设备上，应该使用子网络中的地址（如 `139.96.30.100`）。

`subnet-mask` 和 `routers` 定义子网掩码和子网上可用路由器的列表。在大多数情况下，对于小型网络，您可以使用 `255.255.255.0` 作为掩码，并指定将 DHCP 服务器配置为路由器的机器的 IP 地址。

`subnet` 块定义了单独子网的选项，这些子网映射到运行“dhcpd”的网络接口。在我们的示例中，这是一个用于单个接口 `eth0` 的子网 `139.96.30.0/24`，我们为其定义了可用 IP 地址的范围。此范围内的地址将分配给连接的客户端。

### 只侦听单一网口

This article or section is out of date.

Reason: 虽然手册界面 dhcpd(8) 建议以下描述的行为，但实践中，`dhcpd` 仅监听在其配置文件中被声明的子网接口。 (Discuss in Talk:Dhcpd (简体中文))

如果你的计算机已经是一个或多个网络中的一部分，那在你的计算机给其他网络的计算机分配 IP 地址时可能会有问题。这可以通过配置 dhcpd 或使用 systemctl 以守护进程的形式启动。

#### 配置 dhcpd

The factual accuracy of this article or section is disputed.

Reason: `dhcpd` 不监听子网不在配置文件中声明的接口。 (Discuss in Talk:Dhcpd (简体中文))

为了排除接口，您必须为将在该接口上配置的子网创建一个空声明。

这是通过编辑配置文件来完成的（例如）：

    /etc/dhcpd.conf

    # No DHCP service in DMZ network (192.168.2.0/24)
    subnet 192.168.2.0 netmask 255.255.255.0 {
    }

#### 服务文件

The factual accuracy of this article or section is disputed.

Reason: 使用 systemd 251 测试时无效。 (Discuss in Talk:Dhcpd (简体中文))

dhcpd 提供的默认服务文件没有指定接口。为 `dhcpd4.service` 使用 drop-in unit file，如下所示：

    /etc/systemd/system/dhcpd4.service.d/override.conf

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/dhcpd.conf -pf /run/dhcpd4/dhcpd.pid %I

这允许使用 `dhcpd4.service` 作为模板单元，将“dhcpd”绑定到特定接口；例如 `dhcpd4@eth0.service`，其中 eth0 是 第一个枚举到的以太网设备。

### 用于 PXE

PXE 配置通过以下两个选项完成：

    /etc/dhcpd.conf

    next-server 192.168.0.2;
    filename "/pxelinux.0";

此部分可以在整个 `subnet` 中或仅在 `host` 定义中。 `next-server` 是 TFTP 服务器的 IP，`filename` 是要引导的映像的文件名。有关详细信息，请参阅 PXE。

## 参阅

- ISC DHCP 文档

Category:

- DHCP (简体中文)

Hidden categories:

- Pages or sections flagged with Template:Out of date
- Pages or sections flagged with Template:Accuracy