してみるテストロゴ
Apache 2.4系でHTTP/2サーバを構築してみるテスト。

IPv6について

すこしずつですが、IPv6に対応したプロバイダが増えてきました。

IPv6とは、これまでインターネット接続に利用してきたIPv4に代わるネットワークプロトコルです。

IPv4も、IPv6も、アドレスと呼ばれる数値によって、コンピュータを特定します。IPv4では、これが約42億個(32ビット)用意されていましたが、すでに新規に割り当てることができるアドレスが不足しています。

これに対して、IPv6では、理論的には340,282,366,920,938,463,463,374,607,431,768,211,456個(128ビット)のアドレスが用意されており、想像を超えた台数のコンピュータを接続することができます。

このサーバを運用しているNURO-Bizの回線も、IPv6に対応しています。そこで、IPv6でHTTP/2のサーバを運用してみようということで、早速やってみます。

その準備として、まずは、クライアントPCのアクセス回線からIPv6に接続できるようにします。

ここではUQ-WiMAX2を想定しています。こちらも、IPv6に対応したプロバイダです。

もちろん、既存のIPv4の設定を変更したりする必要もありませんし、IPv6の設定が、IPv4に影響することもほぼありません。

IPv6アドレスについて

そのまえに、今更かもしれませんが、IPv6のアドレスの構造について説明します。

IPv4はピリオド(.)で区切った1バイトの数値を、4つ並べて表現される数値でした。

これに対して、IPv6はセミコロン(:)で区切った2バイトの数値を8個並べます。

セミコロンで区切られた1つの2バイトの4桁の16進数の数値をセクションと呼びます。

IPv6アドレスは、セクションとは別に、グローバルIDサブネットIDインタフェースIDの3つの部分に分けられます。

先頭からnビット(nは64以下の数値)は、上位プロバイダから割り振られたグローバルIDと呼ばれます。。

プロバイダにもよりますが、だいたい,48ビットから56ビットが割り振られます。これをグローバルIDのプリフィックス(ビット数)と呼びます。

プリフィックス56ビットとあれば、グローバルIDは先頭から56ビット分ということになります。

プリフィックスはセクションの区切りとずれてもかまいません。

また、プリフィックスは、アドレスのうちのグローバルID部分だけでなく、グローバルID+サブネットIDといった、ネットワーク部分を示す目的でも利用されます。

nビットから64ビット目の値は、サブネットIDと呼ばれます。当然、長さは64から,プリフィックスを引いた値(64-n)です。

これは,プリフィックスを割り振られた組織が決めて良い部分です。たとえば、プリフィクスが56ビットならサブネット長は8ビットになります。この場合、,プリフィックスを割り振られた組織は、2の8乗=256個のサブネットを持つことができます。

末尾64ビット(8バイト:4セクション)分はインタフェースIDと呼ばれます。これはサブネットの中で、ホストを区別するための数値となります。

インタフェースIDには、IPv4のMACアドレスに相当する役割の部分があります。そのため、インタフェースIDをMACアドレスから生成する方法があります。MACアドレスは48ビットなので、これを64ビットに変換する、EIU-64と呼ばれる手順でインタフェースIDを決めます。

逆にEIU-64から、MACアドレスを求めることもできます。つまりEIU-64がパケットに含まれれば、事実上MACアドレスがネットワーク上を流れることになります。これは、セキュリティー上好ましくないので、Windowsでは、ランダムに決める方式が使用されます。

EIU-64は、リンクローカルと呼ばれる、外部との接続に利用しないネットワークで利用されることが多く、外部との接続に利用するグローバルアドレスでは、クライアントは、個体を識別されないようにランダムか、DHCPv6の一時IPv6アドレスを利用します。

サーバのグローバルアドレスは、後述の省略表記によって、キーボードから打ちやすい数値を決めて、静的(スタティック)に設定します。

IPv6アドレスの省略表記

