IPv6で通信できてる? 自分のアドレスは? 実は固定じゃない? 自宅のIPv6環境をチェックしてみよう!
あれ? IPv6アドレスって固定じゃないんだっけ?
さて、ここで、一旦、PCを再起動して、もう一度、「https://www.test-ipv6.com」にアクセスしてみてほしい。
再起動後のIPv6のアドレスに注目上の画面は、先のPCと同じPCから再起動後にアクセスした画面。IPv6アドレスが変わっていることが確認できるはずだ。
なぜアドレスが変わったのかを説明する前に、もしかすると気になる人がいるかもしれないので、再起動後のアドレスの桁数が違う点を少しだけ説明しておこう。
IPv6では、アドレスで連続する0を省略できるというルールがある。よく「::」のような表記が登場することがあるが、これは「:0000:」の0000を省略したパターンだ。上記の再起動後のアドレスは、「5b3」の部分が影響して桁数が違っているが、この「5b3」の部分は「:」で区切られた先頭の0が省略されたパターンで、本来の値は「05b3」になる。
では、なぜIPv6のアドレスが変わっているか? についてに、話を戻そう。
ここで、Windows 10の設定画面からIPv6のアドレスを確認してみよう。[設定]の[ネットワークとインターネット]から[イーサネット(有線の場合)]を開き、[ネットワーク2]などの接続先を選ぶと、プロパティの項目でIPv6のアドレスを確認できる。
以下の画面は、上と同じPCのプロパティだ。
Windows 10の[設定]からNICに割り当てられたIPv6アドレスを確認できるはい。また違う値が登場しました。
果たして、何が正しいのか? 少々、混乱するところだが、これらはどちらも正しいIPv6アドレスで、どちらも実際、通信に使える値となっている。
試しに、同一ネットワーク内の別のPCからPINGを実行してみる※と、どちらのアドレスでも通信できることが確認できる。
※筆者注:あらかじめ受信側のファイアウォールで「ファイルとプリンターの共有(エコー要求・ICMPv6受信)」の受信規則を有効化しておく必要がある
PINGの様子。どちらのIPv6アドレスでも応答が返ってくるPINGを実行する時は、受信側のファイアウォールの設定が必要この状況を理解するには、[ネットワークと共有センター]から[イーサネット接続]のプロパティを確認するか、コマンドを使うのが手っ取り早い。
「ipconfig」のコマンドを使うと、より詳細な情報を取得できるWindows PowerShellやコマンドプロンプトを起動して「ipconfig.exe」を実行すると、PCに割り当てられたIPアドレスを確認できる。ここを読み取ると、先のアドレスが次のようになっていることが分かる。
IPv6の説明をちらっと見たことがある人は、IPv6のアドレスが、上位から降ってきたプリフィックスとMACアドレスから生成されたインターフェースIDの組み合わせで構成されるという、「EUI-64」に関する話を聞いたことがあるかもしれない。
IPv6のアドレスといえば、基本的にグローバルで、しかも固定のアドレスではないのか? という疑問を持つ方もいるかもしれない。だが実は、Windows 10では、普段、通信するときのIPv6アドレスとして、「一時IPv6アドレス」という仕組みが利用されるようになっていて、アダプターの有効/無効を切り替えるタイミングやOS自体の再起動によって、アドレスが変更されるようになっている。
これは、インターネット上での匿名性を確保するためだ。IPv6アドレスは、グローバルな一意のアドレスとなるため、インターフェースのMACアドレスから生成されるEUI-64のアドレスを使うと、発信元が容易に特定できてしまう。
普段の通信に、変化する一時IPv6アドレスを使うことで、こうした特定を困難にしているわけだ。このため、インターネット接続を行う際の「test-ipv6.com」では、一時IPv6アドレスが表示されていたことになる。
なお、上の画面には、もう1つ、リンクローカルIPv6アドレス(fe80::ではじまる値。末尾の%14は不要)もある。これは、同一リンク上でのみ有効なアドレスだ。ローカルネットワーク内であれば、このアドレスで通信することもできる。
ちなみに、あまり使う機会はないかもしれないが、一時IPv6アドレスは、以下のコマンドで無効にすることも可能になっている(管理者権限のPowerShellから実行)。
Set-NetIPv6Protocol -UseTemporaryAddresses Disabled
一時IPv6アドレスは無効にすることもできる