第8回および第9回は、IPアドレスの割り当て方に関わる「クラス」および「クラスレス」という考え方を解説しました。今回は「クラスレス」の考え方が生まれるきっかけとなったIPアドレスの枯渇問題と、これを回避するために生まれた、「プライベートアドレス」および「NAT技術」について説明します。

「IPアドレスの枯渇問題」とは?

現在のインターネット技術を支えるTCP/IPプロトコルスイートの中でも、特に中心的な役割を担うプロトコルがIPであることは、これまで紹介してきました。

IPが世界中の機器から通信相手を特定するには、“インターネット上の機器をユニークに”識別できる「グローバルアドレス」が必要です。32ビットで約43億個の表現が可能なIPv4アドレスで、その役割を果たし続けることはできるでしょうか?

TCP/IPは元来、アメリカ国防総省の研究機関であるDARPA(Defense Advanced Research Projects Agency)が研究用ネットワーク「ARPANET」のために開発したものです。プロトコルの仕様が完成する1970年代の段階では、32ビットのアドレスで十分にARPANET上の機器を識別するという目的を果たせていました。しかし、インターネットの基盤技術として公開されて以降、TCP/IPの利用者が増え続けるにつれて、グローバルアドレスの消費も増え続けています。

1992年にIETF(Internet Engineering Task Force)が行った調査レポートの中で、「IPv4アドレスは資源の枯渇が近いため、将来的なグローバルアドレス不足の解決に向けた次世代IPの開発が早急に必要」との結論が発表されました

これを受け「より多くのアドレスを表現できる次世代IP(次回に紹介するIPv6)の本格的な開発」と、「次世代IPの仕組みが完成するまで、現行のIPv4アドレスを節約しながら使い続ける技術の開発」が並行して進められることになります。

後者の「IPv4グローバルアドレスを節約しながら使い続ける方法」には、4種類のアプローチがあります。

IPv4グローバルアドレスを節約しながら使い続ける4つのアプローチ

「使い切れないアドレス」を使い切る

第9回「IPアドレスとサブネットマスク」で紹介した「クラスレス」の考え方に基づいたIPv4アドレスの利用は、ネットワーク内のアドレスを無駄なく使い切ることに大きく貢献しています。

クラスレスとは、“サブネットマスク”を使い、全体32ビットのうち先頭から何ビット目までが「ネットワーク部」で、残り何ビットが「ホスト部」か、境界線をより柔軟に定めるというものでした。

この考え方により、参加する機器の台数に合わせて、ネットワークの大きさを柔軟に調整でき、使い切れないアドレスを大幅に減らすことが可能になりました。

本当に必要な機器を厳選する

インターネットの普及が本格化すると、組織ネットワークにもインターネットと同じTCP/IPプロトコルを採用することが浸透していきます。

その結果、図1のようにインターネットに接続しない、組織内の通信に限定されている機器にもグローバルアドレスを割り当てていたため、「インターネット上で機器をユニークに識別する」という本来の役割を果たしていないアドレスが大量に消費されていました。

  • 図1:組織内のネットワークとインターネットの接続

    図1:組織内のネットワークとインターネットの接続

そこで、組織内での利用に特化した「プライベートIPアドレス(プライベートアドレス)」の考え方が導入されます。1994年の発表当時、グローバルアドレスとして利用先が決まっていなかった範囲が定義されています。

  • 図2:プライベートアドレスとして定義されているアドレス範囲

    図2:プライベートアドレスとして定義されているアドレス範囲

しかし、プライベートアドレスは、世界のどこかに同じアドレスが存在する可能性が高いため、「ユニークに通信相手を特定する」という原則に反する懸念があります。そのため、プライベートアドレスを送信元IPアドレスとしてインターネット通信に用いることは認められていません。

  • 図3:プライベートアドレスは同じネットワーク/同じアドレスを生む懸念がある

    図3:プライベートアドレスは同じネットワーク/同じアドレスを生む懸念がある

プライベートアドレスの考え方が登場したことで「インターネット通信を行う機器には、グローバルアドレスを割り当てる」「そうでない機器にはプライベートアドレスを割り当てる」という区別がつけられるようになり、不必要なグローバルアドレスの消費を抑えられるようになりました。

プライベートアドレスを利用しながらインターネット接続する

インターネットを用いた情報の交換が増えるにつれ、「組織内のどの機器からもインターネットに接続できる」ことが求められるようになっていきます。

それを実現するには、インターネットへ接続する機器の台数と同じ数のグローバルアドレスを確保する必要がありますが、枯渇が懸念されている状況で大量のアドレスを新たに調達することは簡単ではありません。また、プライベートアドレスに設定している機器を、新しいアドレスに1台ずつ設定変更する作業にも大きな手間がかかります。

そこで、この問題の解決策として、プライベートアドレスで設定されたままの機器から、インターネットへの接続を可能にするNAT(Network Address Translation:アドレス変換)技術が登場しました。

