企業のNWセキュリティは、IPv4を前提に設計されているところがまだまだ多い一方で、IPv6で接続できるサイトも増えてきた。
しかし、Windows10など、最近のWindows OSは、IPv6が使える場合はIPv6を使ってしまうので、無効化をしなければいけない状況が多い。
いろいろと情報を調べたので、今後のためにメモをしておく。
MSの情報では、IPv6はWindows Vista/Server 2008以降では必須機能なので止めることは推奨していない。IPv6を無効化する代わりに、「IPv6よりもIPv4を優先する」設定にすることを勧めている。
Windows10のIPv6の制御は以下のレジストリで行われている。
コマンドプロンプトで設定する場合は、以下のようなコマンドを打つ。
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 件のコメント:
コメントを投稿