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


31

ハリケーンエレクトリックトンネルを介したIPv6接続があります。今年のIPv6以来、多くのサービス(google.com、facebook.comなど)がメインドメインでIPv6を有効にしました。私のWindowsマシンでは、IPv4よりもIPv6が優先されます。これは、Googleにアクセスするたびに、すべてのトラフィックがハリケーンエレクトリックへのトンネルを通過するため、待ち時間が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を優先させるにはどうすればよいですか?


4
このための適切な方法は、ほとんどのオペレーティングシステムで、プレフィックスポリシーを構成することです– Windowsでは、を介してnetsh interface ipv6 show prefixpolicy。明日、より詳細な回答を投稿するかもしれません。
悲しみ

1
@grawity prefixpoliciesではなく、する必要がありprefixpolicyます。
ピーターウッド14

@PeterWoodは、XPとは異なる場合があります。
grawity

1
@grawityはい、私はWindows 7 netsh interface ipv6 showを使用していますが、呼び出しにはを含む使用法show prefixpolicies - Shows prefix policy entriesがありprefixpolicyますが、noがあります。乾杯。
ピーターウッド14

回答:


40

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

プレフィックスポリシーテーブルはルーティングテーブルに似ており、接続時に優先されるIPアドレスを決定します。プレフィックスポリシーの優先順位が高いと、ルーティングテーブルの「コスト」値とは正反対の「優先順位」値が大きくなることに注意してください。

デフォルトの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アドレス(:: / 96、:: ffff:0:0/96)よりもIPv6アドレス(:: / 0)が優先されることに注意してください。

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

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

2001:470 :: / 32はハリケーンエレクトリックのプレフィックス、3は優先順位(非常に低い)、6はラベルです。

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

このソリューションを採用する場合、ハリケーンエレクトリックの代わりに適切なIPv6プレフィックスを使用する必要があります。

解決策2:レジストリを微調整して、Windowsが常にIPv6よりもIPv4を優先するようにする

このソリューションはより一般的ですが、より侵襲的であり、標準に準拠していません。最終的に、Windowsは引き続きプレフィックスポリシーテーブルを変更します。

  • RegEditを開き、ナビゲートします HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • DisabledComponentsDWORDレジストリ値を作成し、その値を20(16進数)に設定します。このレジストリキーの詳細については、特にシステムに既に存在する場合は、Microsoft KB 929852を参照DisabledComponentsしてください。
  • リブート。

ソリューション#2のPowerShellコマンド: Get-ItemProperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" | select -exp DisabledComponents Set-Itemproperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" -value 32
Sergii Volchkov

この設定を接続ごとに設定することはできません(たとえば、バグのあるルーターがあります)が、グローバルまたはアダプターごとにしか設定できません。
mirh

23

奇妙な数字や記号を含む固定幅のテキストや表が怖い場合は、Microsoft Fix-itsを使用してこれを行うことができます。MicrosoftFix-itsは、構成を変更するMicrosoftのシンプルなインストーラーです。

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


これを有効/無効にするためのプッシュボタン方式の+1は本当に素晴らしいです、乾杯
ashes999

7

最も単純な方法であり、これらは常に非常に単純であるため、それらを見落とします...

  1. オープンネットワークと共有センター。

  2. [アダプタ設定の変更]をクリックします

  3. [メニューバー]で[詳細設定]をクリックします。**注.. [整理]のみが表示されている場合は、それをクリックして、ドロップダウンから[レイアウト-メニューバー]を選択します。

  4. 前の手順で[詳細設定]をクリックした後、この手順で[詳細設定]をクリックします(画面にボックスが開きます)

  5. 表示されるのはアダプターと設定で、現在使用しているアダプターは既に上半分で強調表示され、その代表的な内訳が下に表示されます(そのアダプターのバインディングが表示されます)。リスト内のバインディングのいずれかを強調表示すると、右側の矢印が点灯し、それらの矢印を使用してバインディングの順序を好みに変更し、下から[ok]を選択する必要があります。

  6. アダプタプロパティにプロトコル、サービス、またはクライアントをインストールするときと同様に注意してください。ここでも同じです。つまり、1つのアダプターを変更し、残りはそれに合わせます。したがって、たとえば、ワイヤレスアダプターでIPV6が4よりも優先されるように選択すると、LANアダプターも変更されます。

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


