IPv6 が IPv4 より優先されてしまう

Anonymous
2015-12-28T12:01:19+00:00

お世話になります。

類似の質問も見ましたが、微妙に内容が異なるため、新規で質問いたします。

■質問内容

内向き DNS サーバーによる名前解決時に IPv6 が IPv4 より優先されてしまう。

IPv4 を優先するにはどうしたらよいでしょうか。

※インターネットへの接続は可能です。

※ネットワーク接続の設定で対象の NIC のプロパティから IPv6 を無効にすると、正常に名前解決がおこなえます。

■状況

以下のように nslookup を実行しても、名前解決ができません。


C:\Users\xxxx>nslookup xxx.xx(※内部ネットワークのみで使用できるドメインを指定します)

サーバー:  UnKnown

Address:  xxxx:xx:xxxx:xxx:xxx:xxxx:xxxx:xxxx(※IPv6 アドレスが表示される)

*** UnKnown が xxxx.xx を見つけられません: Non-existent domain


以下のサイトに、IPv6 のプレフィックスの優先順位を変更することで IPv4 を優先できるということで設定してみました。

参考サイト: http://www.vwnet.jp/Windows/w7/IPv4/IPv4PriorityUP.html


C:\Users\xxxx>netsh interface ipv6 show prefixpolicies

アクティブ状態を照会しています...

優先順位   ラベル  プレフィックス

----------  -----  --------------------------------

        50      0  ::ffff:0:0/96

        40      1  ::1/128

        35      4  ::/0

        30      2  2002::/16

         5      5  2001::/32

         3     13  fc00::/7

         1     12  3ffe::/16

         1      3  ::/96

         1     11  fec0::/10


プレフィックス設定の変更が反映されていることを確認。


C:\Users\xxxx>ping localhost

PC [127.0.0.1]に ping を送信しています 32 バイトのデータ:

127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128

127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128

127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128

127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128

127.0.0.1 の ping 統計:

    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

ラウンド トリップの概算時間 (ミリ秒):

    最小 = 0ms、最大 = 0ms、平均 = 0ms


しかし、この状態でも状況は変わらず、名前解決ができませんでした。

■環境

クライアント OS: Windows 8.1 Pro 64bit

クライアントのネットワーク設定: IPv4 のみ、内部ネットワークに構築した DNS サーバーを参照(それ以外は変更なし)

DNS サーバー: 内向き専用で、IPv6 には非対応

ルーター: NTT光電話ルーター(PR-500KI)

■判明したこと

・IPv6 を無効化することで名前解決ができることから、DNS サーバー側の問題ではない

・IPv6 が優先されてしまうため、IPv4 に設定した内向き DNS サーバーが参照されず、結果として名前解決ができない

・IPv6 のプレフィックス設定の変更は有効になっているのに、なぜか NIC の IPv4 設定が優先されない

■備考

現時点で考えられる回避策は以下のとおりです。

・ネットワーク接続の NIC のプロパティで IPv6 を無効化

・DNS サーバーを IPv6 に対応させる

ただし、上記の方法は極力避けたいと考えています。

あくまで、実現したい内容は「IPv4 と IPv6 がともに有効な状態で、IPv4 を優先して通信をおこなう」ということです。

以上、よろしくお願いいたします。

家庭向け Windows | 以前の Windows バージョン | インターネットと接続

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

