跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 管理指南 / 服务 / DHCP
适用范围 SUSE Linux Enterprise Server 15 SP6

40 DHCP

动态主机配置协议 (DHCP) 用于从服务器集中指派网络设置,如此就不必在每个工作站本地配置这些设置。被配置为使用 DHCP 的主机不能控制它自己的静态地址。DHCP 使主机能够根据服务器的指示自动对自身进行配置。如果在客户端使用 NetworkManager,则无需配置客户端。在更改了环境并且一次只能使用一个活动的接口时,它才有用。请勿在运行 DHCP 服务器的机器上使用 NetworkManager。

提示
提示:IBM Z:DHCP 支持

在 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.10192.168.2.20192.168.2.100192.168.2.200

DHCP 服务器不仅会提供 IP 地址和网络掩码,还会提供主机名、域名、网关和名称服务器地址供客户端使用。此外,DHCP 还允许您集中配置多个参数,例如客户端可以从中轮询当前时间的时间服务器,甚至是打印服务器。

40.1 使用 YaST 配置 DHCP 服务器

要安装 DHCP 服务器,请启动 YaST 并选择软件 ›  软件管理。选择过滤器 ›  模式,然后选择 DHCP 和 DNS 服务器。确认安装相关的软件包来完成安装进程。

重要
重要:LDAP 支持

可以将 YaST DHCP 模块设置为在本地存储服务器配置(即运行 DHCP 服务器的主机上),或使其配置数据由 LDAP 服务器管理。要使用 LDAP,请在配置 DHCP 服务器前设置 LDAP 环境。

有关 LDAP 的更多信息,请参见第 5 章 “使用 389 Directory Server 的 LDAP

使用 YaST DHCP 模块 (yast2-dhcp-server) 可将自己的 DHCP 服务器设置用于本地网络。此模块能以向导模式或专家配置模式运行。

40.1.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
    DHCP 服务器:卡选择
    图 40.1︰ DHCP 服务器:卡选择
  2. 使用此复选框来确定是否由 LDAP 服务器自动存储您的 DHCP 设置。在文本框中,提供 DHCP 服务器应管理的所有客户端的网络细节。这些细节包括域名、时间服务器地址、主名称服务器和二级名称服务器的地址、打印和 WINS 服务器的地址(对于同时包含 Windows 和 Linux 客户端的混合网络)、网关地址和租用时间。请参见图 40.2 “DHCP 服务器:全局设置”

    DHCP 服务器:全局设置
    图 40.2︰ DHCP 服务器:全局设置
  3. 配置如何为客户端指派动态 IP 地址。为此,应首先指定服务器为 DHCP 客户端指派地址时使用的 IP 范围。所有这些地址必须由同一个网络掩码来覆盖。还要指定租用时间,在此期间客户端可以保留它的 IP 地址,而无需请求续期。也可以选择指定最长租用时间,这是服务器为特定客户端预留某个 IP 地址的时间。请参见图 40.3 “DHCP 服务器:动态 DHCP”

    DHCP 服务器:动态 DHCP
    图 40.3︰ DHCP 服务器:动态 DHCP
  4. 定义 DHCP 服务器应如何启动。指定 DHCP 服务器是在引导系统时自动启动还是在需要时(例如进行测试时)手动启动。单击完成完成对服务器的配置。请参见图 40.4 “DHCP 服务器:启动”

    DHCP 服务器:启动
    图 40.4︰ DHCP 服务器:启动
  5. 除了按上文所述方式使用动态 DHCP 之外,您也可以将服务器配置为以准静态方式指派地址。使用窗口下部提供的文本框来指定要以此方式管理的一组客户端。具体地说就是提供客户端的名称IP 地址,以及硬件地址网络类型(令牌环或以太网)。使用添加编辑从列表中删除来修改在窗口上部显示的客户端列表。请参见图 40.5 “DHCP 服务器:主机管理”

    DHCP 服务器:主机管理
    图 40.5︰ DHCP 服务器:主机管理

