23.5. 网络自动配置 (DHCP)

Written by Greg Sutter.

23.5.1. 安装和配置 DHCP 服务器

23.5.1.1. 这一章包含哪些内容

这一章提供了关于如何在 FreeBSD 系统上使用 ISC (Internet 软件协会) 的 DHCP 实现套件来架设 DHCP 服务器的信息。

DHCP 套件中的服务器部分并没有作为 FreeBSD 的一部分来提供, 因此您需要安装 net/isc-dhcp3-server port 才能提供这个服务。 请参见 Chapter 4 以了解关于如何使用 ports collection 的进一步详情。

23.5.1.2. 安装 DHCP 服务器

为了在您的 FreeBSD 系统上进行配置以便作为 DHCP 服务器来使用, 需要把 bpf(4) 设备编译进内核。 要完成这项工作, 需要将 device bpf (如果使用 FreeBSD 4.X 的话, 则写作 pseudo-device bpf) 加入到您的内核配置文件中, 并重新联编内核。 要得到关于如何联编内核的进一步信息, 请参见 Chapter 8

bpf 设备是 FreeBSD 所附带的 GENERIC 内核中已经联入的组件, 因此您并不需要为了让 DHCP 正常工作而特地定制内核。

Note: 如果您有较强的安全意识, 应该注意 bpf 同时也是让听包程序能够正确工作的设备 (尽管这类程序仍然需要以特权用户身份运行)。 bpf 使用 DHCP 所必需的, 但如果您对安全非常敏感, 您可能会不希望将 bpf 放进内核, 直到您真的认为 DHCP 是必需的为止。

接下来要做的是编辑示范的 dhcpd.conf, 它由 net/isc-dhcp3-server port 安装。 默认情况下, 它的名字应该是 /usr/local/etc/dhcpd.conf.sample, 在开始修改之前, 您需要把它复制为 /usr/local/etc/dhcpd.conf

23.5.1.3. 配置 DHCP 服务器

dhcpd.conf 包含了一系列关于子网和主机的定义, 下面的例子可以帮助您理解它:

option domain-name "example.com";(1)
option domain-name-servers 192.168.4.100;(2)
option subnet-mask 255.255.255.0;(3)

default-lease-time 3600;(4)
max-lease-time 86400;(5)
ddns-update-style none;(6)

subnet 192.168.4.0 netmask 255.255.255.0 {
  range 192.168.4.129 192.168.4.254;(7)
  option routers 192.168.4.1;(8)
}

host mailhost {
  hardware ethernet 02:03:04:05:06:07;(9)
  fixed-address mailhost.example.com;(10)
}
(1)
这个选项指定了提供给客户机作为默认搜索域的域名。 请参考 resolv.conf(5) 以了解关于这一概念的详情。
(2)
这个选项用于指定一组客户机使用的 DNS 服务器, 它们之间以逗号分隔。
(3)
提供给客户机的子网掩码。
(4)
客户机可以请求租约的有效期, 而如果没有, 则服务器将指定一个租约有效期, 也就是这个值 (单位是秒)。
(5)
这是服务器允许租出地址的最大时长。 如果客户机请求了更长的租期, 则它将得到一个地址, 但其租期仅限于 max-lease-time 秒。
(6)
这个选项用于指定 DHCP 服务器在一个地址被接受或释放时是否应对应尝试更新 DNS。 在 ISC 实现中, 这一选项是 必须指定的
(7)
指定地址池中可以用来分配给客户机的 IP 地址范围。 在这个范围之间, 以及其边界的 IP 地址将分配给客户机。
(8)
定义客户机的默认网关。
(9)
主机的硬件 MAC 地址 (这样 DHCP 服务器就能够在接到请求时知道请求的主机身份)。
(10)
指定总是得到同一 IP 地址的主机。 请注意在此处使用主机名是对的, 因为 DHCP 服务器会在返回租借地址信息之前自行解析主机名。

一旦您撰写完 dhcpd.conf, 就可以用下面的命令来启动服务:

# /usr/local/etc/rc.d/isc-dhcpd.sh start

如果未来您需要修改服务器的配置, 请务必牢记发送 SIGHUP 信号给 dhcpd不会 导致配置文件的重新加载, 而这在其他服务程序中则是比较普遍的约定。 您需要发送 SIGTERM 信号来停止进程, 然后使用上面的命令来重新启动它。

23.5.1.4. 文件

  • /usr/local/sbin/dhcpd

    dhcpd 是静态连接的, 并安装到 /usr/local/sbin 中。 随 port 安装的 dhcpd(8) 联机手册提供了关于 dhcpd 更为详尽的信息。

  • /usr/local/etc/dhcpd.conf

    dhcpd 需要配置文件, 即 /usr/local/etc/dhcpd.conf 才能够向客户机提供服务。 这个文件需要包括应提供给客户机的所有信息, 以及关于服务器运行的其他信息。 此配置文件的详细描述可以在随 port 安装的 dhcpd.conf(5) 联机手册上找到。

  • /var/db/dhcpd.leases

    DHCP 服务器会维护一个它签发的租用地址数据库, 并保存在这个文件中, 这个文件是以日志的形式保存的。 随 port 安装的 dhcpd.leases(5) 联机手册提供了更详细的描述。

  • /usr/local/sbin/dhcrelay

    dhcrelay 在更为复杂的环境中, 可以用来支持使用 DHCP 服务器转发请求给另一个独立网络上的 DHCP 服务器。 如果您需要这个功能, 需要安装 net/isc-dhcp3-relay port。 dhcrelay(8) 联机手册提供了更为详尽的介绍。