IPv4とIPv6の名前解決

小川晃通氏(以下、小川):ここで、IPv6とDNSの話になります。どうしてIPv4とIPv6という、ぜんぜん違う直接的な互換性のない2つのプロトコルが1つのものに見えるかという話ですが、これは通信の仕方の特徴によります。

通信を開始するときにIPアドレスをいきなり指定する場合はないとは言いませんが、多くの場合はまず名前解決を行い、例えばwww.example.comだったら、その名前に対応するIPアドレスが何かという名前解決を行うわけです。名前解決を行ったあとで、名前から得られたIPアドレスを使って、通信を開始します。

TCPの場合、例えば名前解決を行い、その名前解決によって通信相手のIPアドレスを知って、そのIPアドレスを使って通信相手とコネクションを確立してから通信するような手順になるわけです。

そうなると名前解決というところで、IPv4とIPv6のアドレスの両方が得られる環境があれば、得られたうちのどちらかを使う、もしくは両方を使って通信できるわけです。

IPv4とIPv6のアドレスが登録されるのはDNSですが、DNSに両方を登録したときにどちらを使って通信するのかを判断するのはユーザー側です。

ユーザー側で判断が行われますが実際に人間であるユーザーが直接判断しているとは限らなくて、多くの場合、アプリケーションやOSがなんとなく判断して、それに応じて通信が開始されることが多いです。

ということで、ユーザーにとっては直接見えなくなるので、IPv6を使っているかIPv4を使っているか、気づかないことが多いわけです。

サーバー側ではなくクライアント側、ユーザー側が判断しているのがポイントです。そのため、WebサーバーでIPv4とIPv6の両方で通信できる環境を用意したとしても、どちらを選ぶかはユーザーの判断に委ねられるわけです。

どういうことかと言うと、例えばWebサーバーがあったとして、IPv6のソケットとIPv4のソケット両方で通信できるようにWebサーバーは準備をしてたとしても、ユーザーがIPv4で通信したら、サーバー側はIPv4でしか通信できないわけです。

このようにユーザー側が判断するのと、IPv6とIPv4の両方があるけど、たいていはどちらかで通信が行われるのがポイントです。

もうちょっと詳しく見ていくと、例えばexample.comという権威DNSサーバーに、スライドに書いたような登録がされている場合があります。AレコードはIPv4を示すもので、Aが4つ、IPv4アドレスのbit数としては4倍なので、IPv6のレコード、DNSでのレコードは、AAAA(クワッドA)レコード、クワッドは4つということです。AAAAレコードと呼ばれていて、例えばwwwということでAレコードが2つに、AAAAレコードが3つのような感じになっていて。

ユーザー側としては、名前解決をAレコードとAAAAレコードに対して行ってみたら、返答が返ってくるので、「ではどれを使って通信をしようか」みたいなことを考えて通信を開始するような流れになるわけです。

このように名前に対してIPアドレスが関連づけられていて、どれかを使う感じになっているので、直接的に相互に互換性がないIPv4とIPv6があったとしても、1つのインターネットとして見えるわけです。

ということで、2つを1つに見せているDNSは、IPv4とIPv6という別々のインターネットを1つに見せている、非常に大きなポイントになります。

“直接的な互換性がない”とは?

直接的に互換性がない話をしまくっていますが、それがどういうことかをざっと紹介します。IPv4とIPv6の違いです。すごく細かく言うと、メチャメチャいっぱいあるので、今日はバーっと説明します。

IPv4とIPv6のヘッダを比較してみると、ぜんぜん違います。大きさも違うし、フィールドの数はIPv6のほうがぜんぜん少なくなってます。

IPv4のヘッダとIPv6のヘッダで同じ名前のフィールドは、最初の4bitのバージョンだけです。ソースアドレス、デスティネーションアドレスなどは、名前は一緒でサイズが違うとか、全部違います。まったく一緒なのは、バージョンのフィールドだけです。

ToSフィールドとトラフィッククラスや、TTLとホップリミットのような感じで、事実上意味は一緒だけど、名前が変わったフィールドみたいなものもあります。

細かくなりますが、IPv4のTTLがフィールドとしてありました。TTLフィールドの指定は、昔は単位は秒のつもりで作ったんです。もともとは時間っていうのを秒単位で示していましたが、実際の運用では、ルーターがパケットを転送するたびに、最低でもTTLを1は減算することが決まっていました。ルーターのホップ数としてTTL、どれだけの時間生きるか(Time to Live)という名前ではなく、ホップするリミットということで、ホップリミットに名前が変わりました。

宛先と送信元のIPアドレスは、大きさがぜんぜん違います。

それ以外にIPv6とIPv4の大きな違いは、どちらかというとエンドノード周辺にあります。これは、ルーティングやフォワーディング、ルーター周辺のところの考え方がけっこう似ています。

