IPv6アドレスを固定したい(一時IPv6アドレスの無効化)

Page content

1.目的

IPv6は仕様として外部との通信に一時IPアドレスを生成して利用します。でも毎回IPが変わってしまうとアクセス制限などができなくなってしまいます。

IPv6アドレスを固定して、アクセス制御を行いたいです。

2.環境

  • Windows 11

3.疑問

a)なぜIPv6は一時IPアドレスを使うの?

IPv6アドレスにはIPv4のようなプライベートアドレス、グローバルアドレスの概念がありません。IPv6アドレスはすべてグローバルアドレスとして扱われます。

つまりIPv6アドレスを固定とした場合、「だれが?」のアクセスが特定されやすくなるのです。

そこで匿名性を確保するために、一時IPv6アドレスが使われるようになりました。なお一時IPv6アドレスは、OS再起動やNICの再起動時に端末自身によって自動で生成されます。

b)IPv6の一時IPアドレスが端末自身で自動生成されると、他機器と重複しないの?

可能性はゼロではありませんが、発生する確率は極めて低いと言っていいでしょう。

なぜかを説明するにあたり、IPv6の一時アドレス生成順序について簡単に整理します。

  1. ネットワークプレフィックス(64bit)と64bitの履歴バッファ(または乱数)をつなげて128bitの値を作る
  2. その値を元にMD5ハッシュ関数で128bitのハッシュ値を生成する
  3. 生成されたハッシュ値の上位64bitを切り出し、インターフェイスIDとして使う
  4. ネットワークプレフィックス(64bit)とインターフェイスID(64bit)をくっつける
  5. ユニバーサル/ローカル(U/L)ビットを「0」に設定する(※ロカール管理であることを示すビット)

この内容から、インターフェイスID 64bitのうち、ユニバーサル/ローカル(U/L)ビット(1bit)を除く部分、つまり63bit分が一時アドレスとして使われる可能性のある部分になります。

63bitを10進数にすると、以下の通りになります。

2^63 = 9,223,372,036,854,775,808
→922京3372兆0368億5477万5808

この922京以上のパターンの中から「“たまたま"IPv6アドレスが重複する」ということが、現実的に発生し得るでしょうか。価値観の問題もあると思いますが、私は現実的に重複しないと考えてよいと思います。

3.手順

それでは一時IPv6アドレスの無効化方法を確認していきましょう。

a)作業前確認

コマンドプロンプトでipconfigを実行します。すると「一時 IPv6 アドレス」が表示されるはずです。このIPv6アドレスがInternet接続時に使われます。

C:\Users\hoge>ipconfig

Windows IP 構成


イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240d:1a:4f6:c400:741f:4734:d4cd:ac00
   一時 IPv6 アドレス. . . . . . . . . .: 240d:1a:4f6:c400:cc3e:31e1:9718:7ffc ★これ★
   リンクローカル IPv6 アドレス. . . . .: fe80::81e3:aa87:54f8:5ac7%5
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.30
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::1%5
                                          192.168.10.1

b)一時IPv6アドレス構成を無効化する

netshコマンドで無効化することができます。管理者としてコマンドプロンプトを起動してから実行します。

C:\Windows\System32>netsh interface ipv6 set privacy state=disable
OK

c)NICを再起動する

OS再起動でも大丈夫です。

C:\Windows\System32>netsh interface set interface name="イーサネット" disable
C:\Windows\System32>netsh interface set interface name="イーサネット" enable
C:\Windows\System32>

この操作後にipconfigを実行すると「一時IPv6アドレス」が消えていることが確認できます。

C:\Users\hoge>ipconfig

Windows IP 構成


イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240d:1a:4f6:c400:741f:4734:d4cd:ac00
   リンクローカル IPv6 アドレス. . . . .: fe80::81e3:aa87:54f8:5ac7%5
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.30
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::1%5
                                          192.168.10.1

この状態になれば、上記の「IPv6アドレス」が固定された状態でInternetと通信を行うことになります。

アクセス制御を行いたい場合は、このIPv6アドレスに対して制御を行います。ただしプライバシー保護機能は低下している状態になります。