マルチホーム環境の Windows の名前解決 (1)

マルチホーム環境の Windows で名前解決を行うと予期しない結果になる事があります。
ここでは、その解決方法を記載します。
なお、Windows Server 2012 から仕様が変わっています。
AD ドメインに参加した場合のことは「マルチホーム環境の Windows の名前解決 (2)」に記載します。

update:2015/05/24

マルチホーム環境の Windows とは?

マルチホームとは2つ以上の LAN アダプタ (NIC) がある Windows 環境を指します。
例えば、
IP セグメント1(運用) = 172.16.1.xxx
IP セグメント2(管理) = 192.162.2.xxx
のように、複数のセグメントが存在しそれらに Windows が接続する場合がマルチホーム環境と呼ばれます。

現象

マルチホーム環境の Windows に対してホスト名を指定して ping コマンドを実行すると名前解決された Ping 先 IP アドレスが予期せぬ宛先となってしまう。

なお、ping コマンド実行時にホスト名に ping すると IPv6 で応答されます。-4 を付けると IPv4 で応答します。

ping -4 “ホスト名”

対策

 

OS 原因 対処方法/情報サイト
Windows Server 2012 2012から複数の NIC がある場合、名前解決で 返される IP アドレスは、NIC のインターフェイス メトリック値の小さい側が優先される。これは仕様変更。
メトリック値の変更方法
  1. Windows ロゴ キーを押しながら R キーを押す。
  2. [ファイル名を指定して実行] 表示。
  3. [ncpa.cpl] と入力、[OK] クリック。
  4. [ネットワーク接続] 表示。
  5. 変更するネットワーク アダプタを選択し右クリック。
  6. [プロパティ] クリック。
  7. [インターネット プロトコル バージョン 4 (TCP/IPv4)] クリック。
  8. [プロパティ] クリック。
  9. [全般] タブで、[詳細設定] クリック。
  10. [IP 設定] タブで、[自動メトリック] チェック ボックスをオフ。
  11. [インターフェイス メトリック] フィールドに数値を入力。

これを、NIC ごとに実施。優先させる NIC のメトリックを小さくする。
参考:Windows Server 2012 ではサポート技術情報 981953 の対処策が使用できません。

Windows Server 2008, 2008 R2 方法は 2 つ
・バインドの順序変更。
・hosts レコード追記。
バインド順序変更方法
  1. [スタート] > [コントロール パネル] の順にクリック。
  2. [ネットワークとインターネット]  > [ネットワークと共有センター] の順にクリック。
  3. オペレーティング ・ システムによって、ネットワーク アダプターの設定を変更。
    Windows Server 2008 : [アダプターの設定の管理] をクリック。
    Windows Server 2008 R2: [アダプターの設定の変更] をクリック。
  4. [整理] をクリック、[レイアウト] をポイント、[メニュー バー] をクリック。
  5. [詳細設定] メニューの [詳細設定] をクリック。
  6. [接続] ウィンドウで、優先させるネットワーク アダプターを選択。
  7. ネットワーク アダプターをリストの一番上に移動。
  8. [OK]をクリック。
hosts レコード追記方法
  1. [スタート] > [すべてのプログラム] > [アクセサリ] の順にクリック。
  2. [メモ帳] を右クリックし、[管理者として実行] をクリック。
  3. UAC管理者のパスワードまたは確認に応じます。
  4. コマンド プロンプトで cd %windir%\system32\drivers\etc を実行し移動。
  5. コマンド プロンプトで notepad hosts と入力し実行。
  6. 手順 6 で開いた hosts ファイルの下部にエントリを追加、IP アドレスとホスト名の間は半角スペースまたはtab。(例)10.0.0.1  Server01
  7. [メモ帳] を保存して閉じる。
  8. キャッシュされている情報をクリヤし hosts ファイルをリロードするため、コマンド プロンプトで ipconfig  /flushdns コマンドを実行。(*1)

Windows Server 2008 または Windows Server 2008 R2 では、NetBIOS 名を使用して、サーバーに対して ping を実行すると、無効な IP アドレスが返されます。

(*1)ipconfig のパラメータ
/flushdns :DNS キャッシュを消去
/displaydns :DNS キャシュのエントリを表示
自動メトリックの選択を解除し、メトリック値を設定する。
メトリック
優先となる NIC のバインド順を上位に設定する。
バインド順

注意

ネットワーク アダプターに複数のアドレスがある場合に IPv6 アドレスが優先します。

参考

  1. 「マルチホーム環境にて API により IPv4 アドレスが返される順番について」
  2. 文書番号:2854670「Windows Server 2012 ではサポート技術情報 981953 の対処策が使用できません。」
  3. 文書番号:981953「Windows Server 2008 または Windows Server 2008 R2 では、NetBIOS 名を使用して、サーバーに対して ping を実行すると、無効な IP アドレスが返されます。」

コメントを残す