dhcpd
dhcpd 是老版本的 網際網路系統協會 (ISC) DHCP 伺服器。它可在區域網中管理路由。需要注意,ISC 推薦以 Kea 作為替代。
安裝[編輯 | 編輯原始碼]
使用[編輯 | 編輯原始碼]
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
(subnet192.168.0.0
, netmask255.255.0.0
)172.16/12
(subnet172.16.0.0
, netmask255.240.0.0
)10/8
(for large networks; subnet10.0.0.0
, netmask255.0.0.0
)
要在啟動時分配靜態 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 地址的範圍。此範圍內的地址將分配給連接的客戶端。
只偵聽單一網口[編輯 | 編輯原始碼]
如果你的計算機已經是一個或多個網絡中的一部分,那在你的計算機給其他網絡的計算機分配 IP 地址時可能會有問題。這可以通過配置 dhcpd 或使用 systemctl 以守護進程的形式啟動。
配置 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 { }
服務文件[編輯 | 編輯原始碼]
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。