IP通信とIPマスカレードの原理

From: 新居雅行 <msyk@locus.co.jp>
To: catv-internet@egroups.co.jp
Subject: IP通信とIPマスカレードの原理
Date: Mon, 14 Aug 2000 23:37:36 +0900

●●IP通信とIPマスカレードの原理

インターネットは世界中のコンピュータをつなぐネットワーク…もちろん、あとはどんなサービスがあるかとか、どうやればメールをおくれるとか、そういった知識を広げていけば、もちろん、インターネットを使いこなすことができます。しかしながら、ちょっと原理に向かって掘り下げて、インターネットについての知識を得て、ケーブルテレビ利用者の間で当たり前のように交わされる「IPマスカレード」についてどういったことなのかを理解できるようになってはいかがでしょうか。

●IPによる通信

インターネットという世界中のコンピュータをつなげてしまうネットワークの技術の根幹の1つに、IPというものがあります。Internet Protocolの略なので、インターネットの通信の基礎であることは当たり前と言えば当たり前かも知れません。いずれにしても、電子メールにしても、ホームページにしても、その土台となっているのはIPです。だけど、非常に基本的な部分なので、インターネットの楽しさまではIPではちょっと理解しづらいところですが、このIPの原理を説明しましょう。

通信というのは、一般的な見方をすれば、コンピュータ同士がデータのやりとりをするとか、コンピュータどうしで会話をするということになります。ある一方のコンピュータが、別のコンピュータに対してメッセージを送りあうのが通信と思えば いいでしょうか。もちろん、メッセージを送りあうためには、物理的な「電線」が どこかにつながっていなければなりません。最近のパソコンでは、Ethernetが当た り前になっており、最初から端子がついていて、あとはケーブルを買えばOKという のが平均的なところでしょう。端子がない場合には、一般的にはPCIカードか、あ るいはノートパソコンだとPCカードをつないで、ネットワーク端子を増設します。 10BASE-Tという規格のケーブルおよび電送が一般的ですが、同じケーブルを使いな がら、もっと高速な100BASE-Tも一般的になってきました。パソコンのネットワー ク端子から、ハブという中継機器を使ってネットワークをはり巡らされるのが一般 的です。(このあたりも興味ある話題ですが、IP通信の話に戻りましょう)

IP通信を理解するにあたって、とりあえず物理的に電線で繋がれているという状況 があるものと考えます。では、あるパソコンから別のパソコンにメッセージを送る 時に、単にメッセージを電線に流せばOKかというとそうではありません。もちろん、 どさーっとデータを流して…という手法も非常にローカルに低いレベルではやって いるのですが、世界中のパソコンがネットワークにデータを垂れ流すとえらいこと になりますね。そこで、IP通信の世界では、通常は「送信者」「受信者」「メッセー ジ(データ)」という構成のものをネットワークに流します。

ちょうど、郵便とか宅急便を思い出して下さい。宅急便は荷物に荷札を張ってあり、 そこに送信者、受信者を(ふつうは宛先と差出人ですが)書いてあります。それに 従って、荷物は届けられます。IP通信でもまっく同じ原理でメッセージのやりとり を行います。IP通信でも、宅急便や郵便と同じように、「窓口に持っていったら宛 先に届く」という線で、この面の深入りは行わないことにしましょう。郵便も、電 車に乗って行くかも知れないし、トラックかもしれません。宅急便もどこかで中継 してとか複雑な流通経路を経るのですが、これはインターネットではまさにルーティ ングの問題につながる部分です。しかしながら、ここでは話を単純化することにし ましょう。

さて、ここで、一般の郵便や宅急便だと、住所や名前を書きますね。同じように、 IP通信の世界でも、住所と名前を書きます。現実の世界の住所だと、国名、県名、 市町村名などが並びます。ではIPではどうしているのでしょうか。実は、非常に機 械的に、番号を割り振っています。それをIPアドレスと呼んでいます。具体的には、 2進数で32桁の数字を割り振ります。2進数とか32桁とか中途半端だと思うかも知れ ませんが、0か1かのコンピュータにとってはとっても都合のいい桁取りなんです。 じゃあ、0と1を32個並べるかというと、それだと人間が見て分かりづらいこともあ りますから、2進数8桁を1つの固まりとして、その固まりが4つ連続するものとして みると言うことをおこないます。1つの固まりは人間が分かりやすいように10進数 であらわします。このように、機械的な部分と人間が見て分かりやすいように記述 するということをもちあわせたのがIPアドレスです。例としては、192.168.0.1と いうふうなもので、これを2進数で表すと、11000000 10101000 00000000 00000001と なるわけです。まあ、プログラムをやる人間はこうした数字の置き換えは暗算の範 囲内ですけど、そうじゃない人に取ってはちんぷんかんぷんでしょう。でも安心し て下さい。とにかく数字で宛先のアドレスが記述されるということが重要です。

