3.3. Satellite で DHCP の問題をトラブルシューティングする手順

Satellite は内部または外部の DHCP Capsule で ISC DHCP サーバーを管理し、DHCP 予約およびリースを表示、作成、削除できます。Satellite は、DHCP の予約およびリースを一覧表示、作成、削除することができます。ただし、時折発生する可能性のある問題が多数あります。

同期していない DHCP レコード

DHCP のオーケストレーション中にエラーが発生した場合は、Satellite データベースと DHCP サーバーの DHCP レコードが一致しない場合があります。これを修正するには、Satellite データベースから不足している DHCP レコードを DHCP サーバーに追加してから、以下の手順に従って DHCP サーバーから不要なレコードを削除する必要があります。

  1. DHCP サーバーに追加予定の DHCP レコードをプレビューするには、以下のコマンドを実行します。

    # foreman-rake orchestration:dhcp:add_missing subnet_name=NAME
  2. 前の手順のプレビューの変更で問題がない場合は、上記のコマンドに perform=1 引数を指定して適用します。

    # foreman-rake orchestration:dhcp:add_missing subnet_name=NAME perform=1
  3. Satellite と DHCP サーバーの DHCP レコードが同期されている状態を維持するには、DHCP サーバーから不要な DHCP レコードを削除します。Satellite は、すべての管理対象 DHCP サーバーにサードパーティーレコードが含まれていないことを前提とします。そのため、この手順では、想定外のレコードを削除する場合があります。DHCP サーバーから削除されるレコードをプレビューするには、以下のコマンドを入力します。

    # foreman-rake orchestration:dhcp:remove_offending subnet_name=NAME
  4. 前の手順のプレビューの変更で問題がない場合は、上記のコマンドに perform=1 引数を指定して適用します。

    # foreman-rake orchestration:dhcp:remove_offending subnet_name=NAME perform=1

PXE ローダーオプションの変更

PXE のローダーオプションが既存のホスト用に変更された場合には、DHCP の競合が発生します。この回避策として、DHCP エントリーを上書きしてください。

DHCP ファイルでのの不正なパーミッション

オペレーティングシステムを更新すると、dhcpd パッケージが更新される場合があります。これが原因で、重要なディレクトリーやファイルのパーミッションがリセットされて、DHCP Capsule が必要な情報を読み取ることができなってしまいます。

詳細は、Red Hat ナレッジベースの DHCP error while provisioning host from Satellite server Error ERF12-6899 ProxyAPI::ProxyException: Unable to set DHCP entry RestClient::ResourceNotFound 404 Resource Not Found を参照してください。

DHCP Capsule エントリーの変更

Satellite は、DHCP Capsule セットが含まれるサブネットに割り当てられたホストの DHCP レコードのみを管理します。ホストを作成して、DHCP Capsule を消去または変更した場合に、ホストを削除しようとすると、削除のアクションに失敗します。

DHCP Capsule を設定せずにホストを作成してから DHCP Capsule を設定しようとすると、DHCP の競合が発生します。

dhcpd.leases ファイルで削除済みのホストエントリー

DHCP リースに対する変更は、dhcpd.leases ファイルの最後に追加されます。エントリーがこのファイルに追加されるので、dhcpd.leases ファイルに、同時に同じリースのエントリーが 2 つ以上存在する可能性があります。同じリースのエントリーが 2 つ以上ある場合には、ファイルの最後のエントリーが優先されます。リースファイルのグループ、サブグループ、ホストの宣言も、同じ方法で処理されます。リースが削除されると、{ deleted; } が宣言に追加されます。