40.1.2 DHCP 服务器配置(专家)

除了前面介绍的配置方法外,还有一种专家配置模式,可用于从方方面面调整 DHCP 服务器设置。单击启动对话框中的 DHCP 服务器专家配置(参见图 40.4 “DHCP 服务器:启动”)以启动专家配置。

Chroot 环境和声明

在第一个对话框中,选择启动 DHCP 服务器,使现有的配置可编辑。DHCP 服务器的行为的一个重要功能就是它能够在 chroot 环境(即 chroot jail)中运行,以便保证服务器主机的安全。如果 DHCP 服务器受到了外部攻击,攻击者仍将被封锁在 chroot jail 中,这样便可以阻止其访问系统的其他部分。对话框的下部显示了一个树视图,列出了已经定义的声明。请使用添加删除编辑来修改它们。如果选择高级,就会进入其他专家对话框。请参见图 40.6 “DHCP 服务器:Chroot Jail 和声明”。选择添加后,定义要添加的声明类型。在高级中,查看服务器的日志文件、配置 TSIG 密钥管理,并根据 DHCP 服务器设置调整防火墙配置。

DHCP 服务器:Chroot Jail 和声明
图 40.6︰ DHCP 服务器:Chroot Jail 和声明
选择声明类型

DHCP 服务器的全局选项由若干声明组成。使用此对话框可设置声明类型子网主机共享网络地址池类别。此示例显示了新子网的选择(请参见图 40.7 “DHCP 服务器:选择声明类型”)。

DHCP 服务器:选择声明类型
图 40.7︰ DHCP 服务器:选择声明类型
子网配置

此对话框用于指定新子网的 IP 地址和网络掩码。在对话框的中部,使用添加编辑删除修改所选子网的 DHCP 服务器启动选项。要为子网设置动态 DNS,请选择动态 DNS

DHCP 服务器:配置子网
图 40.8︰ DHCP 服务器:配置子网
TSIG 密钥管理

如果在前面的对话框中选择了配置动态 DNS,现在就可以配置密钥管理来实现安全区域传送。选择确定将进入另一个对话框,在其中可以配置动态 DNS 的接口(请参见图 40.10 “DHCP 服务器:动态 DNS 的接口配置”)。

DHCP 服务器:TSIG 配置
图 40.9︰ DHCP 服务器:TSIG 配置
动态 DNS:接口配置

通过选择为此子网启用动态 DNS,可以为子网激活动态 DNS。完成激活后,请使用下拉框来激活正向和反向区域的 TSIG 密钥,确保为 DNS 和 DHCP 服务器选择相同密钥。使用更新全局动态 DNS 设置,您可以根据动态 DNS 环境自动更新和调节全局 DHCP 服务器设置。最后需要定义每个动态 DNS 应更新哪些正向和反向区域,同时分别为两个区域指定主名称服务器的名称。选择确定返回子网配置对话框(请参见图 40.8 “DHCP 服务器:配置子网”)。再次选择确定将返回最初的专家配置对话框。

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
DHCP 服务器:网络接口和防火墙
图 40.11︰ DHCP 服务器:网络接口和防火墙

在完成所有配置步骤后,选择确定关闭对话框。服务器现在将以新配置启动。

40.2 DHCP 软件包

DHCP 服务器和 DHCP 客户端都适用于 SUSE Linux Enterprise Server。可用的 DHCP 服务器是 dhcpd(由互联网系统联盟发布)。在客户端,可以使用 dhcp-client(也是由 ISC 提供)及 wicked 软件包附带的工具。

默认情况下,wicked 工具会连同 wickedd-dhcp4wickedd-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

例 40.1︰ 配置文件 /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.10192.168.2.20 之间或 192.168.2.100192.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 守护程序会将相同的一组数据指派到相应的客户端。

例 40.2︰ 配置文件中的新增内容
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/)。您也可在 dhcpddhcpd.confdhcpd.leasesdhcp-options 手册页中获得相关信息。