2012-06-13 23:34:40 +0000 2012-06-13 23:34:40 +0000
33
33

Windows 7でのIPv4とIPv6の優先順位

私はハリケーン電気のトンネルを通ってIPv6接続しています。今年のIPv6の日から、多くのサービス(google.com、facebook.comなど)がメインドメインでIPv6を有効化しました。私のWindowsマシンでは、IPv4よりもIPv6が優先されています。これは、Googleにアクセスするたびに、すべてのトラフィックが私のトンネルを通ってHurricane Electricに行くことを意味し、そのためにレイテンシが100%以上高くなっていることを意味します。

C:\> ping www.google.com

Pinging www.l.google.com [2001:4860:8005::68] with 32 bytes of data:
Reply from 2001:4860:8005::68: time=85ms
Reply from 2001:4860:8005::68: time=84ms
Reply from 2001:4860:8005::68: time=112ms
Reply from 2001:4860:8005::68: time=86ms

Ping statistics for 2001:4860:8005::68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 84ms, Maximum = 112ms, Average = 91ms

C:\> ping -4 www.google.com

Pinging www.l.google.com [173.194.79.103] with 32 bytes of data:
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=55ms TTL=46
Reply from 173.194.79.103: bytes=32 time=29ms TTL=46

Ping statistics for 173.194.79.103:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 28ms, Maximum = 55ms, Average = 35ms

**質問です。特定のドメイン名でIPv4とIPv6の両方のレコードが利用可能な場合に、Windows 7で常にIPv4を優先するようにするにはどうすればよいでしょうか?

回答 (5)

45
45
45
2012-06-14 18:15:03 +0000

解決策 ##1: IPv6よりもIPv4アドレスを優先するプレフィックスポリシーを追加する

プレフィックスポリシーテーブルはルーティングテーブルと似ており、接続を行う際にどのIPアドレスを優先するかを決定します。プレフィックスポリシーの優先度が高いほど「precedence」の値が高くなり、ルーティングテーブルの「cost」の値とは正反対になることに注意してください。

Windows のデフォルトのプレフィックスポリシーテーブル。

C:\> netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence Label Prefix
---------- ----- --------------------------------
        50 0 ::1/128
        40 1 ::/0
        30 2 2002::/16
        20 3 ::/96
        10 4 ::ffff:0:0/96
         5 5 2001::/32

IPv4アドレス(::/0, ::/96)よりもIPv6アドレス(::ffff:0:0/96)の方が優先されることに注意。

ハリケーンエレクトリックのIPv6トンネルがどのIPv4アドレスよりも不利になるようなポリシーを作成することができます** 。

netsh interface ipv6 add prefixpolicy 2001:470::/32 3 6

2001:470::/32 は Hurricane Electric のプレフィックス、3 は Precedence (非常に低い)、6 は Label です。

もっと一般的なプレフィックスを使うこともできましたが、もしISPから直接IPv6接続を取得した場合には、IPv4よりも優先されることを確認したかったのです。

**このソリューションを適用する場合は、私のHurricane Electricのプレフィックスではなく、適切なIPv6プレフィックスを代用する必要があります。結局、Windowsはプレフィックスポリシーテーブルを変更することになります。

  • RegEditを開き、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters に移動 - DisabledComponents DWORDレジストリ値を作成し、その値を20(16進数)に設定します。このレジストリキーの詳細については、 Microsoft KB 929852 を参照してください。
  • 再起動。
23
23
23
2014-05-15 12:13:20 +0000

モノスペースのテキストや表に変な数字や記号が入っているのが気になる場合は、MicrosoftのFix-itsというシンプルなインストーラで設定を変更することができます。

これらの修正プログラムは KB 2533454 に記載されており、IPv6 接続が壊れている場合に実行する必要があると説明されています。この修正プログラムを実行するには管理者である必要があります。ダウンロード後、右クリックして「管理者として実行」を選択してください。

7
7
7
2014-05-15 08:58:51 +0000

最も簡単な方法、そしてこれらはいつも見落としがちなほど簡単な方法です…

  1. ネットワークと共有センターを開く。

  2. そこで「アダプタ設定の変更」をクリックします。On the “Menu Bar "の "Advanced "をクリックします。**Organize "しか表示されない場合は、それをクリックして、ドロップダウンから "Layout - Menu Bar”

  3. 前のステップで「詳細設定」をクリックした後、このステップで「詳細設定」をクリックします(画面が開きます)

  4. 表示されるのはアダプタと設定で、現在使用しているアダプタが上半分にハイライト表示され、その下に代表的な内訳が表示されます(そのアダプタのバインディングが表示されているはずです)。リストの中のいずれかのバインディングをハイライトすると、右の矢印が点灯していることに気づくはずです。

  5. プロトコル、サービス、クライアントをアダプタのプロパティにインストールするときと同じことに注意してください。ここでも同様です。つまり、あるアダプタを変更すると、他のアダプタもそれに従います。つまり、例えば、無線アダプタで IPV6 を 4 よりも優先するように選択した場合、LAN アダプタも変更されます。

これは、ネットワーク間でのパケットのルーティングについてあまり深く考えたり、知識を持ちすぎたりすることなく、この特定のタスクを行うための最も簡単な方法だと私は考えています。

2
2
2
2018-10-31 02:38:41 +0000

ショートバージョン

