32.6.动态主机设置协议(DHCP)
动态主机配置协议(DHCP)允许系统连接到网络,并分配必要的地址信息以进行网络通信。FreeBSD 包含了 OpenBSD 版本的 dhclient
,该客户端用于获取地址信息。FreeBSD 并没有安装 DHCP 服务器,但在 FreeBSD Ports 中有几个服务器可供选择。DHCP 协议的完整描述可以参见 RFC 2131。更多信息可以访问 isc.org/downloads/dhcp/。
本节将介绍如何使用内置的 DHCP 客户端。接下来介绍如何安装和配置 DHCP 服务器。
注意
在 FreeBSD 中,bpf(4) 设备是 DHCP 服务器和客户端都需要的设备。这个设备包含在 FreeBSD 安装的 GENERIC 内核中。如果用户想创建自定义内核,需要保留此设备以便使用 DHCP。值得注意的是,bpf 还允许具有特权的用户在该系统上运行网络数据包嗅探器。
32.6.1. 配置 DHCP 客户端
FreeBSD 安装程序中包含了 DHCP 客户端支持,使得新安装的系统能够自动从现有的 DHCP 服务器获取网络配置地址信息。有关网络配置的示例,请参阅 Accounts, Time Zone, Services and Hardening。
当在客户端机器上执行 dhclient
时,它会开始广播请求配置信息。默认情况下,这些请求使用 UDP 端口 68。服务器回复在 UDP 端口 67 上,向客户端提供 IP 地址以及其他相关的网络信息,例如子网掩码、默认网关和 DNS 服务器地址。这些信息以 DHCP "租约" 的形式提供,并且在可配置的时间内有效。这使得那些不再连接到网络的客户端的过期 IP 地址能够被自动回收。DHCP 客户端可以从服务器获取大量的信息。有关详细信息,请参见 dhcp-options(5)。
默认情况下,当 FreeBSD 系统启动时,其 DHCP 客户端会在后台运行,或称为 异步模式。其他启动脚本会继续运行,而 DHCP 进程在后台完成,这样可以加速系统启动。
背景模式下的 DHCP 工作得很好,前提是 DHCP 服务器能快速响应客户端的请求。然而,在某些系统上,DHCP 可能需要较长时间才能完成。如果网络服务在 DHCP 配置完成之前尝试启动,它们将会失败。使用同步模式下的 DHCP 可以避免这个问题,因为它会在启动时暂停,直到 DHCP 配置完成。
在 /etc/rc.conf 中使用以下行配置后台或异步模式:
ifconfig_fxp0="DHCP"
如果在安装过程中已配置该系统使用 DHCP,则这行配置可能已经存在。请将这些示例中的 fxp0 替换为要动态配置的接口名称,如在 “Setting Up Network Interface Cards” 中所述。
要配置系统使用同步模式,并在启动时暂停直到 DHCP 配置完成,请使用 “SYNCDHCP”:
ifconfig_fxp0="SYNCDHCP"
可以使用其他客户端选项。请在 rc.conf(5) 中搜索 dhclient
以获取更多详细信息。
DHCP 客户端使用以下文件:
/etc/dhclient.conf
dhclient
使用的配置文件。通常,这个文件仅包含注释,因为默认配置适合大多数客户端。此配置文件的详细描述请参见 dhclient.conf(5)。/sbin/dhclient 有关此命令的更多信息,请参见 dhclient(8)。
/sbin/dhclient-script FreeBSD 特定的 DHCP 客户端配置脚本。它的描述请参见 dhclient-script(8),但通常不需要用户修改以正常工作。
/var/db/dhclient.leases.interface DHCP 客户端将有效的租约保存在此文件中,以日志的形式记录,详细信息请参见 dhclient.leases(5)。
32.6.2. 安装和配置 DHCP 服务器
本节演示如何配置 FreeBSD 系统,使其充当 DHCP 服务器,使用互联网系统联盟(ISC)实现的 DHCP 服务器。此实现及其文档可以通过安装 net/isc-dhcp44-server 软件软件包和 Ports 来获得。
安装 net/isc-dhcp44-server 后,会安装一个示例配置文件。将 /usr/local/etc/dhcpd.conf.example 复制到 /usr/local/etc/dhcpd.conf,并对新文件进行编辑。
配置文件由子网和主机的声明组成,这些声明定义了提供给 DHCP 客户端的信息。例如,以下几行配置了如下内容:
option domain-name "example.org"; ①
option domain-name-servers ns1.example.org; ②
option subnet-mask 255.255.255.0; ③
default-lease-time 600; ④
max-lease-time 72400; ⑤
ddns-update-style none; ⑥
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20; ⑦
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; ⑧
}
host fantasia {
hardware ethernet 08:00:07:26:c0:a5; ⑨
fixed-address fantasia.fugue.com; ⑩
}
① 该选项指定将提供给客户端的默认搜索域。有关更多信息,请参见 resolv.conf(5)。
② 该选项指定客户端应使用的 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 服务器:
dhcpd_enable="YES"
dhcpd_ifaces="dc0"
将 dc0
替换为 DHCP 服务器应侦听 DHCP 客户端请求的接口(或多个接口,接口间以空格分隔)。
通过以下命令启动服务器:
# service isc-dhcpd start
以后对服务器配置的任何更改都需要先停止 dhcpd
服务,然后使用 service(8) 命令重新启动。
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-relay 软件包和 Ports 。安装后包含
dhcrelay(8)
,提供更多详细信息。
最后更新于
这有帮助吗?