前へ 1 2 3 次へ

Webサイト管理者のための2020年版“IPv6対応入門”第2回

IPv6アドレスの表記法から、特殊な意味を持つIPv6アドレス、ファイアウォール設定時の注意点まで

IPv6で使うアドレスは、IPv4とどこが同じでどこが違うのか

文●大塚昭彦/TECH.ASCII.jp 監修● 久保田 聡/日本ネットワークイネイブラー

  • この記事をはてなブックマークに追加
  • 本文印刷

 前回の第1回記事では、Webサイト管理者やアプリ開発者である読者に向けて、「いま『IPv6対応に向けて』IPv6を学ぶべき理由」を説明した。今回からは具体的に、IPv6の特徴と覚えておきたい重要なポイントを解説していきたい。

 その前にまず、本連載が目指すものはWebサイトやアプリの「IPv6移行」ではなく、「IPv6対応」であることを確認しておきたい。前回記事でも紹介したとおり、現在のインターネットはIPv4とIPv6が「共存」している環境であり、その状況は今後も長く変わらないだろう。したがって、IPv4のWebサイトやアプリをIPv6に「も」対応させる(IPv4/v6の両方で通信できるようにする)ことが、現時点では必要なのだ。

 また、IPv6という通信プロトコルはIPv4の後継バージョンであり、基本的な部分ではIPv4の考え方を多く引き継いでいる。そこで本連載では、読者にIPv4の基礎知識があることを前提として、主に“IPv4との違い”にフォーカスしながらIPv6の説明を進めていく。そのほうがより理解しやすく、「IPv6対応」への最短ルートになると考えるからだ。

IPv6アドレスはコロン(:)で区切り、16進数に変換して表記する

 IPv4アドレスは32ビット、IPv6アドレスは128ビットの数字列で示される。つまり「0」または「1」の数字が32個/128個並ぶわけだが、当然そのままでは人間には扱いづらく、誤読や誤入力の原因にもなる。そこで、人間にとってより簡素でわかりやすいIPアドレスの表記法が規定されている。

 IPv4アドレスの場合は、先頭から8ビットごとにピリオド(.)で区切り、10進数(000~255)に変換して表記する。一方でIPv6アドレスは、16ビットごとにコロン(:)で区切って、16進数(0000~ffff)に変換して表記するのが基本ルールとなっている(RFC4291)。以下に具体例を挙げよう。

IPv4アドレス、IPv6アドレスの例

 上記例のカッコ内は、表記を省略する前の形だ。IPv4アドレスでは、8ビットを表す数値が1ケタや2ケタならば先頭の「0」を省略できる。同じように、IPv6でも先頭の「0」を省略して「0db8」→「db8」や「0001」→「1」などと略記できる。

IPv6アドレス特有の略記法「::」にはいくつかのルールがある

 もしもIPv6の表記ルールがそれだけならば、上記のアドレスは「2001:db8:0:0:12:0:0:1」と表記されるはずだ。しかし、IPv6アドレスはコロンで区切った部分(フィールドと呼ぶ)が8つもあるので、人間が扱ううえではまだ長く間違いやすい。

 そこでIPv6の表記ルールでは、連続する複数の「0」フィールド(16進数で「0000」となる部分)をまとめて「::」に置き換え、省略してもよいことになっている。上述の「2001:db8::12:0:0:1」の場合、「db8」と「12」の間にある2つの0フィールドが省略され、「::」で置き換えられている。

 それならば、後半にある(「12」と「1」の間にある)0フィールドも、同じように「::」で省略すればよいのではないか、と疑問に思われるかもしれない。だが実は、「::」による省略は1カ所のみというルールもある(そもそも複数箇所を省略すると、その間にあるフィールドが何番目のものかがわからなくなる)。

 これも含めて、「::」による略記には次のような統一ルールが提案されている(RFC5952)。

●「::」に置き換えて省略できるのは「1カ所」のみ
●「::」に置き換えられるのは「連続する複数」の0フィールドのみ
●連続する0フィールドが複数箇所にある場合は「最も長い」箇所を省略する
●省略可能な複数0フィールドの長さが同じ場合は「前方の」箇所を省略する

 そのほかに「16進数のアルファベットは小文字で表記する」というルールも提案されている。大文字アルファベットと数字の組み合わせだと、「0/D」や「8/B」を見間違えやすいからだ。

IPv6アドレス「2001:0db8:0000:0000:0012:0000:0000:0001」を略記する際に適用されているルール

 当初はなかったこの表記ルールが追加提案された背景には、1つの同じIPv6アドレスがさまざまな形で表記できてしまうことで、ITオペレーションの現場で混乱が生じるという問題があった。

 たとえば、ホスト(サーバーやPC)のIPアドレス一覧をスプレッドシートやテキストファイルで管理している現場は多いが、管理者ごとに異なる表記法でIPv6アドレスを書き込んでいたら、検索する際などに余計な手間がかかり、場合によっては登録済みのホストを見落としてしまう可能性もある。また、サーバーやアプリが異なる形のIPv6アドレスをアクセスログに出力していたら、それぞれを付き合わせてパース(分析)する作業も大変だろう。

 この表記統一ルール(RFC5952)は、あくまでも「推奨される」表記法(略記法)という位置づけであり、その他の表記法も許容はされている。ただし、オペレーション上のメリットを考えれば、この統一ルールにのっとって表記するよう心がけておくほうが得策のはずだ。またアクセスログなどを出力するアプリを開発する場合も、人間向けのログならばこのルールに従って表記を統一するのが良いだろう。本稿でも、以下では原則としてこのルールにのっとって表記を行う。

 ちなみにこの統一ルールでは、TCP/UDPポート番号の表記法も提案されている。IPv6においても、IPv4と同じようにアドレス末尾に「:ポート番号」を付けて表記できるが、IPv6の場合はフィールド区切り記号が「:」のためまぎらわしい。そこで、ポート番号を付ける場合はIPv6アドレスを「[ ]」で囲うことが推奨されている。

IPv6アドレスでポート番号を指定する場合に推奨される表記法

前へ 1 2 3 次へ

過去記事アーカイブ

2022年
01月
02月
03月
04月
05月
2021年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2020年
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2012年
02月
2011年
05月
07月
2010年
08月
09月