2021/05/22

Windows10でのIPv6の無効化

企業のNWセキュリティは、IPv4を前提に設計されているところがまだまだ多い一方で、IPv6で接続できるサイトも増えてきた。

しかし、Windows10など、最近のWindows OSは、IPv6が使える場合はIPv6を使ってしまうので、無効化をしなければいけない状況が多い。

いろいろと情報を調べたので、今後のためにメモをしておく。

MSの情報では、IPv6はWindows Vista/Server 2008以降では必須機能なので止めることは推奨していない。IPv6を無効化する代わりに、「IPv6よりもIPv4を優先する」設定にすることを勧めている。

Windows10のIPv6の制御は以下のレジストリで行われている。

場所: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
名前: DisabledComponents
種類: REG_DWORD
最小値: 0x00 (既定値)
最大値: 0xFF (IPv6はdisable)

コマンドプロンプトで設定する場合は、以下のようなコマンドを打つ。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" /v DisabledComponents /t REG_DWORD /d <後述の値> /f

DisabledComponentsは、8ビット値で指定する。下表のバイナリ表現で「x」となっているビットは、当該機能の設定とは無関係の設定であり、当該ビットを設定している他の行を参照することを意味する。

設定後は再起動が必要。MSのサイトでは、0x00と0x20(10進数で32)以外の値に設定したら、Routing and Remote Access サービスでエラーが出ると書かれていた。

IPv6の機能 レジストリ値
(バイナリ値)
説明
IPv6よりもIPv4を優先する xx1x xxxx IPv4を優先して使用する。IPv6を使わせたくない場合のMS社推奨値
IPv6を無効化 1111 1111
(Hex: 0xFF)
IPv6を無効化。Win7 SP1やWin server 2008 R2 SP1でIPv6無効化後に起動が遅くなる場合はパッチがあるらしい。
DisabledComponentsへの0xffffffffの設定は正しくない。正しくは0xFFにすべきであり、0xffffffffにするとWindowsの起動が5秒遅くなる。
ここで0xFFを設定しても、各ネットワークインターフェースの設定画面のIPv6のチェックボックスは入ったままになるが、これは正常動作。
IPv6はWindowsの内部で使われているため、ループバックIP ::1などは残るが正常。
トンネルインターフェース以外の全てでIPv6を無効化 xxx1 xxxx Disable IPv6 on all nontunnel interfaces
トンネルインターフェース全てでIPv6を無効化 xxxx xxx1 Disable IPv6 on all tunnel interfaces
トンネルインターフェース以外の全て(ループバックを除く)とトンネルインターフェースの全てでIPv6を無効化 xxx1 xxx1 Disable IPv6 on all nontunnel interfaces (except the loopback) and on IPv6 tunnel interface
IPv4よりもIPv6を優先する xx0x xxxx Prefer IPv6 over IPv4
トンネルインターフェース以外の全てでIPv6を有効化 xxx0 xxxx Re-enable IPv6 on all nontunnel interfaces
トンネルインターフェース全てでIPv6を有効化 xxxx xxx0 Re-enable IPv6 on all tunnel interfaces
トンネルインターフェース以外の全てとトンネルインターフェースの全てでIPv6を有効化 xxx0 xxx0 Re-enable IPv6 on nontunnel interfaces and on IPv6 tunnel interfaces


トンネルインターフェースの無効化が必要な状況について

インターフェースにパブリックIPv4アドレスが割り当てられている場合、Windowsは6to4 トンネリング プロトコルを有効にしている。
6to4は、各アドレスの6to4 トンネリング インターフェイスにIPv6アドレスを自動的に割り当て、DNS サーバーにそのIPv6アドレスを動的に登録する。
この動作が必要ない場合は、IPv6 トンネル インターフェイスを無効化する。
(パブリックIPv4アドレスは、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16以外のIPv4アドレスの意味)。


DisabledComponentsの8つの各ビットの意味

ビットに1(=True)が立っていると、当該ビットの該当設定が有効化される。DisabledComponentsの各ビットの機能は「無効化する」設定なので、設定が有効になる=機能が無効化される。

右から 名称 設定内容
1番目
(右端)
Tunnel 全てのトンネルインターフェースでのIPv6の無効化
2番目 Tunnel6to4 6to4インターフェースの無効化
下記のコマンドと同義?
netsh interface ipv6 6to4 set state disable
3番目 TunnelIsatap ISATAPインターフェースの無効化
下記のコマンドと同義?
netsh interface ipv6 isatap set state disable
4番目 Tunnel Teredo Teredoインターフェースの無効化
下記のコマンドと同義?
netsh interface teredo set state disable
5番目 Native PPPを含む、全てのネイティブインターフェースでのIPv6の無効化(ループバックインターフェースを除く)
6番目 PreferIpv4 規定のプレフィックスポリシーにおいて、IPv4をIPv6よりも優先する。下記のコマンドで表示されるプレフィックスポリシーにおいて、IPv4-Mapped IPv6 Address(::ffff:0:0/96)の優先度を上げる。
netsh interface ipv6 show prefixpolicies
7番目 TunnelCp Disable CP interfaces
8番目
(左端)
TunnelIpTls Disable IP-TLS interfaces


netsh interface ipv6 show prefixpoliciesの出力(既定)

参考:https://ja.wikipedia.org/wiki/IPv6アドレス

優先順位 ラベル プレフィックス プレフィックスの用途
---------- ----- ----------------
50 0 ::1/128 ループバック
40 1 ::/0 IPv6通信全般(デフォルトユニキャスト)
35 4 ::ffff:0:0/96 IPv4へのIPv6アドレスのマップ
30 2 2002::/16 6to4
5 5 2001::/32 Teredoトンネリング
3 13 fc00::/7 ユニーク・ローカル・ユニキャスト・アドレス
IPv4のプライベートアドレスのIPv6版
1 11 fec0::/10 サイトローカルアドレス(廃止)
1 12 3ffe::/16 6bone用NW(IPv6の実証実験用NW)
※6boneは活動を停止し、アドレスはIANA返却済み
1 3 ::/96 IPv4互換アドレス(廃止)

上記の表がデフォルトのプレフィックスポリシーであるが、IPv6よりもIPv4を優先する設定(PreferIpv4ビットを1にする)を入れると以下のように変更になる。

優先順位   ラベル  プレフィックス
----------  -----  --------------------------------
        50      0  ::ffff:0:0/96
        40      1  ::1/128
        30      2  ::/0
        20      3  2002::/16
         5      5  2001::/32
         3     13  fc00::/7
         1     11  fec0::/10
         1     12  3ffe::/16
         1      4  ::/96


参考URL

https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-ipv6-in-windows

















0 件のコメント:

コメントを投稿