在 Windows 的 DHCP 服务器中,可以排除将整个子网分配给没有预留的客户端。他们称之为“排除分配的 IP 地址”。
现在我想在 Linux 的 DHCPD 上执行相同操作。所以我有这些子网
# servers
subnet 192.168.91.0 netmask 255.255.255.0 {
range 192.168.91.2 192.168.91.254;
option routers 192.168.91.1;
}
# desktop computers
subnet 192.168.234.0 netmask 255.255.255.0 {
range 192.168.234.2 192.168.234.254;
option routers 192.168.234.1;
}
其中,用户桌面永远不应被赋予“服务器”范围内的 IP。只有拥有预留的主机才能够从“服务器”范围内获取 IP。但任何人都可以从“桌面”范围内获取 IP。
问题
我如何在 Linux 的 DHCPD 中做到这一点?
答案1
简单——不要添加范围。
# servers
subnet 192.168.91.0 netmask 255.255.255.0 {
option routers 192.168.91.1;
}
然后在稍后的配置中,您可以根据需要将该子网中的特定 IP 分配给特定的 MAC 地址。
下面是我实际的 DHCP 服务器的一个示例(抱歉,是在家里的 Pi 上,不是在“专业环境”中,但无论如何都一样……只是规模问题)
$ cat /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 700;
ddns-update-style none;
authoritative;
log-facility local7;
lease-file-name "/etc/dhcp/leases.dhcpd";
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
option ms-classless-routes code 249 = array of unsigned integer 8;
#notice no range in this subnet
subnet 192.168.1.0 netmask 255.255.255.0 {
option domain-name "home.test";
option domain-name-servers 192.168.1.2;
option routers 192.168.1.1;
option rfc3442-classless-static-routes 24, 10,99,97, 192,168,1,2;
option ms-classless-routes 24, 10,99,97, 192,168,1,2;
}
subnet 10.99.97.0 netmask 255.255.255.0 {
range 10.99.97.150 10.99.97.175;
option domain-name "home.test";
option domain-name-servers 192.168.1.2;
option routers 10.99.97.2;
}
host webdev{
hardware ethernet 08:00:27:74:07:21;
fixed-address 192.168.1.90;
}