ところで、住所と名前と言いましたが、名前というのは、実はIPより上位の考え方 につながります。ここで簡単に説明しておきます。実社会でも、ある住所のところ に、何人もの人が住んでいるかもしれません。会社だったら、同じ住所にいくつか 部課があるでしょう。これと同じで、コンピュータの世界でもあるのです。IPアド レスで1台のコンピュータを特定できました。しかしながら、そのコンピュータで はいろいろな仕事をしています。たとえば、電子メールのやりとりをしているとか、 Webサーバであるかもしれませんし、実はクレジットカードの電子決済をしている かもしれません。こうした、コンピュータ内で働いているいろいろな機能のどれと メッセージのやりとりをするのかということが、郵便での住所と氏名の「氏名」に 当たるという具合なのです。技術的には「ポート番号」というもので指定され、こ れもやっぱり番号です。こうしたメカニズムもあって、複数のソフトウエアが、そ れぞれ協調してネットワークのメッセージのやりとりが行えるようになっているの です。

●メッセージはやりとりされる

コンピュータ同士のやりとりは、送り先のIPアドレス、送り主のIPアドレス、そし てメッセージ内容 で構成されることをこれまで説明しました。すると、メールを送る場合を考えると、 こうしたメッセージのやりとりが一方向的に行われると思うかも知れませんが、実 際にはそうとも言えません。IP通信の代表的なやり方は、あるコンピュータからメッ セージが送られ、それを受け取ったコンピュータがメッセージを戻すというやりと りが行われます。必ずしもそうではなく、たとえば、ストリーミング放送は放送を 受信しているときには一方から他方で垂れ流しなのですが、メールやWebは、行き と帰りのメッセージがある「やりとり」が行われています。Webだとその点は考え やすいでしょう。つまり、「あるページを見たい」というリクエストをWebサーバ に送ると、「これがそのページです」というわけでリクエストを出した側にメッセー ジとして戻します。もどされたデータを元に、ページを構成するのがWebブラウザ の役目です。ほんとうはもう少し複雑なのですが、だいたいこんなものです。メー ルだとちょっと考えにくいかもしれませんが、実際にはやり取りの中でメールの送 信や受信が行われています。

この「やりとり」ということを理解していないと、IPマスカレードについては一面 的にしか理解できないので、もう少し深入りしましょう。やりとりにおいて、リク エストを出す側は、一般には「クライアント」と呼ばれます。その一方でリクエス トを受け付けて結果を返す側は「サーバ」と呼ばれます。クライアントから送るメッ セージはIP通信ですので、リクエストの内容だけでなく、送り主、つまりクライア ントのアドレスと、受け側、つまりサーバのアドレスが含まれています。では、サー バの側ではどうするのでしょうか。単純に考えれば、クライアントから送られてき た送り主と受け側のアドレスを入れ替えて、それにリクエストに対する応答を付け 加えて、ぽーんと送りだせばいいということになります。

●NATとIPマスカレード

IP通信の基礎となっているのは、各コンピュータにつけられたIPアドレスです。実 はこのIPアドレスの多くの部分は、勝手に利用してはいけないことになっています。 しかるべき機関がIPアドレスを一元的に管理していて、インターネット内に重複し て同じアドレスが設定されることがないようになっています。だけど、その機関が 1台ずつのアドレスを管理していてはえらいことになってしまいます。そこで、一 定範囲のアドレスを、企業やあるいはプロバイダなどの団体に与え、その団体内で、 適当に割り振るということを行っています。ダイアルアップで接続した場合には、 そのプロバイダに割り当てられたIPアドレスの配給を受け、そのIPアドレスで通信 ができるようになっています。通常、ダイアルアップの場合はIPアドレスの配給は 自動的に行われるように、ソフトウエア(OSなど)が動作するようになっています。

