Назад | Перейти на главную страницу

При загрузке PXE не удается получить IP-адрес через DHCP, но DHCP работает при загрузке ОС

Я пытаюсь выполнить PXE-загрузку сервера Cisco UCS C240, чтобы установить новую ОС по сети, но он не получает IP-адрес через DHCP во время загрузки. Я получаю сообщение об ошибке «Нет предложений DHCP или proxyDHCP» от агента загрузки Intel. Tcpdump на DHCP-сервере показывает, что на 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) и настраиваю этот сетевой интерфейс для DHCP, он получает IP-адрес от DHCP-сервера. Если я оставлю 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

Что могло привести к сбою DHCP во время процесса загрузки PXE при успешной загрузке в операционной системе? Насколько я могу судить, PXE использует тот же сетевой интерфейс, что и Windows. По крайней мере, MAC-адрес, сообщаемый во время загрузки PXE, совпадает с MAC-адресом, который получает IP-адрес через DHCP, когда Windows работает.

Я видел, что Портфаст (или его отсутствие) вызывает это. Включение Portfast на портах между DHCP-клиентом и сервером решило проблему для меня.

В другой раз вы можете увидеть эту проблему с устройствами с предзагрузочным исполнением (PXE), такими как службы развертывания Windows. На следующем рисунке показана типичная реализация PXE. Вот что происходит с PXE:

Вы подаете питание на свой компьютер, который активирует сетевой адаптер, но менее чем через пять секунд POST компьютера завершается, и сетевая карта пытается получить IP-адрес от DHCP, чтобы он мог загрузить загрузочный образ непосредственно с PXE-сервера, что не удается. .

Компьютер пытается получить IP-адрес от DHCP-сервера несколько раз в течение примерно 10 секунд, после чего отказывается и переходит на другое загрузочное устройство, такое как жесткий диск. Прискорбная часть этого процесса заключается в том, что из-за того, что ему не удается получить IP-адрес или подключиться к серверу PXE, вы не можете установить новый образ операционной системы на этот компьютер.

Проблема с этим сценарием заключается в том, что, поскольку STP заставляет компьютер ждать 45 секунд перед пересылкой трафика на порт, время загрузки сети PXE истекло. image0.jpg PortFast - это решение проблемы задержек при подключении клиентских компьютеров к коммутаторам. По умолчанию PortFast отключен. Если PortFast включен на порту, вы фактически берете порт и указываете связующему дереву не реализовывать STP на этом порту.

Это решение неплохое, если к порту подключен только один компьютер - чтобы люди не создавали случайных петель в сети, что может быть пугающе простым делом.

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

Если вы не можете / не желаете включить portfast (или эквивалент) для порта компьютера, я обнаружил, что вы также можете нажать клавишу Pause на клавиатуре в какой-то момент после того, как он напечатает «DHCP ...». Графика ASCII перестанет вращаться. Подождите 30 секунд или что-то еще, нажмите клавишу, чтобы возобновить работу, и тогда вы загрузитесь по сети.

Обычно это одно из двух (или обоих одновременно).

1) Протокол Spanningtree на пограничном порту, к которому подключается сервер, как уже упоминалось выше Райана Райса.

2) Автоматическое согласование между ПК и коммутатором, которое занимает больше времени, чем время, в течение которого загрузчик PXE готов ждать адреса.

Если у вас нет контроля над переключателем, лучшим вариантом обычно является загрузка сервера в Bios. Подождите минуту или около того, чтобы переключатель установился, а затем оставьте BIOS для продолжения загрузки.
Нажатие кнопки Pause / ScrollLock на клавиатуре в начале загрузки (до того, как PXE запустит попытку загрузки) может достичь того же результата.
Оба сценария, конечно, подразумевают, что вы можете подключить к устройству клавиатуру и монитор.

Я обычно обхожу требование portfast, заставляя хосты выполнять расширенную проверку памяти в BIOS (не уверен в Cisco, но HP и IBM разрешают эту настройку) к тому времени, когда хост загружается в PXE, все может пересылать. Системы UEFI также, похоже, замедляют процесс загрузки. Я не говорю, что опция portfast не сработает, но иногда это сложно продать сетевым типам «вот как мы делаем». Это работало всегда и везде, где я это пробовал, без вмешательства сети.

У меня была такая же проблема после того, как мой сервер WDS и коммутатор получили сбой питания. Я обнаружил, что настройка DNS в настройке Server \ Options была NULL, поэтому мне пришлось указать настройку DNS, я также проверил другие настройки параметров сервера, чтобы увидеть, были ли они обнулены.

Используя MAAS 1.7.6, вы должны щелкнуть по Clusers, затем по имени кластера, а затем отредактировать интерфейс. Затем в разделе «Управление» вы можете добавить DHCP, DNS и подробные сведения о DHCP. Сохраните интерфейс. Убедитесь, что процесс dhcpd отображается в вашем списке процессов.