40 DHCP #
动态主机配置协议 (DHCP) 用于从服务器集中指派网络设置,如此就不必在每个工作站本地配置这些设置。被配置为使用 DHCP 的主机不能控制它自己的静态地址。DHCP 使主机能够根据服务器的指示自动对自身进行配置。如果在客户端使用 NetworkManager,则无需配置客户端。在更改了环境并且一次只能使用一个活动的接口时,它才有用。请勿在运行 DHCP 服务器的机器上使用 NetworkManager。
在 IBM Z 平台上,DHCP 仅在使用 OSA 和 OSA Express 网卡的接口上有效。现在只有这些网卡具有 MAC,因为需要 MAC 来实现 DHCP 自动配置功能。
配置 DHCP 服务器的其中一种方法是,使用网卡的硬件地址(一般应该是固定的)来标识每个客户端,然后在客户端每次连接到服务器时为它提供相同的设置。另一种方法是对 DHCP 进行配置,从为此设置的地址池来为每个相关客户端动态指派地址。在后一种情况下,DHCP 服务器每次在收到客户端请求时都会尝试向它指派相同的地址,即使相隔较长的时间也是如此。只有在网络中包含的客户端数不超过地址数时,它才生效。
DHCP 简化了系统管理员的工作。与地址和网络配置相关的任何更改(甚至是较大的更改)都可以通过编辑服务器的配置文件来集中完成。这比重新配置多个工作站要方便得多。此外,还可以更方便地将计算机(尤其是新计算机)集成到网络中,因为现在可以从池中为它们指派 IP 地址。如果经常在不同的网络中使用便携式计算机,则从 DHCP 服务器检索适当的网络设置特别有用。
在本章中,DHCP 服务器在工作站所在的子网(即 192.168.2.0/24
,网关为 192.168.2.1
)内运行。它具有固定的 IP 地址 192.168.2.254
,并提供两个地址范围:192.168.2.10
至 192.168.2.20
,192.168.2.100
至 192.168.2.200
。
DHCP 服务器不仅会提供 IP 地址和网络掩码,还会提供主机名、域名、网关和名称服务器地址供客户端使用。此外,DHCP 还允许您集中配置多个参数,例如客户端可以从中轮询当前时间的时间服务器,甚至是打印服务器。
40.1 使用 YaST 配置 DHCP 服务器 #
要安装 DHCP 服务器,请启动 YaST 并选择
› 。选择 › ,然后选择 。确认安装相关的软件包来完成安装进程。可以将 YaST DHCP 模块设置为在本地存储服务器配置(即运行 DHCP 服务器的主机上),或使其配置数据由 LDAP 服务器管理。要使用 LDAP,请在配置 DHCP 服务器前设置 LDAP 环境。
有关 LDAP 的更多信息,请参见第 5 章 “使用 389 Directory Server 的 LDAP”。
使用 YaST DHCP 模块 (yast2-dhcp-server
) 可将自己的 DHCP 服务器设置用于本地网络。此模块能以向导模式或专家配置模式运行。
40.1.1 初始配置(向导) #
第一次启动此模块时,向导启动,提示您做出一些有关服务器管理的基本决定。完成此初始设置过程后会生成一个基本的服务器配置,使服务器可以在基本方面正常工作。专家方式可用于处理更高级的配置任务。按如下所示继续:
从该列表中选择 DHCP 服务器应侦听的接口,然后依次单击图 40.1 “DHCP 服务器:卡选择”。
、 。请参见注意:DHCP 和firewalld
在 SUSE Linux Enterprise Server 15 SP6 中,选项 尚不支持
firewalld
。要手动打开 DHCP 端口,请运行>
sudo
firewall-cmd --zone=public --permanent --add-service=dhcp
>
sudo
firewall-cmd --reload
图 40.1︰ DHCP 服务器:卡选择 #使用此复选框来确定是否由 LDAP 服务器自动存储您的 DHCP 设置。在文本框中,提供 DHCP 服务器应管理的所有客户端的网络细节。这些细节包括域名、时间服务器地址、主名称服务器和二级名称服务器的地址、打印和 WINS 服务器的地址(对于同时包含 Windows 和 Linux 客户端的混合网络)、网关地址和租用时间。请参见图 40.2 “DHCP 服务器:全局设置”。
图 40.2︰ DHCP 服务器:全局设置 #配置如何为客户端指派动态 IP 地址。为此,应首先指定服务器为 DHCP 客户端指派地址时使用的 IP 范围。所有这些地址必须由同一个网络掩码来覆盖。还要指定租用时间,在此期间客户端可以保留它的 IP 地址,而无需请求续期。也可以选择指定最长租用时间,这是服务器为特定客户端预留某个 IP 地址的时间。请参见图 40.3 “DHCP 服务器:动态 DHCP”。
图 40.3︰ DHCP 服务器:动态 DHCP #定义 DHCP 服务器应如何启动。指定 DHCP 服务器是在引导系统时自动启动还是在需要时(例如进行测试时)手动启动。单击图 40.4 “DHCP 服务器:启动”。
完成对服务器的配置。请参见图 40.4︰ DHCP 服务器:启动 #除了按上文所述方式使用动态 DHCP 之外,您也可以将服务器配置为以准静态方式指派地址。使用窗口下部提供的文本框来指定要以此方式管理的一组客户端。具体地说就是提供客户端的图 40.5 “DHCP 服务器:主机管理”。
和 ,以及 和 (令牌环或以太网)。使用 、 和 来修改在窗口上部显示的客户端列表。请参见图 40.5︰ DHCP 服务器:主机管理 #
40.1.2 DHCP 服务器配置(专家) #
除了前面介绍的配置方法外,还有一种专家配置模式,可用于从方方面面调整 DHCP 服务器设置。单击图 40.4 “DHCP 服务器:启动”)以启动专家配置。
对话框中的 (参见- Chroot 环境和声明
在第一个对话框中,选择图 40.6 “DHCP 服务器:Chroot Jail 和声明”。选择 后,定义要添加的声明类型。在 中,查看服务器的日志文件、配置 TSIG 密钥管理,并根据 DHCP 服务器设置调整防火墙配置。
,使现有的配置可编辑。DHCP 服务器的行为的一个重要功能就是它能够在 chroot 环境(即 chroot jail)中运行,以便保证服务器主机的安全。如果 DHCP 服务器受到了外部攻击,攻击者仍将被封锁在 chroot jail 中,这样便可以阻止其访问系统的其他部分。对话框的下部显示了一个树视图,列出了已经定义的声明。请使用 、 和 来修改它们。如果选择 ,就会进入其他专家对话框。请参见图 40.6︰ DHCP 服务器:Chroot Jail 和声明 #- 选择声明类型
DHCP 服务器的图 40.7 “DHCP 服务器:选择声明类型”)。
由若干声明组成。使用此对话框可设置声明类型 、 、 、 、 和 。此示例显示了新子网的选择(请参见图 40.7︰ DHCP 服务器:选择声明类型 #- 子网配置
此对话框用于指定新子网的 IP 地址和网络掩码。在对话框的中部,使用
、 和 修改所选子网的 DHCP 服务器启动选项。要为子网设置动态 DNS,请选择 。图 40.8︰ DHCP 服务器:配置子网 #- TSIG 密钥管理
如果在前面的对话框中选择了配置动态 DNS,现在就可以配置密钥管理来实现安全区域传送。选择图 40.10 “DHCP 服务器:动态 DNS 的接口配置”)。
将进入另一个对话框,在其中可以配置动态 DNS 的接口(请参见图 40.9︰ DHCP 服务器:TSIG 配置 #- 动态 DNS:接口配置
通过选择图 40.8 “DHCP 服务器:配置子网”)。再次选择 将返回最初的专家配置对话框。
,可以为子网激活动态 DNS。完成激活后,请使用下拉框来激活正向和反向区域的 TSIG 密钥,确保为 DNS 和 DHCP 服务器选择相同密钥。使用 ,您可以根据动态 DNS 环境自动更新和调节全局 DHCP 服务器设置。最后需要定义每个动态 DNS 应更新哪些正向和反向区域,同时分别为两个区域指定主名称服务器的名称。选择 返回子网配置对话框(请参见图 40.10︰ DHCP 服务器:动态 DNS 的接口配置 #注意:ignore client-updates
option为区域启用动态 DNS 后,YaST 会自动添加
ignore client-updates
选项以改进客户端兼容性。如果不需要,可以禁用该选项。- 网络接口配置
要定义 DHCP 服务器应侦听的接口并调整防火墙配置,请从专家配置对话框中选择
› 。从所显示的接口列表中,选择一个或多个应由 DHCP 服务器处理的接口。如果希望使所有子网中的客户端都能够与服务器通讯,同时如果服务器主机也运行防火墙,则相应调整防火墙。注意:DHCP 和firewalld
在 SUSE Linux Enterprise Server 15 SP6 中,选项 尚不支持
firewalld
。要手动打开 DHCP 端口,请运行>
sudo
firewall-cmd --zone=public --permanent --add-service=dhcp
>
sudo
firewall-cmd --reload
图 40.11︰ DHCP 服务器:网络接口和防火墙 #
在完成所有配置步骤后,选择
关闭对话框。服务器现在将以新配置启动。40.2 DHCP 软件包 #
DHCP 服务器和 DHCP 客户端都适用于 SUSE Linux Enterprise Server。可用的 DHCP 服务器是 dhcpd
(由互联网系统联盟发布)。在客户端,可以使用 dhcp-client
(也是由 ISC 提供)及 wicked
软件包附带的工具。
默认情况下,wicked
工具会连同 wickedd-dhcp4
和 wickedd-dhcp6
服务一起安装。系统每次引导时,会自动启动它们,以监控 DHCP 服务器。它们不需要配置文件来执行操作,可以直接用在大多数标准设置中。对于更复杂的情况,请使用 ISC dhcp-client
,该服务通过配置文件 /etc/dhclient.conf
和 /etc/dhclient6.conf
来控制。
40.3 DHCP 服务器 dhcpd #
任何 DHCP 系统的核心都是动态主机配置协议守护程序。此服务器会根据配置文件 /etc/dhcpd.conf
中定义的设置,租用地址并监控它们的使用情况。通过更改此文件中的参数和值,系统管理员可以在许多方面影响程序的行为。我们来看一下例 40.1 “配置文件 /etc/dhcpd.conf”中的基本示例文件 /etc/dhcpd.conf
。
default-lease-time 600; # 10 minutes max-lease-time 7200; # 2 hours option domain-name "example.com"; option domain-name-servers 192.168.1.116; option broadcast-address 192.168.2.255; option routers 192.168.2.1; option subnet-mask 255.255.255.0; subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.20; range 192.168.2.100 192.168.2.200; }
这个简单的配置文件足以使 DHCP 服务器在网络中指派 IP 地址。确保在每行末尾插入一个分号,否则将不能启动 dhcpd。
示例文件可以分为三部分。第一部分定义了将 IP 地址租出给请求它的客户端的默认秒数 (default-lease-time
),超过此时间就应申请续期。此部分还包含一个最大期限语句,在此期限内计算机可以保留 DHCP 服务器指派的 IP 地址而无需申请续期 (max-lease-time
)。
第二部分在全局级别定义了某些基本网络参数:
option domain-name
行用于定义网络的默认域。使用
option domain-name-servers
项可最多指定三个 DNS 服务器值,用来将 IP 地址解析为主机名,或将主机名解析为 IP 地址。理想情况下,应在设置 DHCP 之前在您的计算机上或网络中的其他位置配置一个名称服务器。这个名称服务器应为每个动态地址定义一个主机名(反之亦然)。要了解如何配置您自己的名称服务器,请参见第 39 章 “域名系统”。行
option broadcast-address
定义了请求客户端应该使用的广播地址。option routers
用于设置服务器在无法将数据包发送到本地网络上的主机时,应将其发送到的位置(根据所提供的源和目标主机地址以及子网掩码)。特别是在较小的网络中,此路由器与互联网网关完全相同。option subnet-mask
用于指定为客户端指派的网络掩码。
文件的最后一部分用于定义网络,其中包含子网掩码。最后指定一个地址范围,DHCP 守护程序将使用此范围来向相关的客户端指派 IP 地址。在例 40.1 “配置文件 /etc/dhcpd.conf”中,可以为客户端分配 192.168.2.10
到 192.168.2.20
之间或 192.168.2.100
到 192.168.2.200
之间的任何地址。
编辑这些行后,便可以使用命令 systemctl start dhcpd
来激活 DHCP 守护程序。随后将可以立即使用它。使用命令 rcdhcpd
check-syntax
来执行简单的语法检查。如果配置时出现任何意外问题(例如服务器由于错误而中止或在启动时不返回 done
),您可以使用命令 journalctl
查询主系统日志中的信息,找出问题所在(有关更多信息,请参见第 21 章 “journalctl
:查询 systemd
日记”)。
在默认的 SUSE Linux Enterprise Server 系统上,出于安全考虑,将在 chroot 环境中启动 DHCP 守护程序。必须将配置文件复制到 chroot 环境,以便守护程序能够找到它们。通常情况下无需担心这一点,因为命令 systemctl start dhcpd
会自动复制这些文件。
40.3.1 使用固定 IP 地址的客户端 #
DHCP 可用来向特定客户端指派预定义的静态地址。显式指派的地址始终优先于来自地址池的动态地址。静态地址永远不会像动态地址那样过期。例如,对于动态地址而言,如果没有足够的地址可用,服务器需要在客户端之间重新分发这些地址。
要标识使用静态地址配置的客户端,dhcpd 会使用硬件地址(这是一个全球唯一的固定数字代码,其中包含 6 对八位组),用于标识所有网络设备(例如 00:30:6E:08:EC:80
)。如果将相应的各行(如例 40.2 “配置文件中的新增内容”中的行)添加到例 40.1 “配置文件 /etc/dhcpd.conf”的配置文件,DHCP 守护程序会将相同的一组数据指派到相应的客户端。
host jupiter { hardware ethernet 00:30:6E:08:EC:80; fixed-address 192.168.2.100; }
在第一行中输入相应客户端的名称(host
HOSTNAME,在本例中为 jupiter
),在第二行中输入 MAC 地址。在 Linux 主机上,使用命令 ip
link show
后跟网络设备(例如 eth0
)来查找 MAC 地址。输出应包含如下内容:
link/ether 00:30:6E:08:EC:80
在上面的示例中,会为网卡 MAC 地址为 00:30:6E:08:EC:80
的客户端自动分配 IP 地址 192.168.2.100
和主机名 jupiter
。虽然也支持在 IBM 系统上常见的 token-ring
,但在几乎所有情况下,要输入的硬件类型都是 ethernet
。
40.3.2 SUSE Linux Enterprise Server 版本 #
为了提高安全性,SUSE Linux Enterprise Server 版本的 ISC DHCP 服务器已应用了 Ari Edelkind 的 non-root/chroot 补丁。这样您便能以用户 ID nobody
来运行 dhcpd,并且可以在 chroot 环境 (/var/lib/dhcp
) 中运行该服务。要实现这一点,必须将配置文件 dhcpd.conf
存放于 /var/lib/dhcp/etc
中。init 脚本在启动时会自动将文件复制到此目录。
通过文件 /etc/sysconfig/dhcpd
中的项来控制与此特性相关的服务器行为。如果不希望在 chroot 环境中运行 dhcpd,请将 /etc/sysconfig/dhcpd
中的变量 DHCPD_RUN_CHROOTED
设置为“no”。
为了使 dhcpd 能够解析 chroot 环境内的主机名,还必须复制以下配置文件:
/etc/localtime
/etc/host.conf
/etc/hosts
/var/run/netconfig/resolv.conf
启动 init 脚本时,这些文件会复制到 /var/lib/dhcp/etc/
。如果通过 /etc/ppp/ip-up
这样的脚本动态修改这些文件,进行所需更改时,也要将这些副本纳入考量。但是,如果配置文件仅指定 IP 地址(而不是主机名),就不需要担心这一点。
如果您的配置中包含应复制到 chroot 环境中的其他文件,请在文件 /etc/sysconfig/dhcpd
中的变量 DHCPD_CONF_INCLUDE_FILES
下设置它们。为了确保 syslog 守护程序重启动后,DHCP 日志记录功能仍能正常工作,文件 /etc/sysconfig/syslog
中还另外提供了 SYSLOGD_ADDITIONAL_SOCKET_DHCP
这项。
40.4 更多信息 #
有关 DHCP 的更多信息,请访问互联网系统联盟网站 (https://www.isc.org/dhcp/)。您也可在 dhcpd
、dhcpd.conf
、dhcpd.leases
和 dhcp-options
手册页中获得相关信息。