NATとIPマスカレード
ISDN ルータやファイアーウォールを設置したような環境では、インターネット側にグローバルアドレス、ローカル側にプライベートアドレスを利用することが一般的になっています。この時、ローカル側からインターネットにアクセスしようとしても、プライベートアドレスを利用しているためインターネットへルーティングが行われません。そこで、インターネットへアクセスするためにプライベートアドレスをグローバルアドレスへ変換しなければなりません。その変換を行う仕組みが NAT や IP マスカレードと呼ばれるものです。
NAT (Network Address Translation)
NAT(Network Address Translation)は、IPヘッダ内の始点アドレスと終点アドレスの変換を行います。アドレスの変換は、ひとつのプライベートアドレスに対し、ひとつのグローバルアドレスを割り当てます。そのため、インターネットにアクセスするノード分のグローバルアドレスを用意しなければなりません。
IP Masquerade (IPマスカレード)
IPアドレスを変換する際に、ポート番号も変換する仕組みで Linuxの実装をIPマスカレードといいます。実際は NAPT(Network Address and Port Translation) と呼びます。IPマスカレードは、複数のプライベートアドレスをひとつのグローバルアドレスに割り当てます。IPマスカレードでは、IPアドレスだけではどのプライベートアドレスから来たパケットなのか判断できないので、IPアドレスとポート番号を対応させることでパケットの対応づけをしています。
しかし、IP マスカレードにはいくつかの問題があります。
インターネット(グローバル)側からのアクセスが出来ない
NATなら、アドレス変換が1対1なのでインターネット側からアクセスしてもどのホストへ転送すればよいか判別できるが、IPマスカレードは1対多であるためどのホストへ転送すればよいか判断できない。ICMP(Internet Control Message Protocol) は利用できない
ICMPは、ポートの概念がないため使用できない。しかし、多くのルータは pingはサポートしている。rsh系のコマンドやlprなどは利用できない
クライアント側のポート番号が WELL KNOWNポートの範囲内にあることを要求してくるプロトコルでは、ポート番号を変更してしまうIPマスカレードを利用することは出来ない。
静的IPマスカレード
静的IPマスカレードとは、IPマスカレードの変換テーブルをあらかじめ固定で登録しておくことで、従来IPマスカレードでは不可能だったインターネット側からのアクセスを可能にするものです。
テーブルへは、以下の三つの情報をもとに登録します。
プライベートアドレスホスト
プロトコル(TCP or UDP)
ポート番号