dhcpd

出自 Arch Linux 中文维基

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

注意: dhcpd (DHCP (伺服器) 守護進程) 不是 dhcpcd (DHCP 客戶端 守護進程).

安裝[編輯 | 編輯原始碼]

安裝 dhcp 包。

使用[編輯 | 編輯原始碼]

dhcpd 包括兩個單元文件:dhcpd4.servicedhcpd6.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-maskrouters 定義子網掩碼和子網上可用路由器的列表。在大多數情況下,對於小型網絡,您可以使用 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

參閱[編輯 | 編輯原始碼]