![尽管应该有可用的 IP,但 dhcp 服务器给出“无免费租约”错误](https://linux22.com/image/685625/%E5%B0%BD%E7%AE%A1%E5%BA%94%E8%AF%A5%E6%9C%89%E5%8F%AF%E7%94%A8%E7%9A%84%20IP%EF%BC%8C%E4%BD%86%20dhcp%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%BB%99%E5%87%BA%E2%80%9C%E6%97%A0%E5%85%8D%E8%B4%B9%E7%A7%9F%E7%BA%A6%E2%80%9D%E9%94%99%E8%AF%AF.png)
我们有一个小型 HPC 集群,其中大约有 40 台机器运行 Rocks Linux Distro 6.2(基于 Centos 6.6)。最近几天,我一直在尝试向系统添加另外 6 台机器。前 3 台机器成功了,但我无法通过 pxe 启动其他 3 台机器。/var/log/messages
显示“无免费租约”错误,如下所示:
[root@topaz ~]# tail -n3 /var/log/messages
Jun 29 17:56:00 topaz dhcpd: DHCPDISCOVER from d0:bf:9c:03:3b:40 via eth0: network 10.1.0.0/16: no free leases
Jun 29 17:56:03 topaz dhcpd: DHCPDISCOVER from d0:bf:9c:03:3b:40 via eth0: network 10.1.0.0/16: no free leases
Jun 29 17:56:07 topaz dhcpd: DHCPDISCOVER from d0:bf:9c:03:3b:40 via eth0: network 10.1.0.0/16: no free leases
除了前端之外,所有机器都只有一个本地 IP。应该有足够的 IP 可供分配给这些新机器。似乎没有任何意外的机器连接到网络:
[root@topaz ~]# arp -a | awk '{ print $2 }' | sort
(10.1.255.215)
(10.1.255.216)
(10.1.255.217)
(10.1.255.218)
(10.1.255.219)
(10.1.255.220)
(10.1.255.221)
(10.1.255.222)
(10.1.255.223)
(10.1.255.224)
(10.1.255.225)
(10.1.255.226)
(10.1.255.227)
(10.1.255.228)
(10.1.255.229)
(10.1.255.230)
(10.1.255.231)
(10.1.255.232)
(10.1.255.233)
(10.1.255.234)
(10.1.255.235)
(10.1.255.236)
(10.1.255.237)
(10.1.255.238)
(10.1.255.239)
(10.1.255.240)
(10.1.255.241)
(10.1.255.242)
(10.1.255.243)
(10.1.255.244)
(10.1.255.245)
(10.1.255.246)
(10.1.255.247)
(10.1.255.248)
(10.1.255.249)
(10.1.255.250)
(10.1.255.251)
(10.1.255.252)
(10.1.255.253)
(10.1.255.254)
(193.140.197.1)
(193.140.197.110)
(193.140.197.160)
(193.140.197.30)
(193.140.197.36)
我们的租赁文件没有显示任何条目:
[root@topaz ~]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.1.1-P1
server-duid "\000\001\000\001\037\006r\351x\347\321\350\031\006";
我们的配置文件如下所示:
[root@topaz ~]# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
subnet 10.1.0.0 netmask 255.255.0.0 {
default-lease-time 1200;
max-lease-time 1200;
option routers 10.1.1.1;
option subnet-mask 255.255.0.0;
option domain-name "local";
option domain-name-servers 10.1.1.1;
option broadcast-address 10.1.255.255;
option interface-mtu 1500;
group "local" {
host topaz-eth0 {
hardware ethernet 78:E7:D1:E8:19:06;
option host-name "topaz";
fixed-address 10.1.1.1;
filename "pxelinux.0";
next-server 10.1.1.1;
}
host topaz-eth2 {
hardware ethernet 78:E7:D1:E8:19:0A;
option host-name "topaz";
fixed-address 10.1.1.1;
filename "pxelinux.0";
next-server 10.1.1.1;
}
host topaz-eth3 {
hardware ethernet 78:E7:D1:E8:19:0C;
option host-name "topaz";
fixed-address 10.1.1.1;
filename "pxelinux.0";
next-server 10.1.1.1;
}
host compute-2-0-eth0 {
hardware ethernet 00:23:7d:9f:6f:ca;
option host-name "compute-2-0";
fixed-address 10.1.255.254;
filename "pxelinux.0";
next-server 10.1.1.1;
}
host compute-2-0-eth1 {
hardware ethernet 00:23:7d:a0:20:e4;
option host-name "compute-2-0";
fixed-address 10.1.255.254;
filename "pxelinux.0";
next-server 10.1.1.1;
}
host compute-0-0-eth0 {
hardware ethernet 1c:c1:de:76:6f:40;
option host-name "compute-0-0";
fixed-address 10.1.255.253;
filename "pxelinux.0";
next-server 10.1.1.1;
}
host compute-0-0-eth1 {
hardware ethernet 1c:c1:de:76:6f:44;
option host-name "compute-0-0";
fixed-address 10.1.255.253;
filename "pxelinux.0";
next-server 10.1.1.1;
}
(goes on like this)
}
我不明白为什么会出现此错误。如能提供任何帮助,我将不胜感激。
答案1
看起来您错过了这些盒子的range
定义或特定host
条目,无法匹配它们的 MAC。除非您的故障盒子在“像这样继续”的列表中,否则它们不会分配任何地址。
答案2
您的 ISC dhcpd 配置文件(发布于 2016 年 6 月)没有范围声明。没有租约是免费的,因为服务器无法在定义的范围内找到要分发的 IP 地址。您需要一行类似
range 10.1.42.0 10.1.49.255;
在您的 subnet{} 块内。该子网内的任何范围(没有其他任何范围正在使用)都可以使用。如果您有多个子网块,则每个子网块都需要一个范围定义。
答案3
我刚刚遇到了这个错误的一个奇怪情况,我会在这里提到它,以防它对某人有帮助。
我的 dhcp3 绑定在两个适配器上。我无法让 DHCP 在其中一个适配器上工作。原来我为客户端计算机预留了一个旧的 MAC 地址。由于此预留是为另一个子网预留的,因此 DHCP 只能找到一个预先确定的 IP 地址,该地址超出了此适配器的范围,因此出现了此no free leases
错误。