ルーティングプロトコルも細かい違いはありますが、大枠としては同じです。ただ、セグメント、リンク周辺に大きな違いがあるわけで。それがどういうことかというと、末端ノードの近くで、例えば/64bitの境界やネットワークインターフェイスに複数のIPv6アドレスをつけられること、NDPと言われる近隣探索プロトコルあたりが、けっこう大きな違いです。

このあたりの説明は割愛しますが、興味ある方々はぜひ本や、YouTubeチャンネルでもけっこう細かく解説しているので見てください。

IPv4では例えばネットワーク部、ホスト部と分かれていたのが、IPv6では上位64bitがサブネットプレフィックスで、下位64bitがインターフェイス識別子のような感じで、例外もありますが、基本こういうかたちになっています。64bitでバウンダリは固定などはけっこう違う部分です。

あと、ネットワークインターフェイスに複数のIPv6アドレスがつけられるのが、実はメチャクチャ大きな違いです。

IPv4では、IPアドレスは1つのネットワークインターフェイスに1個だけというふうにだいたい運用されてるとか、あとは暗黙、ほぼそういうかたちで決まっているわけですが、IPv6では複数のIPv6アドレスがネットワークインターフェイスに設定される前提のプロトコルになっています。

例えば、リンクローカルアドレスという、そのリンク内でしか有効にならない、もしくはリンク内でしか通信を使えないような、スコープが決まったアドレスがあります。

そのリンクローカルスコープでしか使えないリンクローカルアドレスが、必ずネットワークインターフェイスに設定された上で、グローバルIPv6アドレスがつけられるときは、リンクローカルアドレスとともにグローバルIPv6アドレスが設定されるし、複数のグローバルIPv6アドレスが1つのネットワークインターフェイスにつけられることもあります。

いろいろな理由があって複数づけられることがありますが、そこはけっこう大きな違いです。

あと、IPv4で実現されてたいろいろな機能がICMPv6に統合された上で、さらにICMPv6を使う近隣探索プロトコルがあるのが、IPv6の非常に大きな特徴です。

IPv6で回線が速くなる?

最後にですが、IPv4 over IPv6とか、IPv6で速くなるという話が日本国内のいろいろなところで最近話題で。Twitterで見てても、IPv6の日本国内での話題の半分以上はこれなんじゃないかと思うぐらい、“IPv6爆速”みたいな話が多いです。

例えば3Mbps、4Mbpsぐらいしか出ない激遅の光回線があったとして、それがいきなり800Mbpsぐらいまで上がるとか、そういうこともわりとあります。

これがなにかいうと、要はNTTフレッツ網に関しての話ですが、プロトコルとしての速さはIPv6とIPv4でぜんぜん変わりません。

なにかと言うと、要はフレッツ網でIPv6 IPoEを使うと、インターネットが速くなると巷で言われているような状況になることもある、という話です。

ただ、IPv4のPPPoEがすごく通信のボトルネックになってる場合があり、その場合避けられるというのがポイントです。

それを避けるための技術としてIPv6 IPoEがあります。ただ、IPv6 IPoEはIPv6でしか通信ができないので、そうなったときにどうするかというと、いくつか方法があります。DS-LiteやMAP-E、普通のIPIPトンネルを使うようなかたちでIPv6の中にIPv4パケットをカプセル化した上で、IPv4をIPv6のネットワークを通してからカプセルを解いて、IPv4インターネットを通すような方法をとることで、IPv4 PPPoEを避けられるわけです。

このあたりはけっこう話が細かくなるので『徹底解説 v6プラス』という本を書いたのでそれを見てもらうかYouTubeでIPv4 PPPoEと、IPv6 PPPoEとIPv6 IPoEの解説をした動画があるので、ぜひそちらを見てください。

あともう1つNAT64を使う方法もあって、ユーザー環境をIPv6オンリーにしつつ、NAT64/DNS64でIPv4インターネットとの通信を行う方法もあります。これもIPv6 IPoE経由でIPv4インターネットとの通信を行う方法です。

最後になります。YouTubeチャンネルをやっているので、ぜひ見てください。ちょっとマニアックな話もありますが、見てもらえるとうれしいです。

あと、今日の話はいろいろ細かく『プロフェッショナルIPv6』という本で書いてます。電子版は無料で、有料版の5,000円のやつとコンテンツはまったく一緒で、タダで読めるし、ダウンロードしたものを仲間とか友だちとか、知らない人にコピーで渡してもらってもぜんぜん問題ないライセンスになっているので、じゃんじゃん読んでもらって、かつコピーしてもらって、読んでもらえればと思います。

最後までご視聴、ありがとうございました。