PXE引导无法通过DHCP获取IP地址,但DHCP在OS引导时工作

我试图通过PXE引导思科UCS C240服务器来通过networking安装一个新的操作系统,但是它在启动过程中没有通过DHCP获取IP地址。 Intel Boot Agent收到“没有收到DHCP或proxyDHCP提供的服务”错误。 DHCP服务器上的tcpdump显示在DHCP服务器上没有收到与DHCP相关的数据包:

tcpdump -n -e -i eth2 ether src FC:99:47:49:D4:9E or ether dst FC:99:47:49:D4:9E 

但是,当我将计算机引导到已安装的操作系统(在本例中为Windows Server 2012)并将该networking接口configuration为DHCP时,它会从DHCP服务器获取IP地址。 如果我离开tcpdump运行,我看到以下内容:

 13:34:36.525646 fc:99:47:49:d4:9e > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 126: 169.254.239.3.54275 > 255.255.255.255.111: UDP, length 84 13:34:40.118071 fc:99:47:49:d4:9e > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 110: 169.254.239.3.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST 13:34:40.888206 fc:99:47:49:d4:9e > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 110: 169.254.239.3.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST 13:34:40.975407 fc:99:47:49:d4:9e > 01:00:5e:00:00:fc, ethertype IPv4 (0x0800), length 66: 169.254.239.3.55524 > 224.0.0.252.5355: UDP, length 24 13:34:41.387736 fc:99:47:49:d4:9e > 01:00:5e:00:00:fc, ethertype IPv4 (0x0800), length 66: 169.254.239.3.55524 > 224.0.0.252.5355: UDP, length 24 13:34:41.418849 fc:99:47:49:d4:9e > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 358: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fc:99:47:49:d4:9e, length 316 13:34:41.419144 60:73:5c:68:b4:b6 > fc:99:47:49:d4:9e, ethertype IPv4 (0x0800), length 342: 10.10.0.131.67 > 10.10.0.151.68: BOOTP/DHCP, Reply, length 300 

在启动进入操作系统的成功进程中,在PXE启动过程中可能导致DHCP失败? 据我所知,PXE正在使用与Windows相同的networking接口。 至less,PXE引导期间报告的MAC地址与Windows启动时通过DHCP获取IP的MAC地址相同。

我见过Portfast(或缺乏)造成这种情况。 在DHCP客户端和服务器之间的端口上启用Portfast解决了我的问题。

另一次您可能会看到这个问题是与预启动执行(PXE)设备,如Windows部署服务。 下图显示了典型的PXE实现。 以下是PXE的情况:

给计算机上电,激活网卡,但不到五秒钟后,计算机的POST完成,网卡尝试从DHCP获取IP地址,以便它可以直接从PXE服务器加载启动映像,从而导致失败。

计算机会在大约10秒内尝试从DHCP服务器获取IP地址数次,然后放弃并移到其他引导设备(如硬盘驱动器)上。 这个过程的不幸的一部分是,因为它无法获得IP地址或连接到PXE服务器,您无法在该计算机上安装新的操作系统映像。

这种情况下的问题是,由于STP使计算机在端口上转发通信之前等待了45秒,因此PXEnetworking引导已超时。 PortFast是客户端计算机连接到交换机时延迟问题的解决scheme。 PortFast默认不启用。 在端口上启用PortFast后,您可以有效地使用端口,并告诉生成树不要在该端口上实施STP。

如果只有一台计算机插入端口,这个解决scheme并不是一件坏事 – 这样人们就不会在networking上造成意外的循环,这样做可以很容易做到。

http://www.dummies.com/how-to/content/spanning-tree-protocol-stp-and-portfast.html

如果您不能/不愿意为电脑的端口开启portfast(或同等function),我发现在打印“DHCP …”之后,您也可以在键盘上点击暂停键。 ASCIIgraphics将停止旋转。 等待30秒或其他任何需要的,按一下键取消暂停,然后你将networking启动就好了。

通常它是两件事情之一(或两者同时)。

1)服务器连接的边缘端口上的Spanning Tree协议,就像上面已经提到的Ryan Ries一样。

2)在PC和交换机之间自动协商,这要比PXE引导加载器愿意等待地址的时间长。

如果您无法控制交换机,最好的select通常是将服务器启动到Bios。 等一会儿,让交换机解决,然后离开bios继续引导。
在启动的早期按下键盘上的暂停/滚动lockingbutton(在PXE启动之前启动尝试)可以达到同样的效果。
这两种情况当然意味着您可以将键盘和显示器连接到设备。

我通常通过让主机在BIOS启动扩展内存检查(不知道思科,但惠普和IBM允许这种设置),以便主机启动到PXE一切都能够转发。 UEFI系统似乎也减慢了启动过程。 我并不是说portfast选项不起作用,但有时候这对于“我们做事情”的networkingtypes来说是一个难题。 这已经工作,每一次,我试过了,没有networking干预。

在我的WDS服务器和交换机上电后,我遇到了类似的问题。 我发现在Server \ Options设置中的DNS设置是NULL,所以我必须把DNS设置,我也validation了其他服务器选项设置,看看他们是否是零。

使用MAAS 1.7.6,您必须点击Clusers,然后点击群集名称,然后编辑界面。 然后在pipe理中,您可以添加DHCP和DNS以及DHCP详情。 保存界面。 检查进程dhcpd显示在你的进程列表中。