10 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2016-01-17T16:57:23+00:00

    IPv6のソースルーティングの話と、名前解決の優先度の話を取り違えています。

    以下のようになっていませんか?

    IPv4側のDNS設定:内向きのDNS

    IPv6側のDNS設定:自動取得

    NTT光電話ルーター(PR-500KI)をお使いということですが、この場合、IPv6が有効でIPv6側のDNS設定が自動設定になっている場合には、そのPCが使うデフォルトのDNSはDHCPv6でPR-500KIから配布されたIPv6アドレスのDNSが最優先で使用されます。内向きのDNSにはタイムアウトや負荷分散等でアクセスするだけになっているはずです。

    気休めですが、念のため、nslookupコマンドを使用する際に、DNSサーバ名をオプション指定してみることをお勧めします。

    nslookup  ホスト名 DNSサーバのIPアドレス

    たぶん、内向きのDNSではなく、PR-500KIのDNS Proxyに問い合わせに行っているはずです。

    あと、Windows 8/8.1のネットワークの仕様は次のようになっています。

    1.Windowsは、30日おきまたは特定のトリガで、Microsoft によりホストされた IPv6のIPアドレスのみを持つ特定のサーバーに対する名前解決と簡単な HTTP GETによるネットワーク接続テストを実行する。

    2.テストにおいて、ホスト名からIPv6のIPアドレスを取得でき、IPv6で実際に接続できるときにはIPv6を優先的に使用する。

    3.テストにおいて、ホスト名からIPv6のIPアドレスを取得できなかったり、IPv6でサーバに接続できなかったりした場合には、IPv4を優先する。

    よって、IPv6のIPアドレスで名前解決ができ、そのアドレスと通信できる場合には、IPv6が優先されるのが仕様になっています。

    確か、MSDN のBlog記事に該当する仕様についての記事があったのですが、記事が削除されたのか、こちらで控えていたURLが無効になっていましたので、ソースは書かないでおきます。

    なお、確かWindows10も同じ仕様だったはずです。

    IPv6で接続できる環境なのに、DNSの応答でIPv4を優先したいのであれば、ルータのDNSキャッシュサーバ機能等でAAAA応答をフィルタするなどの対応が必要になります。ISPによっては、AAAA応答をフィルタしたDNSキャッシュサーバを提供している場合があります。

    IPv6で正常に接続できない環境であるのにDNSのAAAA応答が来ることで問題になるのであれば、IPv6を無効にするしか方法がありません。

    この回答は役に立ちましたか?

    10+ 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2016-01-27T05:06:01+00:00

    「待機中」と表示されているPR-500KIの設定画面は、IPv6 PPPoEの接続設定画面です。

    NTTのフレッツ光系サービスで@Niftyと契約をしていてPR-500KIを使用しており、@niftyの「IPv6接続サービス」でIPv6接続しているのであれば、IPv6 PPPoEではなく、IPv6 IPoEによるIPv6サービスになりますので、IPv6 PPPoEの設定をしてはいけません。この場合、正しく手続きされていれば、IPv4 PPoEの認証設定とPR-500KIの光回線認証だけIPv6でインターネットが使えます。

    よくあるのが、新規にIPv6契約したのであれば、NTTの回線認証でID/アクセスキーが間違っていたことによる不通です。NTT関連の手続きが正常に行われていないと、なかなか開通しないということはあるようです。

    うちは、PR-500KIで@Niftyという同じような環境で通信できていますので、IPv6で通信できないのは手続きや設定の問題でしょう。

    「接続できない => (時間経過)=> 接続される => (時間経過)=> 再び接続できなくなる」の件については、おそらく、IPv6側のDNSの結果がPCのDNS Clientサービスにキャッシュされているか、内向き用のIPv4側のDNSの結果がPCのDNS Clientサービスにキャッシュされているかという2つの状態が交互に繰り返されていることによるものでしょう。

    場合によっては、内向きのDNSを利用するのではなく、\Windows\System32\Drivers\etc\hostsにローカルのホスト名とIPアドレスを登録したほうが、安定するでしょう。

    この回答は役に立ちましたか?

    10+ 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2015-12-29T08:04:37+00:00

    ​RyoKawase さん、こんにちは。

    マイクロソフト コミュニティをご利用いただき、ありがとうございます。

    IPv6 が優先されてしまうということなのですね。

    この現象についてお調べしたところ、この問題を解消するための修正プログラムがあるようなので、次のサポート ページの Fix it を実施するとよいかもしれません。

    世界 IPv6 が (2012 年 6 月 6 日) を起動した後はインターネット接続の問題を解決します。

    ※ [ダウンロード] のアイコンが 2 つありますが、上が Fix it 50410 (IPv4 を優先する) で、下が Fix it 50411 (IPv6 を優先) です。

    もし、手動で行うということであれば、 「netsh interface ipv6 show prefixpolicies」 でポリシーテーブルの設定をリセットして再起動するとよいです。

    リセット後に、 RyoKawase さんが参考にしていただいた 【 こちらのページ 】 で紹介されているコマンドを実行して、ポリシーテーブルの優先順位を変更するとよいと思います。

    ※ ページから引用

    netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 50 0

    netsh interface ipv6 set prefixpolicy ::1/128 40 1

    netsh interface ipv6 set prefixpolicy ::/0 30 2

    netsh interface ipv6 set prefixpolicy 2002::/16 20 3

    netsh interface ipv6 set prefixpolicy ::/96 10 4

    返信お待ちしています。

    この回答は役に立ちましたか?

    4 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  4. Anonymous
    2015-12-30T07:11:28+00:00

    RyoKawase さん

    Windows8.1を持っていないので、画面説明できませんが、「ネットワーク接続」-「詳細設定」タブに「アダプターとバインド」という画面があります。

    そこで、優先順位を選べませんか?

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  5. Anonymous
    2015-12-29T19:25:30+00:00

    大沢孝太郎さん、ご返信ありがとうございます。

    質問文を一部お読みいただいていないようです。

    長文になってしまったためかと思いますので、再度お伝えいたします。

    「netsh interface ipv6 show prefixpolicies」はすでに実施済みです。

    以下がその結果で、すでに IPv4 が優先になっています。

    優先順位   ラベル  プレフィックス

    ----------  -----  --------------------------------

            50      0  ::ffff:0:0/96

            40      1  ::1/128

            35      4  ::/0

            30      2  2002::/16

             5      5  2001::/32

             3     13  fc00::/7

             1     12  3ffe::/16

             1      3  ::/96

             1     11  fec0::/10

    初回の質問にも記載しましたが、「ping localhost」を実行した際には、IPv4 である「127.0.0.1」に ping が送信されます。

    上記の結果になるにもかかわらず、DNS サーバーを参照する際に IPv6 が優先されてしまいます。

    また、ご紹介いただいた以下のサポートページもすでに見ていたのですが、これは「netsh interface ipv6 show prefixpolicies」を手動でおこなうのと何か違うのでしょうか?

    さらに、このページの内容は Windows 8.1 を対象にしていないようなのですが、実施しても問題ないものなのでしょうか?

    ■世界 IPv6 が (2012 年 6 月 6 日) を起動した後はインターネット接続の問題を解決します。

    以上、よろしくお願いいたします。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません