IPv6のIPアドレスは128ビット
IPv6は、IPアドレスが128ビットに増えた事はご存じだと思いますが、それ以外の部分については詳しく知らいないという方のために解説しようと思います。
主にひかり回線を自宅に引いた方を対象にしています。4G,5G回線を使ったホームルーターはまた違う仕様なのでここでは一部対象外です。しかし同じ部分も多いので、ぜひとも参考にしてください。
上位64ビットと下位64ビット
IPv6のIPアドレスについて考えるとき、上位64ビット、下位64ビットに分けて考えるのがポイントです。
大雑把に言って、上位64ビットはルーターやプロバイダが決めるアドレス、下位64ビットは各機器が自分で決めるアドレスと思ってください。
厳密に言うとこうではないパターンもあるのですが、最初の理解としてはこう理解してください。
NICとIPアドレスの関係
IPv4ではNICの口1つにつき、IPアドレスは原則1つしか割り当てられませんが、IPv6では1つということは無く何個も割り当てられます。まずはこのあたりから説明します。
IPアドレスの種類
- LLA リンクローカルアドレス
IPv6に対応しているOSでは、必ず割り当てられるIPアドレスです
このアドレスは、MACアドレスから決められます。ルーターなどの機器には依存せず、近傍探索で重複チェックが行われて、ローカル機器のみでIPアドレスが決定します。
このアドレスはfe80
から始まります。ルーターが関与しないIPアドレスで、パケットがルーターを超えることはできません -
ULA ユニークローカルアドレス
LLAはルータを超えられないため大きな組織ではルーターを超える必要が出てきますがGUAはプロバイダが決めるので変更される可能性もあり、組織内で階層を持ったIPアドレスが必要ということで、このULAが割り当てられます。別に小さい組織でも割り当てて困ることはありません。各機器はルータに問い合わせてアドレスが決定されます。このアドレスはfd
から始まります。ルータを超えることはできますが、インターネットに出ていくことはできません。 -
GUA グローバルユニキャストアドレス
プロバイダから割り当てられるグローバルアドレスです。プレフィックスが何種類かありプロバイダで変わってきます。主にプレフィックスは/48
/56
/64
の3種類があります。
一般家庭用では、/56
/64
で割り当てられる場合が多いです。
アドレスが20
や24
から始まります。
日本の仕様では、ひかり電話あり
で申し込むと、HGW(ホームゲートウェイ)という機器がプロバイダから送られてきますが、ひかり電話なし
で申し込むと、ONUという機器が送られてきます。
HGWは、このあと説明するDHCPv6-PDが使えます。(プロバイダによっては、DHCPv6-PDは外に出さないタイプ、プレフィックスは/60
でDHCPv6-PDが使えるタイプ、色々あるようです)
日本の仕様ではだいたい、以下のパターンになります。
ひかり電話あり
だとHGW、DHCPv6-PDありでプレフィックスは/56
ひかり電話なし
だとONU、DHCPv6-PDなしでプレフィックスは/64
プレフィックスが/64では、DHCPv6-PDは使えないと思ってください。
この仕様はNTTが決めた仕様なので、日本のプロバイダは全部そうなっています。うちは「さくらインターネット」だから関係ないと思わないでください。日本のインターネットの根っこの部分は全部NTTの回線を使っています。
ざっとまとめると、以下の表になります
ひかり電話なし | ひかり電話あり | |
---|---|---|
使用機器 | ONU | HGW |
プレフィックス | 64 | 56 |
DHCPv6-PD | なし | あり |
プレフィックス:128ビットのアドレスのうち、上位何ビットを固定化しておくか、そのビット数です。
/56
だと上位56ビットはプロバイダが決めるため固定で、下位72ビットは自由に使えますという意味です。
ONU:Ethernetの電気信号を光信号に変換する装置です。
HGW:ONU、ルーター、電話回線が一体となった機器です。
RS(ルーター要請)とRA(ルーター広告)
ルーター配下のPCやスマホなどの機器は、ネットワークの初期化時にRSを送信してルータの存在確認、ネットワークの設定情報などを問い合わせます。応答が無い場合はLLAを自分で振って終了ですが、応答がある場合はルータがRAを返してきます。
このRAがIPv6では非常に重要で、このRAによってほぼ設定が完了します。
ほぼといったのは、まだ続く場合があるからです。
RAで通知される情報には、主にプレフィックス情報 Gateway情報 DNS情報 DHCP情報の4種類があります。ULAの情報もここで返されます。
MフラグとOフラグ
DHCP情報には、MフラグOフラグという2種類の重要な情報があります。
- Mフラグ (Managed address configuration flag)
クライアントのIPv6アドレスと、DNSサーバーなどのステートフルな情報をDHCPv6サーバーから全て取得させるためのフラグです。
このフラグがオンの場合、クライアントはIPv6アドレスの取得と管理をDHCPv6サーバーに任せます。 - Oフラグ (Other configuration flag)
IPv6アドレスは SLAACなどで各クライアント自身が設定し(ステートレス)、DNSサーバーなどの追加情報をDHCPv6サーバーから取得させるためのフラグです。
ステートフル:サーバーがコントロールしてクライアントには勝手に決めさせない
ステートレス:ある程度クライアントが自分で決定する
Mフラグ | Oフラグ | 仕様 |
---|---|---|
ON | OFF | IPv6アドレスはDHCPv6から取得、DNS情報はRAから取得 |
ON | ON | IPv6アドレス、DNS情報など全てをDHCPv6から取得 |
OFF | ON | IPv6アドレスは自分で生成(SLAAC)、DNS情報はDHCPv6から取得 |
OFF | OFF | IPv6アドレスは自分で生成(SLAAC)、DNS情報はRAから取得 |
なんでDNS情報を知らせるのに2種類必要なんだと思いますよね。私も思います。
これは、歴史的経緯からこうなっていて、最初のころRAではDNS情報は通知できない仕組みで、DHCPv6しか通知できなかったんです。しかし規格が変更になり、RAでDNSが通知できるようになって、このようなややこしいことになっています。
-
SLAAC(スラック)
RAを受けて、端末がGUAを決定する仕組みです。ルーターからは上位64ビットしか送られてきませんので、下位64ビットは自分で決定する必要があります。
DHCPv6を使っていれば、128ビットすべて決めてくれるので良いのですが、SLAACでは自分で決める必要があります。
そのため、とりあえず自分で決めておいて(MACアドレスを元に決定されます)、「お隣さんたちアドレス重複してます?」と聞いて、反応がなかったらそれで決定する。反応があったらランダム値を加えて作り直してまた聞きます。
この重複チェックで問題になっているウイルスがあって、必ず「重複してるぜ」と返すウイルスが存在します。そうするといつまでたっても端末が起動しないか起動にすごく時間がかかることになります。これをDAD攻撃と言います。今のところこれに対処するには、感染している端末を切り離すしかありません。
NDP(Neighbor Discovery Protocol)
上記、RS/RAはこのNDPの仲間の1つです。他にはNS(Neighbor Solicitation)とNA(Neighbor Advertisement)があります。
-
NS(Neighbor Solicitation)
通信相手のMACアドレスを調べるためのプロトコルです。相手のIPアドレスをパケットに入れて、問い合わせます。 -
NA(Neighbor Advertisement)
上記NSを受けて、問い合わせした相手にMACアドレスを通知します。
DHCPv6
- ステートフルで使うパターン:MフラグがONの動作となります。IPv6の128ビットアドレスすべてをサーバーが決めます。他にDNSなどの追加情報も通知します。
- ステートレスで使うパターン:MフラグがOFF、OフラグがONの動作となります。DNSなどの追加情報だけを通知します。
DHCPv6-PD
DHCPv6の上位互換みたいな感じでとらえがちですが、違うものです。
PDはPrefix Delegationの略で、プレフィックス委譲という意味です。
IPv6は、プレフィックスが/64
で初めて各PCやスマホにネットワークを使わせることができます。では、プレフィックス/48
/56
などの場合はどうするかというと、このDHCPv6-PDでプレフィックス/64
を複数に分割して、その1つを各機器に通知します。つまり、プレフィックスを分割する役割が、このDHCPv6-PDにあります。
ちなみに、プレフィックス/56
で受けて、下位のDHCPv6-PDにプレフィックス/60
で投げる、つまりDHCPv6-PDを数珠つなぎにして使うこともできます。
一般家庭でIPv6のプレフィックス/64
を複数使う場面は多くないとは思いますが、知識として覚えて損はありません。ルーターに設定をする際には、知識として覚えておくと、設定で迷うことも少なくなるかと思います。
DHCP(Dynamic Host Configuration Protocol)
IPアドレスをサーバーが一元管理する仕組みです。
IPv4のDHCPv4とIPv6のDHCPv6が存在していて互換性はありませんし、仕組みもだいぶ異なります。
IPv4 over IPv6
プロバイダと契約するとIPv6の他、互換性のためにIPv4で接続する手段も提供されます。
その種類が、PPPoE MAP-E DS-Liteと3種類もあって、これもややこしくしている原因です。
-
PPPoE(Point to Point Protocol Over Ethernet)
昔々、平成1桁年の頃、パソコン少年たちは夜な夜なパソコン通信を楽しんでいました。パソコンとシリアルケーブルでモデムをつなぎ、電話回線に接続して契約したNiftyServeなどのアクセスポイントにダイヤルして、テキストベースでデータ通信を楽しんでいました。
そのモデムとアクセスポイントをつなぐのに使われた規格がPPP(Point to Point Protocol)という規格です。これをEthernetで使えるようにした規格がPPPoEです。上の3つの規格では一番の古株で、速度的に問題があるので徐々にフェードアウトしていく感じになっています。
利点は何と言ってもIPv4のグローバルアドレスがもらえる点でしょう。この点は何事にも代えがたい利点となっています。 -
MAP-E(Mapping of Address and Port Encapsulation)
IPv4パケットをIPv6でカプセル化する技術です。プロバイダ側はIPv6で1本化できるので、余計なコストがかかりません。ポイントは、IPv6の128ビットあるアドレス情報に、解放するIPv4のアドレス、ポート番号、ポートの個数などの情報を埋め込んでいることです。これにより、IPv6アドレスとIPv4アドレスが紐付けされて、IPv4での通信が可能となります。
限定的ではありますが、IPv4のグローバルアドレスと、待ち受けできるポートの範囲をもらえます。日本の場合は240個のポートがもらえますが、何番から何番までのポートとプロバイダに決められてしまいます。80(http)や443(https)などの使いたいポートはまずもらえないと思ってください。 -
DS-Lite(Dual Stack Lite)
DS-Liteと聞くとゲーム機を思う方も多いと思いますが、ここでのDS-Liteはゲーム機とは無関係です。
特徴としては、NATを大規模にプロバイダ側で行っている点です。なので、自宅にあるルーターはNATがなくてもIPv4を使うことができます。しかしNATを入れても2重NATになるだけでそれほど困るわけではありません。
NATを行っているので、IPv4のグローバルアドレスは諦めるしかありません。IPv4でVPNサーバーの運用や、自宅サーバーをインターネットへ公開といったことはできません。
NAT(Network Address Translation)
ネットワーク機器(主にルータ)がIPパケットの送信元や宛先のアドレスを変換する技術です。IPv4で特に重要な役割を果たしており、アドレス不足問題の解決やセキュリティ向上に利用されています。
VPN(Virtual Private Network)
インターネット上に暗号化された安全な通信経路(トンネル)を構築する技術です。インターネットから繋ぐ際にグローバルIPアドレスが必要になります。
mDNS(Multicast DNS)
ローカルネットワーク内で名前解決を行うための仕組みです。通常、DNSはサーバに問い合わせてホスト名をIPアドレスに変換しますが、mDNSはDNSの仕組みをマルチキャストで使うことで、専用のDNSサーバなしで名前解決を可能にします。
昔、WindowsではNetBIOSというプロトコルが使われていましたが(WindowsXP時代)、さすがに古くなったのでLLMNRというMicrosoft独自規格を作ってWindowsVistaに載せました。しかしこの時すでにAppleは、mDNSをmacOSに載せていました。その後LLNMRはWindows以外では普及せず、mDNSが現在のスタンダードになっています。MicrosoftもWindows10からは、mDNSが標準で使えるようになっています。
DNS(Domain Name Service)
インターネットの「電話帳」のような仕組みで、ホスト名(www.example.com)をIPアドレス(93.184.216.34)に変換するシステムです。
IPv4で応答するDNS、IPv6で応答するDNSが存在します。
注意しなくてはいけないのは、IPv4で応答するDNSでも、返ってくるIPアドレスは、IPv4アドレス(Aレコード)、IPv6アドレス(AAAAレコード)、両方返ってきます。
逆もしかりで、IPv6で応答するDNSでも、返ってくるIPアドレスは、IPv4アドレス(Aレコード)、IPv6アドレス(AAAAレコード)、両方返ってきます。