2
そこに行くと、両方のカテゴリでIPv4がすでに最初にリストされています。ただし、ネットワークアダプターのプロパティに移動すると、IPv6が最初に表示されます。
kojow7 16

1

短縮版

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を使用します。その変更を元に戻したいのです。

戻す方法

単一のホストに対して複数のIPアドレスを取得する場合、マシンは使用するアドレスを決定する必要があります。ランキングの例は次のとおりです。

  • IPv6ループバック
  • ネイティブIPv6
  • 一意のローカルアドレス(ULA)、たとえばfdxx ::
  • サイトローカル、例えばfec0
  • 6ボーン
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo、たとえば2001

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

プレフィックスポリシー

以下を実行して、コンピューターのプレフィックスポリシーを表示できます。

>netsh int ipv6 show prefixpolicies

昔(RFC 3484で定義されていた)、プレフィックスポリシーは次のとおりでした。

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

したがって、ほとんど常に IPv6 使用することがわかります(はい!):

  1. IPv6ループバック
  2. ネイティブIPv6、ULA、サイトローカル、6one
  3. 6to4
  4. IPv4compat
  5. IPv4
  6. テレド

IPv6を展開するための取り組みを行った場合、それは機能しました。

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

2012年には、RFC6724によって新しい優先順位が定義されました。現在、プレフィックスポリシーは、IPv6を使用しないことをほぼ保証しています。

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ループバック
  2. ネイティブIPv6
  3. IPv4
  4. 6to4
  5. テレド
  6. ULA
  7. サイトローカル
  8. 6ボーン
  9. IPv6compat

修正方法

私たちが望んでいるのは、IPv4よりもULAが優先されるように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

これにより、次回の再起動までアクティブになります。変更を永続的にするには:

>netsh interface ipv6 set prefixpolicy fc00::/7 37 13

もし私が:

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

コンピュータができることは、アドレスを使用するための一般的な礼儀を持っていることです。

ボーナスチャッター

fc00::/7範囲は、2つの部分に分かれています。

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

本当にfc良いと決めた人は誰もいないので、そこに座っているだけです。

fdアドレスは次のように定義されています。

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

したがってa4d7f6dd66、cryptoghpcalllyランダムな40ビットGlobalIDとして生成した場合、/ 48が得られます。

  • fda4:d7f5:dd66:: / 48
  • fda4:d7f5:dd66:face::/ 64(faceサブネット内)
  • fda4:d7f5:dd66:face::825 ホストIPアドレスとして

SixXSは、衝突の可能性を減らすために、一意のローカルアドレスGlobalIDプレフィックスのパブリックデータベース維持しました例:

  • fdee:e004:2208::/48:Apple Inc-Leopard OSX
  • fdd4:43c8:ba34::/48:TekSavvy-ダニーマレー
  • fdac:afbd:fea1::/48:IBM Rational Build Forge-クリスフラー

しかし、使用が遅くなり、そもそも価値が疑わしいため、SixXSは2018年にサービスを停止しました。

ボーナスリーディング


fc00::/7ネットワークは、実際には2つの部分に分かれています。fc00::/8ネットワークから割り当てる将来のグローバル権限のために予約され、現在使用できませんが、fd00::/8ローカルの割り当てのために利用可能であるが、それは次の40ビットは、ランダムに選択することが必要です。
ロンモーピン

実際、ここにいるのは、私たち(およびOP)がIPv6を使用したくないためであり、見つかったIPv6のすべてのインスタンスを無効にしても、ループバックではまだアクティブです!
AaA

0

私のために働く簡単な方法があります。インターフェイスメトリック#を変更して、優先度を決定しました。過去にこの方法を使用してネットワークアダプターの優先順位(最初にワイヤレスNICの優先順位、次にLAN NICの優先順位)を変更していましたが、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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.