NAT技術を実現するには、プライベートアドレスを用いるネットワークと、グローバルアドレスを用いるネットワークの境界に、ルータなどNATの機能を持つ装置を配置する必要があります。加えて、この機器にはあらかじめ、以下の2つの情報を設定しておきます。

  1. アドレス変換に用いるグローバルアドレス
  2. プライベートアドレスを使うネットワークの位置と、グローバルアドレスを使うネットワークの位置を機器のインタフェース単位で指示
  • 図4:NAT動作のための事前準備

    図4:NAT動作のための事前準備

両者のネットワークをまたがる通信が発生すると、NATを行う機器は図5のようなアドレスの変換動作を行います。

(1)プライベートアドレスが送信元である通信を受け取る
(2)インターネットに転送する際、送信元アドレス部分をグローバルアドレスへ置き換え
(3)置き換えた「プライベートアドレス」と「グローバルアドレス」の変換結果を記録
(4)インターネット側へはグローバルアドレスが送信元である通信を送り出す

  • 図5:NAT動作の概略(前半)

    図5:NAT動作の概略(前半)

その返信となる通信が届くと、図6のような処理を行います。

(5)グローバルアドレスを宛先とした返信が到着
(6)先ほどの(3)で記録した内容に基づいて宛先アドレス部分を置き換え
(7)置き替えたアドレスを宛先にした通信を、プライベートアドレス側のネットワークへ送り出す

  • 図6:NAT動作の概略(後半)

    図6:NAT動作の概略(後半)

アドレスの節約をもっと加速するNAT技術

3つ目のアプローチであるNAT技術では、インターネット通信を同時に行う台数に合わせた数のグローバルアドレスを変換用に確保する必要があります。

例えば、500台の機器を保有している組織でも、同時にインターネットへ接続する機器が100台程度であれば、100個のグローバルアドレスを確保する必要があります。こうすることで、400個のグローバルアドレスを節約できることになります。

しかし、近年のように、保有している500台の機器すべてが同時にインターネットへ接続することが一般的になった環境では、500個のグローバルアドレスを確保する必要があり、節約の効果が得られなくなっています。 

この問題の解決策として、PAT(Port-Address Translation)という技術が考案されました。「NAPT」や「IPマスカレード」とも呼ばれますが、すべて同じ技術を指しています。IPアドレスに加え、トランスポート層で用いる「ポート番号」(第13回で紹介する予定です)という値を組み合わせた通信の識別を行う、というものです。

  • 図7:ポート番号も組み合わせたPATの動作例(1)

    図7:ポート番号も組み合わせたPATの動作例(1)

例えば、図7で示すように、2台のPCがインターネットに接続する場合、PAT機能を持つルータは2台分の通信をポート番号「50001」と「60001」という値で区別します。そのうえで2台分の送信元プライベートアドレスを1個の送信元グローバルアドレス「100.1.1.1」グローバルアドレスへ変換し、その内容を記録として残します。

  • 図8:ポート番号も組み合わせたPATの動作例(2)

    図8:ポート番号も組み合わせたPATの動作例(2)

図8で示すように、それぞれの通信に対する返信は、どちらも同じ宛先グローバルアドレス「100.1.1.1」として到着します。変換内容の記録からポート番号の「50001」と「60001」という値の違いを見分けることで、PC1に対する返信なのか、またはPC2に対する返信なのかを識別し、それぞれの宛先プライベートアドレスへ変換します。

ポート番号は6万種類以上の区別ができる値のため、500台の機器すべてが同時にインターネット接続を行う場合でも、1個のグローバルアドレスですべての通信が区別できるようになります。その結果、499個のグローバルアドレスの節約につながります。

このような「組織内ネットワークの機器にはプライベートアドレス」を設定し、「NAT処理を行う機器のみグローバルアドレスを割り当てる」という手法は、皆さんの学校や職場に限らず、世界中のネットワークで広く採用されています。

まとめ

まとめると、以下の2つの方法でIPv4のグローバルアドレスは節約され、枯渇を回避しています。

・「クラスレス」の考え方に基づいた、サブネットマスク利用の工夫により、使い切れていないアドレスを減らす

・「プライベートIPアドレス」と「NAT技術」を組み合わせることで必要最小限の機器にアドレスを割り当てる

次回はグローバルアドレスの枯渇問題を解決するために開発された、新しいIPの仕組み【IPv6】について解説します。

著者プロフィール


船橋 譲(ふなはし ゆずる)


ネットワンシステムズ株式会社
ビジネス開発本部イノベーション推進部ネットワークアカデミーチーム所属
2005年ネットワンシステムズ入社。保守サービスの品質向上のためのエンジニア育成に携わったのち、現在は顧客向けの技術インストラクターとして勤務。インストラクター歴12年。CCIE認定を取得し、[主にネットワーク技術全般およびセキュリティ関連技術の研修を担当している](https://www.netone.co.jp/service/lifecycle/academy/)。シスコシステムズ社認定インストラクターとしてCCSI Excellence Awardを2年連続受賞。