Before September 2012 After September 2012
Precedence Prefix Precedence Prefix       
---------- ------------- ---------- -------------
        50 ::1/128 IPv6 loopback 50 ::1/128 IPv6 loopback
        40 ::/0 Native IPv6 40 ::/0 Native IPv6
        40 fc00::/7 ULAs 35 ::ffff:0:0/96 IPv4
        40 fec0::/10 site-local 30 2002::/16 6to4
        40 3ffe::/16 6bone 5 2001::/32 Teredo
        30 2002::/16 6to4 3 fc00::/7 ULAs
        20 ::/96 IPv4compat 1 fec0::/10 site-local
        10 ::ffff:0:0/96 IPv4 1 3ffe::/16 6bone
         5 2001::/32 Teredo 1 ::/96 IPv4compat

ロングバージョン

RFC6724 は、アドレスの優先順位の変更を定義しています。この変更により、ほぼ全てのケースでIPv6が優先されるアドレスではなくなりました :(

2012年6月に質問されたこの質問は、2012年9月からのRFCによって“修正”されました。お使いのWindowsのバージョンにもよりますが、この新しいポリシーは箱から出して(Windows 8.1)、もしくはアップデート(Windows 8、Windows 7、Windows Vista)で既に提供されている可能性があります。

私たちがここにいるのは、IPv6の使用を**希望しているからです。

元に戻す方法

1つのホストに対して複数のIPアドレスを取得した場合、マシンはどのアドレスを使用するかを決定しなければなりません。ランキングの例は以下のようになります。

  • IPv6ループバック
  • ネイティブIPv6
  • ユニークローカルアドレス(ULA)、例: fdxx::
  • サイトローカル、例: fec0
  • サイトローカル。fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, 例: 2001

お使いのWindowsマシンでは、このランキングはプレフィックスポリシーと呼ばれています。

>netsh int ipv6 show prefixpolicies
Precedence Prefix         
---------- -------------
        50 ::1/128 IPv6 loopback
        40 ::/0 Native IPv6
        40 fc00::/7 ULAs
        40 fec0::/10 site-local
        40 3ffe::/16 6bone
        30 2002::/16 6to4
        20 ::/96 IPv4compat
        10 ::ffff:0:0/96 IPv4
         5 2001::/32 Teredo
Precedence Prefix         
---------- -------------
        50 ::1/128        
        40 ::/0 Native IPv6
        35 ::ffff:0:0/96 IPv4
        30 2002::/16      
         5 2001::/32      
         3 fc00::/7 ULAs
         1 fec0::/10 site-local
         1 3ffe::/16      
         1 ::/96
  1. ネイティブIPv6、ULA、サイトローカル、6one
  2. 6to4
  3. IPv4compat
  4. IPv4
  5. Teredo

あなたがIPv6を展開するための努力をした場合: それはちょうどうまくいった。

新しいプレフィックスポリシー

2012年には RFC6724 によって新しい優先順位が定義されました。 ネイティブ IPv6 3. IPv4 4. 6to4 5. Teredo 6. ULA 7. サイトローカル 8. 6bone 9. IPv6compat

修正方法は?

我々が望むのは、ULAがIPv4よりも優先されるようにIPv6を修正することです。少なくとも、ULA(fc00::/7)の使用をIPv4よりも優先させたい。

Precedence Prefix         
---------- -------------
        50 ::1/128        
        40 ::/0 Native IPv6
        37 fc00::/7 ULAs <---------- from 3 up to 37
        35 ::ffff:0:0/96 IPv4
        30 2002::/16      
         5 2001::/32      
         1 fec0::/10 site-local
         1 3ffe::/16      
         1 ::/96

これは次の再起動まで有効にするだけです。変更を永続的にするには

>netsh interface ipv6 set prefixpolicy prefix=fc00::/7 precedence=37 label=13 store=active

もし私が:

  • /48のULAグローバルプレフィックスを生成し、/64のサブネットIDを選択し、企業内の全てのマシンにULAを展開した場合
  • DNSサーバを更新して、IPv4アドレスに加えてIPv6 ULAアドレスを返すようにした場合

コンピュータができることは、そのアドレスを使用するという礼儀作法があることくらいです。

ボーナスチャット

fc00::/7 - ローカルで生成されたGlobalIDプレフィックス - fd00::/8 - ?

fc00::/8が何に良いのかは誰も決めていないので、ただそこに座っているだけです。

fc のアドレスは以下のように定義されています。

fd fd [40-bit random GlobalID] [16-bit subnet] [64-bits for host assignment]

というわけで、a4d7f6dd66 を暗号化されたランダムな 40 ビットの GlobalID として生成した場合、/48 が得られることになる。

しかし、利用が遅くなったことと、そもそもの価値が怪しいことから、SixXSは2018年にサービスを終了しました。

ボーナスリーディング

0
0
0
2019-03-27 20:53:05 +0000

もっと簡単な方法があります。インターフェイスのメトリック#を変更して優先度を決定しただけです。以前、ネットワークアダプタの優先度を変更するときにこの方法を使ったことがあったのですが(無線NICの優先度が1番、LAN NICの優先度が2番)、TCP/IPv4やTCP/IPv6でも使えることがわかりました。今回は、TCP/IPv4のインタフェースメトリックを自動から5に、TCP/IPv6のインタフェースメトリックを自動から10に変更してみました。メトリックの番号が低いほど優先度が高くなります。その後、PCを再起動します。これで、ホスト名を使ってpingをすると、IPv6ではなくIPv4から返信してくれるようになりました。

ここにもっと詳しい説明があります https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10