まず基本的用語の定義(^_^;;)
インターフェースをまたいで、どこへ転送したら良いのかとかってゆーのを判断して、送るコトをルーティングってゆーのね。
で、そのルーティングをするモノが、ルータと。
逆にインターフェースをまたがないで転送する場合にはルータぢゃないらしひ。(当然か(^_^;))
一応書いておくと・・・。
「ルータ」って製品があるけど、あれはルーティングするコトに特化した機械で、別に余ってるパソコンでルーティングするソフトウェアを動かしておけば、それでも出来るのです。
# ってゆーか、後者のが本来の姿な気がするけど(^_^;)
個人的には、後者のがより柔軟なカスタマイズが出来るから好き☆
(しかも安上がりだし)
まぁ、ルータって言っても使い道はいろいろでプロトコル変換とかまでしちゃうよーなのもあるみたいだけど、ココでわ最初に書いた通り、自宅や SOHO みたいな小規模ネットワークを対象としてるから、NAT (Network Address Translator) とか NAPT (Network Address Port Translator) とかってゆー技術を使ってアドレス変換をして、プライベート IP アドレスを用いてるネットワーク内から適切なインターネット上の目的地に着けるってゆーよーな、そこらで売ってるルータとかがしてるよーなコトを説明しよーかな、と。
最初に言った定義をそのまま使えば、内部の個人的なネットワークのインターフェースと、インターネットにあたる外部のネットワークのインターフェースをまたいでるルータなワケね(笑)
ちなみに NAT ってゆーのは、RFC1631 で。
NAPT ってゆーのは、RFC2663 で決められてるから、詳細を知りたいヒトはそっちを読むと良いかもなのです。
さて、アドレス変換って何のアドレスを変換するかって、さっきから書いてるけど「プライベート IP アドレス」と「グローバル IP アドレス」の変換をするワケ。
プライベート IP アドレスのままぢゃ、外(インターネット)には出られないってゆーのは既に説明したハズ。
とは言え、NAT は単純にアドレス変換をするだけ(192.168.0.1 を 210.159.86.108 に・・・とか)だから、1 つのプライベート IP アドレスにつき 1 つのグローバル IP アドレスを使っちゃうワケです。
# RFC2663 によれば、この形式を Basic NAT ってゆーらしいけど。
そーすると例えば、家族でそれぞれのコンピュータから同時にインターネットに接続したいけど、モデムは一台だし、電話回線も一本。プロバイダも当然、一箇所としか契約してないからグローバル IP アドレスは 1つってときは困るでせう。
だから、上のよーな環境だと、NAPT ってゆー技術(Linux の IP Masquerade なんて有名な NAPT を使ったモノだし、FreeBSD の natd にも実装されてるハズ)や、NATe (Network Address Translator extension) ってゆー NEC が NAT を独自に拡張したとかゆー技術を使ってする必要があるの。
で、なんでそれだと可能かって、そのままポートを THRU させずに、いろいろとうまい具合にやるらしひ・・・。
(詳細が知りたいヒトは、こんなトコ読んでないで、もっと難しいのをどぞ(笑))
まぁ、とにかく NAPT や NATe を使えば 1つのグローバル IP アドレスで、複数のプライベート IP アドレスを持つコンピュータから同時にインターネットに繋ぐコトが出来る、と。
# 正確に書けば、インターネットに限らず、ルータより外のネットワークと、だけど(^_^;)
まぁ、ルータとはそんな感じなのです(爆)
で、ちょっち補足だけど・・・。クライアントマシン(繋ぐ側)は、デフォルトゲートウェイってゆー、まづどこに向かって送信するのかってゆーのにルータのアドレスを設定しとけば、ルータに向かってパケットを投げてルータを通って(アドレスがグローバル IP アドレスに変換されて)外へ飛び出して行ったり、外から戻ってきたりするのです。
もちろん、変換されるアドレスってゆーのは、「送り主」のアドレスね。
さもルータが送信したよーにみせかけて、返事をルータが受け取るとルータは内部ネットワークのホントにそれを送ったヒトに取り次ぐって感じ。
ちょっち知ってるヒトは「プロクシと何が違うの?」とか思うかもだけど、明示的にルータにログインしたりしなくて良いのが特徴なの。