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。