gethostbyname() が誤ったクラスタ仮想 IP アドレスを返す

文書翻訳 文書翻訳
文書番号: 257577 - 対象製品
この記事は、以前は次の ID で公開されていました: JP257577
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

現象

アプリケーションが gethostbyname 関数を使用している場合、返された IP アドレスの一覧に、クラスタ サービスによって作成された仮想 IP アドレスが含まれないことがあります。または、この一覧に、現在このノードで保持されていない IP アドレスが表示されることがあります。

原因

クラスタ サービスが仮想 IP アドレスの追加または削除を実行するときに、TCP/IP プロトコルが、IP アドレスを返すキャッシュを更新しません。

状況

Windows 2000

この問題を解決するためのモジュールは、Windows 2000 日本語版 Service Pack 2 以降に含まれております。
Windows 2000 日本語版の最新 Service Pack については、以下 Web サイトから入手できます。
http://www.microsoft.com/japan/windows2000/downloads/servicepacks/sp4/default.asp

詳細

Windows NT 4.0 では、gethostbyname (ローカル ノード名) により、クラスタ仮想 IP アドレスを含め、サーバー上でインスタンス化されたすべての IP アドレスを含む一覧が返されました。Windows 2000 では、同じ動作により、通常は、永久にサーバーに割り当てられている IP アドレスだけが返されます。しかし、Windows NT 4.0 と同様、一覧全体が返されることもあります。

このように動作が異なるのは、DNS リゾルバ サービスの実装による副作用のためです。リゾルバは、起動時にローカル IP アドレスの一覧をキャッシュに入れます。ローカル ノード名を解決するよう求められた場合、リゾルバは、DNS サーバーに問い合わせを実行することなく、キャッシュにある一覧を返します。ここで問題となるのは、リゾルバが、TCP スタックからの PNP アドレス変更通知をリッスンせず、DHCP クライアントからこれらの通知を受け取ることです。リゾルバは、DHCP から変更通知を受け取ったときに、TCP スタックに問い合わせることにより、ローカル IP アドレスのキャッシュされた一覧を更新します。この結果、クラスタにより、新しいアドレスのインスタントが生成された場合、それに続いて DHCP アドレスの変更が発生しない限り、リゾルバはその新しいアドレスを認識できません。同じことは、クラスタのアドレスが削除された場合にも当てはまります。DHCP アドレスの変更はほとんど発生しないため、gethostbyname は、ローカル ノード名を解決するときに、通常はクラスタ IP アドレスを除外します。

Windows 2000 では、MSMQ は、クラスタのアクティブ/アクティブ シナリオで新しい動作に依存するようになりましたが、修正プログラムの適用によりこの問題を解決できます。MSMP は、クライアント/サーバーの通信に RPC を使用します。サーバー プロセスの起動時に、RPC は、gethostbyname を使って、リッスンすべき IP アドレスの一覧を決定します。そのアクティブ/アクティブ構成で、1 つの MSMQ サーバー プロセスがローカル ノード名に関連付けられ、ほかのサーバー プロセスはクラスタ仮想サーバーに関連付けられます。gethostbyname がローカル ノード名に関連付けられたプロセスに仮想サーバーの IP アドレスを返した場合、両方のプロセスがそのアドレスをリッスンします。その結果、仮想サーバー プロセスに接続しようとしているクライアントが、間違って、ローカル ノードのプロセスに接続される場合があります。このように MSMQ は、クラスタ仮想 IP アドレスが通常は、ローカル ノード名の解決時に gethostbyname によって返されることはないという事実に依存しています。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 257577 (最終更新日 2001-02-22) をもとに作成したものです。

プロパティ

文書番号: 257577 - 最終更新日: 2014年2月3日 - リビジョン: 3.1
この資料は以下の製品について記述したものです。
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
キーワード:?
kbnosurvey kbarchive kbhotfixserver kbbug kbfix KB257577
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com