web-dev-qa-db-ja.com

PXEブートはDHCP経由でIPアドレスを取得できませんが、OSのブート時にDHCPは機能します

Cisco UCS C240サーバーをPXEブートしてネットワーク経由で新しいOSをインストールしようとしていますが、ブート中に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)でマシンを起動し、そのネットワークインターフェイスを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と同じネットワークインターフェイスを使用しています。少なくとも、PXEブート中に報告されるMACアドレスは、Windowsの起動時にDHCP経由でIPを取得するMACアドレスと同じです。

3
Lorin Hochstein

Portfast(またはその欠如)が原因であることがわかりました。 DHCPクライアントとサーバー間のポートでPortFastを有効にすると、問題が解決しました。

この問題は、Windows展開サービスなどのプリブート実行(PXE)デバイスで発生することもあります。次の図は、一般的なPXE実装を示しています。これはPXEで何が起こるかです:

コンピューターに電源を投入すると、NICがアクティブになりますが、5秒未満で、コンピューターのPOSTが終了し、NICがIPアドレスの取得を試みますDHCPから、ブートイメージをPXEサーバーから直接ロードできますが、失敗します。

コンピューターは、約10秒以内にDHCPサーバーからIPアドレスを数回取得しようとします。その後、あきらめて、ハードドライブなどの別のブートデバイスに移動します。このプロセスの残念な部分は、IPアドレスの取得またはPXEサーバーとの接続に失敗したため、そのコンピューターに新しいオペレーティングシステムイメージをインストールできないことです。

このシナリオの問題は、STPはポートでトラフィックを転送する前にコンピュータを45秒待機させるため、PXEネットワークブートがタイムアウトしたことです。image0.jpgPortFastがこの問題の解決策です。クライアントコンピュータがスイッチに接続しているときの遅延の割合。PortFastはデフォルトでは有効になっていません。PortFastがポートで有効になっていると、ポートを効果的に使用して、そのポートにSTP=を実装しないようにスパニングツリーに指示します。

このソリューションは、ポートに1台のコンピューターしか接続されていなくても問題ありません。そのため、ネットワーク上で偶発的なループが発生することはなく、驚くほど簡単に実行できます。

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

4
Ryan Ries

コンピューターのポートに対してPortFast(または同等の機能)をオンにすることができない/望まない場合は、「DHCP ...」と表示された後のある時点で、キーボードのPauseキーを押すこともできます。 ASCIIグラフィックは回転を停止します。30秒または必要なものを待ち、キーを押して一時停止を解除すると、ネットワークブートが正常に行われます。

2
Stingray

通常、これは2つのうちの1つ(または両方同時に)です。

1)前述のRyan Riesと同様に、サーバーが接続するEdgeポートのSpanningtreeプロトコル。

2)PXEブートローダーがアドレスを待つ用意がある時間よりも時間がかかる、PCとスイッチ間のオートネゴシエーション。

スイッチを制御できない場合は、通常、サーバーをBIOSで起動するのが最善の方法です。 1分ほど待ってスイッチが落ち着くまで待ってから、BIOSをそのままにして起動を続けます。
起動の早い段階(PXEが起動を開始する前)でキーボードの[一時停止/スクロールロック]ボタンを押すと、同じ結果が得られます。
もちろん、どちらのシナリオでも、キーボードとモニターをデバイスに接続できることを意味します。

1
Tonny

WDSサーバーとスイッチに電源が落ちた後も、同様の問題が発生しました。 Server\OptionsセットアップのDNS設定がNULLであることがわかったので、DNS設定を配置する必要があり、他のサーバーオプション設定もnullになっていないかどうかを確認しました。

0
E'Frustrated'S

ホストがPXEから起動するまでに、ホストがBIOSで拡張メモリチェックを実行することで(Ciscoについては不明ですが、HPとIBMはこの設定を許可しています)、通常はPortFast要件をバイパスし、すべてが転送できるようにします。 UEFIシステムもブートプロセスを遅くするようです。 PortFastオプションが機能しないと言っているわけではありませんが、「それが私たちのやり方」のネットワークタイプへの売り込みが難しい場合があります。これは、ネットワークを介することなく、いつでもどこでも試してみました。

0
Jim B