IPv6アドレスは、IPv4に比べてビット数が多いので省略表記を使うことができます。

各セクションの数値は、それぞれ2バイトなので、4桁の16進数ですが、0から始まる数値の場合、0以外の数値が現れるまで省略できます。0しかない場合、一桁の0と表現します。

また、一桁の0で表現されるセクションが続く場合、最も長く続く部分を1カ所に限り「::」と省略できます。

::は可変長0を意味しますので、アドレス表記中、一カ所にしか使えません。

インタフェースIDを、MACアドレスからEIU-64で求めたり、ランダムに決めるタイプのアドレスだと短くならないので、クライアントに割り振られたアドレスで省略表記を使う機会は少ないですが、静的に割り当てるサーバのアドレスなら省略しやすさも考慮の上、アドレスを決められます。

リンクローカルスコープとグローバルスコープ

IPv4の世界では、プライベートアドレスとグローバルアドレスといった区分がありましたが、IPv6の世界では、似たような区分として、リンクローカルアドレスとグローバルアドレス(グローバルユニキャストアドレス)といった区分があります。

リンクローカルアドレスは、IPv4のプライベートアドレスに相当しますが、全く同じというわけではありません。

リンクローカルアドレスは、同一LAN内の機器との通信に利用するアドレスで、そのままでは外部の機器とは接続できません。

外部から直接接続できないという意味では、プライベートアドレスと同じですが、リンクローカルアドレスは、グローバルアドレスと、同一のLANポートに共存できるなどの相違もあります。

同一LANポートがグローバルアドレスを持っている可能性もあるので、リンクローカルアドレスを利用しているというだけでは、外部からの接続ができないことの保障にはなりません。

リンクローカルアドレスの機器同士が通信できる範囲を、「リンクローカルスコープ」と呼びます。

リンクローカルIPv6アドレスは、ホストが、自身のインタフェースIDをMACアドレスから生成するEUI-64やランダム数値から生成して、リンクローカルプリフィックス(FE80::/10)と組み合わせて生成します。

リンクローカルIPv6アドレスは、ホストの自動設定に利用したり、外部から接続されたくない機器が利用します。

また、デフォルトゲートウェイにリンクローカルアドレスを利用することができます。

グローバルアドレスは、IPv4のものと同じく、全世界の他のグローバルアドレスが付与された機器との通信に利用できます。グローバルアドレスの機器同士が通信できる範囲を「グローバルスコープ」と呼びます。

グローバルアドレスにおいて、インタフェースIDをMACアドレスから生成するEUI-64だと、ホストのMACアドレスが露見するので、グローバルアドレスでは、EUI-64の使用は控えた方が良いでしょう。

このため、Windowsなど、クライアント系のOSでは、自動的にランダムに割り当てを行います。

WiFiルータを利用してクライアントPCをIPv6に接続

ということで、まずは、IPv6に対応したクライアントのPCを用意しましょう。Windows 7以降なら問題なく使用できるでしょう。

次に、回線を用意します。ここでは、UQ-WiMAXのWiMAX2を利用します。WiFiルータは、私の手元にあるWX01を使用します。

これからプロバイダを選ぶのであれば、トンネル方式ではなく、デュアルスタックによってIPv6に対応したプロバイダをおすすめします。

WX01の設定画面

管理画面から、「詳細設定」⇒「ネットワーク設定」⇒「プロファイル設定」と進み、上図のように、「プロファイルリスト」から「Internet」を選び、最後に「IPタイプ」を「IPv4&IPv6」として設定ボタンを押します。

設定としてはこれだけです。

あとは、Windowsが、Wifiルータに接続した際に、IPv6のアドレスが降ってきます。

もちろんIPv4への接続は今まで通りです。

NEXT >> IPv6の設定の確認(Windowsクライアント編)

©Copyrights 2015-2023, non-standard programmer

このサイトは、あくまでも私の個人的体験を、綴ったものです。 軽く参考程度にご利用ください。