github编辑

32.6.动态主机设置协议(DHCP)

动态主机配置协议(DHCP)允许系统连接到网络,并分配必要的地址信息以进行网络通信。FreeBSD 包含了 OpenBSD 版本的 dhclient,该客户端用于获取地址信息。FreeBSD 并没有安装 DHCP 服务器,但在 FreeBSD Ports 中有几个服务器可供选择。DHCP 协议的完整描述可以参见 RFC 2131arrow-up-right。更多信息可以访问 isc.org/downloads/dhcp/arrow-up-right

本节将介绍如何使用内置的 DHCP 客户端。接下来介绍如何安装和配置 DHCP 服务器。

注意

在 FreeBSD 中,bpf(4)arrow-up-right 设备是 DHCP 服务器和客户端都需要的设备。这个设备包含在 FreeBSD 安装的 GENERIC 内核中。如果用户想创建自定义内核,需要保留此设备以便使用 DHCP。值得注意的是,bpf 还允许具有特权的用户在该系统上运行网络数据包嗅探器。

32.6.1. 配置 DHCP 客户端

FreeBSD 安装程序中包含了 DHCP 客户端支持,使得新安装的系统能够自动从现有的 DHCP 服务器获取网络配置地址信息。有关网络配置的示例,请参阅 Accounts, Time Zone, Services and Hardeningarrow-up-right

当在客户端机器上执行 dhclient 时,它会开始广播请求配置信息。默认情况下,这些请求使用 UDP 端口 68。服务器回复在 UDP 端口 67 上,向客户端提供 IP 地址以及其他相关的网络信息,例如子网掩码、默认网关和 DNS 服务器地址。这些信息以 DHCP "租约" 的形式提供,并且在可配置的时间内有效。这使得那些不再连接到网络的客户端的过期 IP 地址能够被自动回收。DHCP 客户端可以从服务器获取大量的信息。有关详细信息,请参见 dhcp-options(5)arrow-up-right

默认情况下,当 FreeBSD 系统启动时,其 DHCP 客户端会在后台运行,或称为 异步模式。其他启动脚本会继续运行,而 DHCP 进程在后台完成,这样可以加速系统启动。

背景模式下的 DHCP 工作得很好,前提是 DHCP 服务器能快速响应客户端的请求。然而,在某些系统上,DHCP 可能需要较长时间才能完成。如果网络服务在 DHCP 配置完成之前尝试启动,它们将会失败。使用同步模式下的 DHCP 可以避免这个问题,因为它会在启动时暂停,直到 DHCP 配置完成。

/etc/rc.conf 中使用以下行配置后台或异步模式:

ifconfig_fxp0="DHCP"

如果在安装过程中已配置该系统使用 DHCP,则这行配置可能已经存在。请将这些示例中的 fxp0 替换为要动态配置的接口名称,如在 “Setting Up Network Interface Cards”arrow-up-right 中所述。

要配置系统使用同步模式,并在启动时暂停直到 DHCP 配置完成,请使用 “SYNCDHCP”:

ifconfig_fxp0="SYNCDHCP"

可以使用其他客户端选项。请在 rc.conf(5)arrow-up-right 中搜索 dhclient 以获取更多详细信息。

DHCP 客户端使用以下文件:

  • /etc/dhclient.confdhclient 使用的配置文件。通常,这个文件仅包含注释,因为默认配置适合大多数客户端。此配置文件的详细描述请参见 dhclient.conf(5)arrow-up-right

  • /sbin/dhclient 有关此命令的更多信息,请参见 dhclient(8)arrow-up-right

  • /sbin/dhclient-script FreeBSD 特定的 DHCP 客户端配置脚本。它的描述请参见 dhclient-script(8)arrow-up-right,但通常不需要用户修改以正常工作。

  • /var/db/dhclient.leases.interface DHCP 客户端将有效的租约保存在此文件中,以日志的形式记录,详细信息请参见 dhclient.leases(5)arrow-up-right

32.6.2. 安装和配置 DHCP 服务器

本节演示如何配置 FreeBSD 系统,使其充当 DHCP 服务器,使用互联网系统联盟(ISC)实现的 DHCP 服务器。此实现及其文档可以通过安装 net/isc-dhcp44-serverarrow-up-right 软件软件包和 Ports 来获得。

安装 net/isc-dhcp44-serverarrow-up-right 后,会安装一个示例配置文件。将 /usr/local/etc/dhcpd.conf.example 复制到 /usr/local/etc/dhcpd.conf,并对新文件进行编辑。

配置文件由子网和主机的声明组成,这些声明定义了提供给 DHCP 客户端的信息。例如,以下几行配置了如下内容:

  • ① 该选项指定将提供给客户端的默认搜索域。有关更多信息,请参见 resolv.conf(5)arrow-up-right

  • ② 该选项指定客户端应使用的 DNS 服务器的逗号分隔列表。可以使用其完全限定的域名(FQDN),如示例中所示,或者使用它们的 IP 地址。

  • ③ 将提供给客户端的子网掩码。

  • ④ 默认租约到期时间,以秒为单位。客户端可以配置为覆盖此值。

  • ⑤ 租约的最大有效时长,以秒为单位。如果客户端请求更长的租约,仍然会发放租约,但它将仅在 max-lease-time 的有效期内有效。

  • ⑥ 默认值 none 禁用动态 DNS 更新。将其更改为 interim 配置 DHCP 服务器,在每次发放租约时更新 DNS 服务器,这样 DNS 服务器就知道哪些 IP 地址与网络中的哪些计算机相关联。除非 DNS 服务器已配置为支持动态 DNS,否则不应更改默认设置。

  • ⑦ 这一行创建一个可供 DHCP 客户端分配的 IP 地址池。地址范围必须对前面指定的网络或子网有效。

  • ⑧ 声明在前面花括号之前指定的网络或子网的默认网关。

  • ⑨ 指定客户端的硬件 MAC 地址,以便 DHCP 服务器在客户端请求时识别该客户端。

  • ⑩ 指定该主机应始终获得相同的 IP 地址。使用主机名是正确的,因为 DHCP 服务器将在返回租约信息之前解析主机名。

此配置文件支持更多选项。有关详细信息和示例,请参见与服务器一起安装的 dhcpd.conf(5)

配置完 dhcpd.conf 后,在 /etc/rc.conf 中启用 DHCP 服务器:

dc0 替换为 DHCP 服务器应侦听 DHCP 客户端请求的接口(或多个接口,接口间以空格分隔)。

通过以下命令启动服务器:

以后对服务器配置的任何更改都需要先停止 dhcpd 服务,然后使用 service(8)arrow-up-right 命令重新启动。

DHCP 服务器使用以下文件。请注意,手册页已随服务器软件一起安装。

  • /usr/local/sbin/dhcpd 有关 dhcpd 服务器的更多信息,请参见 dhcpd(8)

  • /usr/local/etc/dhcpd.conf 服务器配置文件需要包含所有应提供给客户端的信息,以及关于服务器操作的信息。此配置文件在 dhcpd.conf(5) 中有详细描述。

  • /var/db/dhcpd.leases DHCP 服务器将它所发放的租约保存在此文件中,文件以日志的形式写入。请参阅 dhcpd.leases(5),该文档给出了稍长的描述。

  • /usr/local/sbin/dhcrelay 该守护进程用于在高级环境中,其中一个 DHCP 服务器将客户端的请求转发到另一个 DHCP 服务器,该服务器位于不同的网络中。如果需要此功能,请安装 net/isc-dhcp44-relayarrow-up-right 软件包和 Ports 。安装后包含 dhcrelay(8),提供更多详细信息。

最后更新于