dhcpd - Arch Linux 中文维基

跳至內容

# dhcpd

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 dhcpd，最近一次同步於 2023-01-10，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- dhcpcd

dhcpd 是老版本的 網際網路系統協會 (ISC) DHCP 伺服器。它可在區域網中管理路由。需要注意，ISC 推薦以 Kea 作為替代。

注意：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 地址的範圍。此範圍內的地址將分配給連接的客戶端。

### 只偵聽單一網口

本文或本節內容已經過時。

原因： 雖然手冊界面 dhcpd(8) 建議以下描述的行為，但實踐中，`dhcpd` 僅監聽在其配置文件中被聲明的子網接口。 (在Talk:Dhcpd討論)

如果你的計算機已經是一個或多個網絡中的一部分，那在你的計算機給其他網絡的計算機分配 IP 地址時可能會有問題。這可以通過配置 dhcpd 或使用 systemctl 以守護進程的形式啟動。

#### 配置 dhcpd

本文或本章節的事實準確性存在爭議。

原因： `dhcpd` 不監聽子網不在配置文件中聲明的接口。（在 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 {
    }

#### 服務文件

本文或本章節的事實準確性存在爭議。

原因： 使用 systemd 251 測試時無效。（在 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 文檔

分類：​

- DHCP
- 使用「模板:過時」標記的頁面或章節

隱藏分類：​

- 使用「模板:準確性」標記的頁面或章節

dhcpd
新增話題