我正在尝试在 Cisco UCS C240 机架式服务器上进行 Ubuntu 12.04 的网络安装,并使用 Cobbler 进行配置。Cobbler 正在管理我的 DHCP 服务器 (ISC),该服务器配置为根据服务器的 MAC 地址分配固定 IP 地址。以下是 cobbler 自动生成的 /etc/dhcp/dhcpd.conf 中的相关部分:
group {
host generic4 {
hardware ethernet 2a:2c:b2:b4:f7:1a;
fixed-address 10.10.0.153;
option host-name "compute-3";
option subnet-mask 255.255.255.0;
option routers 10.30.0.1;
filename "/pxelinux.0";
next-server 10.10.0.131;
}
}
计算机 (compute-3) 能够成功进行 PXE 启动并启动 Ubuntu 安装过程。但是,当安装程序到达尝试通过 DHCP 获取 IP 地址的部分时,它会失败。(此时,如果我使用相同的 IP 地址/网络掩码和网关手动配置网络,则安装将成功完成)。
当我检查运行 DHCP 服务器的 cobbler 节点上的 /var/log/syslog 时,我发现服务器提供了一个 IP 地址,但是被客户端拒绝了:
Mar 11 21:51:03 compute-1 dhcpd: DHCPDISCOVER from 2a:2c:b2:b4:f7:1a via eth2
Mar 11 21:51:03 compute-1 dhcpd: DHCPOFFER on 10.10.0.153 to 2a:2c:b2:b4:f7:1a via eth2
Mar 11 21:51:03 compute-1 dhcpd: DHCPREQUEST for 10.10.0.153 (10.10.0.131) from 2a:2c:b2:b4:f7:1a via eth2
Mar 11 21:51:03 compute-1 dhcpd: DHCPACK on 10.10.0.153 to 2a:2c:b2:b4:f7:1a via eth2
Mar 11 21:51:03 compute-1 dhcpd: DHCPDECLINE of 10.10.0.153 from 2a:2c:b2:b4:f7:1a via eth2: not found
据我所知,客户端在执行 ARP 探测后会发送 DHCPDECLINE,以查看网络上是否有其他计算机已经拥有提供的 IP 地址。我认为 Ubuntu 的安装程序使用 BusyBox 的 udhcpc,以及查看代码,这似乎就是 udhcpc 所做的。
但是,当我从 cobbler 节点使用 arping 时,我无法在该网络上找到任何其他具有 10.10.0.153 的机器。也就是说,直到 DHCP 进程启动以进行安装,之后我才看到 compute-3 的 MAC 地址2a:2c:b2:b4:f7:1a
与该 IP 地址相关联。
# arping 10.10.0.153
ARPING 10.10.0.153
60 bytes from 2a:2c:b2:b4:f7:1a (10.10.0.153): index=0 time=118.017 usec
60 bytes from 2a:2c:b2:b4:f7:1a (10.10.0.153): index=1 time=74.148 usec
60 bytes from 2a:2c:b2:b4:f7:1a (10.10.0.153): index=2 time=48.876 usec
哪些可能的故障模式可能导致此行为?为什么客户端会认为其他人拥有该 IP 地址?或者,为什么它可能会拒绝该地址?
答案1
我在谷歌上发现了一个类似的问题:http://www.linuxquestions.org/questions/linux-networking-3/dhcpdecline-of-ipaddress-from-mac-via-interface-not-found-838369/
您的路由器选项有错误:它不在同一个子网中,因此无法被发现。
option routers 10.10.0.1
代替option routers 10.30.0.1
希望这有帮助!
答案2
如果 IP 地址已在同一个子网中被使用,dhcpd 将发送 ACK,然后发送 DECLINE。
验证没有静态配置相同 IP 地址的主机。