我们有一个用于 DHCP 的 RHEL 6.7 服务器。当有人想要永久 IP 地址时,我需要澄清 dhcpd 如何处理网络寻址。这是来自我们其中一台服务器的示例配置。我的理解是有两种方法可以得到它们。DHCP 保留和真正的静态 IP 不在 DHCP 范围内。
subnet 192.168.100.0 netmask 255.255.255.0 {
option domain-name "domain.net";
option broadcast-address 192.168.100.255;
option routers 192.168.100.1;
# Define the scopes for this DHCP pool
pool {
range 192.168.100.2 192.168.100.200;
# static reserve = 192.168.100.201 - 192.168.100.254
}
host static-custid {
hardware ethernet 00:01:02:03:04:05;
fixed-address 192.168.100.150;
}
host static-custid {
hardware ethernet 00:01:02:03:04:05;
fixed address 192.168.100.201;
}
}
如您所见,我们在 DHCP 范围之外有一个静态保留区,在内部有一个。我的理解是 dhcpd 只知道声明池中的那个,因为客户端将使用 DHCP 协议。但是对于我的生活,我无法让任何人在这里向我解释为什么我们要为未在池中定义的 IP 声明静态保留。dhcpd 是否有可能知道池外的静态保留并在看到该 MAC 地址并且客户端正在使用 DHCP 时给它 192.168.100.201?我不认为是这种情况,因为池外的所有这些静态储备都不在 dhcpd.leases 文件中。
静态 IP 通常在池范围之外,因为您不希望将静态 IP 分配给其他主机。只要静态 IP 在本地(或中继)到 DCHP 服务器的 IP 范围内,就可以为它们提供服务。
租约文件记录了池中的哪些地址已分配给主机以及该分配何时到期。这用于确保不会为多个主机分配相同的 IP 地址。活动租约的存在并不表示主机当前已连接到网络。由于静态 IP 分配由其定义可知,它们不需要记录在租用文件中。
如果租用时间过长并且客户端频繁更改,则可能会在当前仅连接少数主机的情况下用完地址。这在热点或访客网络中比在典型的办公网络中更可能发生。
某些 DHCP 服务器软件在保留方面的操作方式有所不同:
阅读最常见的 Linux DHCPd 的手册页,它似乎允许通过使用池选项组合来实施上述任何策略:
已知客户端的定义是在 conf 文件的某处有一个主机条目。因此,如果您不“允许已知客户”;在池中,您不能在池使用的范围内分配固定地址。
当然,对于保留的固定地址、动态地址和静态分配的 IP,它们都需要在同一 LAN 上的同一子网中进行通信,或者在它们的子网之间具有所需的路由。
您可以两者都做,在 DHCPd 中保留一个 IP 并在实际主机上设置一个静态 IP。它只是意味着永远不会询问 DHCP 服务器使用哪个 IP,主机只是使用它。这样做有助于对 IP 地址的使用进行自我记录,因为它可以为所有设备所拥有的 IP 提供一个相当集中的存储区域。尽管像任何文档技术一样,它需要维护或者它是无用的。除了在 DHCPd 服务器中记录主机 IP,您还可以使用 DNS 服务器,或者您可以拥有单独的文档。