それじゃあ、IPアドレスが1つしか使えないとなると、1台のパソコンしかインター ネットにつなげなくなってしまいます。だけども、そういった制約を突き破る方法 が考え出されました。一般には、NAT(Network Address Translation)と呼ばれる 方法です。ここで、ハードウエア的な構成は1通りに限らないのですが、一般的な 2つのEthernetの端子のあるタイプのパソコンを想定して説明を行います。このマ シンを「ルータマシン」と呼びます。もちろん、一方の端子はインターネットに繋 ぎます。そこではインターネットとして使えるIPアドレスを設定しますので、その パソコンからはWebサイトを参照するなどの一般的なインターネット作業ができる わけです。こちらを外向きのネットワークと呼子とにしましょう。もう一方のネッ トワーク端子からは、ハブを通じてたとえば100BASE-Tのネットワークがつながっ ていて、パソコンが何台かあるとします。こちらは内向きのネットワークとして呼 び、このネットワークは内部ネットワークと呼ぶことにします。しかしながら、そ のままでは内部ネットワークのパソコンからは、直接インターネットにつながって いないので、Webサイトを見ることができません。

ところで、こうしたインターネットに直接繋がっていないようなネットワークでも、 IP通信ができるようにということで、一般にはこうしたネットワーク内では、「プ ライベートアドレス」と呼ばれるIPアドレスを付けます。物理的にはインターネッ トと遮断されていれば、どんなアドレスを付けてかまわないのですが、ルータマシ ン経由で外部に出ることをこれから図るわけですので、外部に存在するアドレスを 付けてしまうと問題があります。従って、プライベートアドレスでつけるのが一般 的なのです。

プライベートアドレス:
192.168.0.0〜192.168.255.255
172.16.0.0〜172.31.255.255
10.0.0.0〜10.255.255.255

ちなみに、インターネットに接続できるアドレスのことを「グローバルアドレス」 と呼びます。

内部ネットワーク同士では、適当なプライベートアドレスを重複無しに付けておく と、その中ではIP通信ができます。ここで、内部からインターネットに出ていくこ とができるようにするために、ルータマシンに特別な動きをさせます。それは、内 部ネットワークのやりとりを外部に出すのですが、単に素通しするのは困ります。 というのは、内部ネットワークから投げられるメッセージは、プライベートアドレ スなので、そのままインターネットに持ち込んでも「分からないアドレス」としか 扱ってもらえないのです。そこで、ルータマシンは、

>送信先アドレス → そのまま
>送信元アドレス → ルータのアドレスに変換
>メッセージ内容 → そのまま

というふうに変換をして、インターネットにメッセージを放り投げます。ほんとう は、内部ネットワークの中の1台から出されたメッセージですが、あたかもルータ マシンから発したメッセージのように扱って、IP通信を問題なく行うようにするわ けです。ルータのIPアドレスは、インターネット通信ができる正しいアドレスなの で問題はありません。

そして、送信先から、リクエストに応じた応答が戻ってきます。この場合、送信先 はルータのアドレスになります。そこで、ルータマシンでは、上記のような変換を 行ったことをなんらかの方法で記録しておき、その記録に従って、

<送信先アドレス → 内部ネットワークのパソコンのアドレス
<送信元アドレス → そのまま
<メッセージ内容 → そのまま

という変換を行って、内部ネットワークに投げます。そうすることで、結果的にルー タマシンを経由して、内部ネットワークにあるパソコンでも、インターネットの世 界との通信ができるようになるという原理です。

これがNATの原理なのですが、内部ネットワークには複数台のパソコンがあります し、パソコンの中からたとえばFTPでダウンロードしながらWebサイトをアクセスす るかもしれません。こうした複雑な事情がからんだ状況でも動くNAT機能が実用上 は必要になります。それがNAPT(Network Address and Port Translation)という 規格です。アドレスだけでなく、ポートも考慮しての変換処理を行うという規格で す。NAPTを実現する代表的なものが「IPマスカレード」です。つまり、NATやNAPTは、 今まで説明した原理や規則の名前です。それを実現する機能をIPマスカレードと呼 んでおり、たとえば、Linuxではその機能をカーネルに統合しています。FreeBSDで は、natdというデーモンで変換処理を行っています。ただ、世間的にはNATの代表 としてIPマスカレードが存在するような感じにも使われ、さらにNATと言えばすで にIPマスカレードを指しているというのが一般的になっています。ちょっと用語的 には大雑把なのですが、実用上差し支えない範囲だと思います。

