Dynamic Host Configuration Protocol(DHCP)サーバが実行されている場合に、いくつかのリースが使用不可能として表示される場合があります。これにはいくつかの理由があり、ほとんどの場合は DHCP のログに明確に記されています。
Ping before offer がイネーブルになっている.
DHCPサーバは、DHCPクライアントからDHCPDECLINEメッセージを受信し、そのクライアントがリースしたDHCPクライアントは適切なIPアドレスであると考えました。
Cisco Network Registrar(CNR)DHCP サーバが他の DHCP 宛のメッセージを参照している.
手っ取り早い解決策は、リースを強制的に使用可能にすることです。リースが使用不能としてマークされた理由を調べる必要があるため、これは推奨されません。CNR ログのディレクトリを参照して、DHCP ログを探してください。このサーバによって、IP アドレスが使用不可とマークされる理由が明確になります。
このドキュメントの読者は次のトピックについての専門知識を有している必要があります。
DHCP の動作の仕組み
CNR の コマンドライン インターフェイス(nrcmd)
CNR の GUI ユーザ インターフェイス
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
Cisco Network Registrar 5.0.X
Windows 2000 および Solaris 7
すべてのCNRバージョンとプラットフォーム
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ドキュメント表記の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
IP アドレスをクライアントに割り当てる前に、DHCP サーバが Internet Control Message Protocol(ICMP; インターネット制御メッセージ プロトコル)のエコー メッセージ機能(ping ユーティリティ)を使用して、あるアドレスに対する応答があるかどうかを判断できるようにすることができます。CNR サーバがこの ping に対する応答を受け取ると、DHCP サーバはこのアドレスを使用不可能としてマークし、クライアントには別の IP アドレスを提示します。ping を使用すると、2 つのクライアントが同じ IP アドレスを使用しないようにすることができます。CNRサーバでオファーの前にPingを有効にするには、『DHCPスコープとリースの設定』の「アドレスを提供する前にホストにpingを実行する」セクションを参照してください。
ping が応答される原因として、クライアントに IP アドレスがスタティックに設定されていることか、中間デバイス(ルータやスイッチ)によって、これらのデバイスが担当するネットワーク上のアドレス宛の ping に対して不適切な応答が行われていることが考えられます。
これらのリースを使用可能にするには、『リースの強制的な使用』を参照してください。
DHCPサーバがリースしたクライアントからDHCPDECLINEメッセージを受信した場合は、IPアドレスが使用不可とマークされることがあります。
これは、一部のクライアントが自身のローカルな LAN セグメント上で、その IP アドレスに対して Address Resolution Protocol(ARP; アドレス解決プロトコル)を送信していることが原因で発生します。応答がある場合、DHCPクライアントはIPアドレスをDHCPDECLINEでDHCPサーバに返し、次に別のDHCPDISCOVER操作を実行して、新しいIPアドレスを取得します。この場合は ping before offer の場合と同様に、クライアントからその IP アドレスを使用しているアクティブなクライアントがあると示されます。これは、おそらくスタティックに設定されているものと思われます。これにより、DHCP サーバはその IP アドレスを使用不可であるとマークします。
このことは、Non-Unique Client Identifiers を設定しているクライアントによって、頻繁に引き起こされます。DHCP サーバはこのフィールドをクライアントの識別に使用しているため、アドレス割り当ての重複が発生することがあります。この解決策は、クライアント識別子として mac-address-only を割り当てることです。
CNRでは、クライアントを区別する次のいずれかの方法を設定できます。
クライアント ID による識別。クライアント ID は通常はクライアントによって指定されます。ただし、クライアントIDがクライアントから提供されない場合、DHCPサーバは、Hardware Type = 1の先頭に付加された一意のMACアドレスの再フォーマットを使用して一意のIDを作成します(これはRFCで指定されているデフォルト設定です)。
MAC アドレスだけによる識別。この機能はサーバ上でデフォルトで無効になっています。(このオブジェクトを実際の MAC アドレスから識別するために、MAC アドレスのチェックサムが追加されています)。 これを有効にするには、次のコマンドを使用します。
nrcmd> dhcp enable Mac-address-only
この設定により、DHCPサーバはクライアントのMACアドレスを唯一のクライアントIDとして使用し、クライアントから提供されたクライアントIDを無視します。この引数を使用すると、DHCPサーバを使用するすべてのクライアントを特定する単一の一貫した方法を使用できます。
注:この機能を設定すると、サーバ上でクライアントが設定されていると見なされる前に、この機能を設定する必要があります。これは、Mac-address-onlyを持つ新しいクライアントIDがデフォルトの合成クライアントIDとは異なるためです。このオプションが実稼働ネットワークで有効になっている場合、更新プロセス中に既存のクライアントはそれ自体と見なされず、確認応答されず(NAK)、強制的に新しいリースになります。これによって、現在リースされていると見なされる(使用中の)複数のリースは、期限が切れるまで確保されます。したがって、この機能をイネーブルにするサイクルの間、ネットワーク上には 2 倍の数のアドレスが必要になります。
これらのリースを使用可能にするには、「リースを強制的に使用可能にする」の説明に従ってください。
DHCPサーバは、このリースを別のDHCPサーバが配布していることに気付くと、IPアドレスを使用不可としてマークします。
すべてのDHCPREQUESTメッセージは、最初のDISCOVER/OFFER/REQUEST/ACKサイクルの一部としてブロードキャストされます。DHCP サーバは他の DHCP サーバ宛のメッセージを参照でき、パケット内の server-id オプションの内容からメッセージの宛先を識別できます。
CNR DHCP サーバが他の DHCP サーバ宛のメッセージを参照したときに、そのメッセージが参照している IP アドレスがその DHCP サーバ自身によって制御されているものであった場合には、その IP アドレスを使用不可としてマークします。このDHCPサーバはアドレス空間を制御するように設定されていますが、同じアドレス空間を管理する別のDHCPに気付いたため、他のサーバの設定を誤る必要があります。
この動作は、ある制御用 DHCP サーバから、IP アドレスが異なる別のサーバへ移行する場合(かつ、この別のサーバがこれらのアドレスに対して認知および認可された DHCP フェールオーバー パートナーとして設定されていない場合)に見られます。 CNR 5.0.x以降では、この動作を無効にして、次のコマンドを使用して、アドレス空間を別の制御DHCPサーバに容易に移行できます。
nrcmd> dhcp set ignore-requests-for-other-servers=true
これらのリースを使用可能にするには、「リースを強制的に使用可能にする」の説明に従ってください。
現在あるホストによって確保されているリースを、強制的に使用可能にすることができます。強制的に使用可能にする前に、ユーザにリースをリリースするよう要求するか、許可します。この変更を有効にするために、DHCP サーバをリロードする必要はありません。
手順は以下のとおりです。
Scope Properties ダイアログ ボックスの Leases タブから、強制的に使用可能にするリースを選択します。
そのアドレスをダブルクリックして、Lease Properties ダイアログ ボックスを開きます。
[使用可能な力]をクリックします。
[OK] をクリックします。
lease <ip address> force-available コマンドを使用して、現在確保されているリースを強制的に使用可能にします。
nrcmd> lease 192.168.1.21 force-available
また、scope <scope name> clearUnavailable コマンドを使用すると、あるスコープ内の使用不可能なリースをすべて使用可能にすることができます。
nrcmd> scope scope1 clearUnavailable
注: scope <scope name> clearUnavailableコマンドは、CNRバージョン5.x以降でのみ使用できます。
[DHCP] > [Scopes]に移動します。
リースを含むスコープの場合は、リースアイコン(眼鏡)をクリックします。
リースのリストで、使用可能にするリースをクリックします。
ウィンドウにリースのプロパティが表示されたら、[Force Available]をクリックします。
リースがいつ使用不能になったかを確認します。
リースがいつ使用不可能になったかを判別するには、次のコマンドを使用します。
nrcmd> lease ip-address get start-time-of-state
リースの非アクティブ化:
リースからクライアントを移動するには、リースを非アクティブ化することを選択できます。リースが使用可能な場合は、CNRがリースをクライアントに渡さないように、リースを非アクティブにします。リースがアクティブな場合(クライアントによって保持されている場合)、リースを非アクティブにします。これにより、クライアントはリースを更新して別のクライアントにリリースできなくなります。リースを非アクティブ化できるのは、サーバが動作している場合だけです。CNRは、リースをすぐに非アクティブにします。DHCP サーバをリロードする必要はありません。リースが使用可能な場合は、リースを非アクティブ化すると使用不能になります。リースがアクティブである場合は、更新または初期リースの目的では使用不可能になります。
使用可能なアドレスの総数:
スコープ範囲内のアドレスの総数は、次の合計と等しくなります。フリー + 動的にリース済み + 予約済み +使用不可 + 無効 + その他の使用可能なもの