IPマスカレードの、マスカレードは仮面という意味です。つまり、内部ネットワー クからの通信であるにもかかわらず、ルータマシンからの通信であるかのように、 仮面をかぶってインターネットの世界に歩み出るような意味ではないかと思います。

IPマスカレードを経由してインターネット接続をした場合、たとえばWebサーバに とっては、内部ネットワークのあるパソコンからの通信であることは知る由もあり ません。つまり、内部ネットワークのどのパソコンからアクセスしても、ルータマ シンからアクセスしたようにしか見えないのです。WebでのCGIの経験のある方は、 違う人なのに同じIPアドレスで掲示板にメッセージを書いているような状況を見た ことがあるでしょう。これは、IPマスカレードを行っているか、同じような原理で Webプロキシを経由しているかのいずれかの状況であることが一般的です。

<例え話もやってみましょう>

IPマスカレードの原理を知るためにちょっと例え話をしてみましょう。

ある会社があって、いろいろな物品を通信販売で購入すると、買いに行く手間もな く、申込書に記入してファクスすれば次の日には宅急便で届くというサービスを積 極的に使っているとします。もちろん、申込書には、通信販売業者の宛先、発注し た人の社名や部署名や名前、そして注文品が書いてあります。いくつかの通信販売 業者を使っているかもしれません。(これは、発注がWebブラウザのアドレスにア ドレスを入れることとと対応付けられるでしょう。そして、注文品の配送はWebペー ジのデータがサーバからクライアントに送られるという状況に対応付けらるでしょう。)

こうして、この会社では物品の購入に通信販売を積極的に使うようになりましたが、 個別の荷物で配送されることや、いろいろな業者がからむことになって、必ずしも 効率が良くありませんでした。ある通信販売業者がそこに目を付けました。その会 社で、物品販売担当者を1人にして、その人からまとめて注文を送ってほしい、そ して注文品はその人にまとめて配送する。そうすれば、スピードアップと値引きに 応じようというわけです。

ここで人間のような柔軟な頭なら、いろいろとやるのですが、物品担当者は機械の ようなやつでした(ちょっとわざとらしい〜笑)。でも悪知恵は働きます。そこで こんな方法を思い付きました。

「各部署からの発注は、今まで通り、通信販売業者からもらった紙に、今まで通り 買いてほしい。ただし、物品購入担当者に送ってほしい。」

社内の人は、今まで通りでいいのだかと文句は出ませんでした。

しかしながら、物品購買担当者は、その注文用紙を集めて次のようなことをしてい ました。

  1. 注文用紙のコピーを取る
  2. 注文用紙の発注元のところに、その会社名と物品購買担当者の名前書かれたもの をべったりはりつける
  3. そして、注文用紙をまとめて通販業者に送る

……そして次の日

  1. 通販業者から、注文ごとに箱詰めされたものがどっさり物品購買者のところにやっ てくる  (彼はそれでも慌てない)
  2. 宛先は全部、物品購買担当者宛になっているが、内容に応じて、あらかじめコピー してあった注文用紙の「発注元」の部分を切り取って、宛先にはりつける
  3. あとは社内流通経路を使って注文した人のところに品物が届く

こうして物品購買担当者は、機械的に毎日注文をさばいていたのでした。会社の他 の人は、担当者がどんなやりかたをしているのかはとにかく気にもしなくて良く、 今まで通り注文書に注文を書けば、品物が届くという具合でした。また、会社とし ては、安く速く物品購入ができるので、ホクホクというわけです(みたいな)。 (つまり、ルータマシンでのNAT処理をやっているのが物品購買者だというわけで す。)

どうです? 理解していただけたでしょうか?

技術的な間違いなどがありましたら、MLで指摘していただければと思います。


←ケーブルテレビでインターネット・ホームに戻る