NATとは
NATという言葉は聞いた事があると思いますが、それが何であるかを知っている人は意外に少ないと思います。 ここでは、NATとはどんなもので、どこで使われているのか、などを説明したいと思います。 (ここでは説明のためにNATとNAPTを混同して使っています。)
身近にあるNAT
ADSLなどの接続形態が普及して、インターネットが一般的になると同時にNATという技術もずいぶん身近になっています。 今では、NAT機能はほとんどのSOHOルータ(ADSLルータ、ISDNルータ、その他の呼び方)に入っています。 家電屋さんなどに行って家庭用ルータやADSL機器の箱を見てみると大抵NATやNAPTという単語が書いてあるのを発見できると思います。
実は結構身近にあるNATですが、NAT(NAPT)が何者で何をしてくれるかを知っているでしょうか? おおまかに言うとNATには以下のような効能があります。
- 世界のIPアドレス不足を多少ペースダウンできる
- 家庭内から簡単に複数のパソコンをインターネット接続できる
- コンピュータウィルス(ワーム)から家庭ネットワークを守ってくれる
上記効能のリストを見ても「ふーん」と思うだけだと思うので、それぞれ順を追って説明をしたいと思います。
世界的なIPアドレスの不足
NATという技術はIPアドレスの不足という背景で生まれました。
現在のインターネットはIP version 4(IPv4)というプロトコルで動作しています。 (IPについての説明はこちらをご覧下さい。) インターネットに接続された全てのコンピュータには世界で一意な識別子がつきます。 インターネットに接続しているコンピュータ同士は、その一意な識別子を使って相手を識別して通信を行います。
その一意な識別子はIPアドレスと呼ばれます。 IPv4では、IPアドレスは32ビットで表現されています。 IPv4のアドレスは、32ビットなので、2の32乗種類のIPアドレスがあり得ます。 2の32乗は約40億になります。 インターネットの識別子であるIPアドレスは一意でなくてはならないので、32ビットのIPアドレスではインターネットに接続できるコンピュータの数は最大で約40億台ということになります。
インターネットを設計していたぐらい昔は、コンピュータといえばむちゃくちゃ高価なもので40億個と言えば無限だと思われていました。 また、実際には用途を限定したIPアドレス、マルチキャストアドレス、予備に取っといて使っちゃ駄目なIPアドレスなどがあって40億個使えるわけではありません。 さらに、途中経路のルータなどにもIPアドレスをつけなければいけなかったりもします。 もっと言うと、IPアドレスをつけるのは実はネットワークインターフェースでコンピュータではないので、一つのコンピュータに数個のIPアドレスが必要な事も結構あります。
上記プロトコル的な理由と、インターネットの爆発的な普及も重なり世界人口60億よりも少ない40億個のIPアドレスでは、いつかIPアドレスが足りなくなってしまうという事態が発生しました。 「どうにかしないといけない」と色々な人が考えました。 そこで出てきた案の一つがNAT(NAPT)です。
余談ですが、次世代インターネットプロトコルであるIPv6(IP version 6)のIPアドレスは128ビットあり、こちらは2の128乗で本当に無限と言える大きさです(2の32乗の4倍でなくて、2の32乗の4乗なので注意)。 技術者の中には、IPv6が本質的な解決でNATはその場しのぎの技術だから嫌いという人もいます。
IPアドレス不足を軽減するためのNAT技術
IPv4プロトコルでは、10.0.0.0〜10.255.255.255、172.16.0.0〜172.31.255.255、192.168.0.0〜192.168.255.255のアドレスとプライベートアドレスとして予約しています。 プライベートアドレスは、誰でも勝手に使って良いIPアドレスです。 (普通にインターネットで使われているIPアドレスはグローバルアドレスと呼ばれています。) ただし、このプライベートアドレスにはインターネットに直接接続しないこと、という決まりがあります。
このプライベートIPアドレスを活用してIPアドレスの不足を軽減しようというのがNAT案の発端でした。 「プライベートIPアドレスをつけたコンピュータを直接インターネットに繋げちゃいけないなら、間を取り持つ機械をはさんで間接的に繋げればいい」というのを実現するのがNATです。
プライベートアドレスをインターネットに直接つないではいけませんが、グローバルアドレスとプライベートアドレスの両方を持つ機器があってもかまいません。 言葉だけではちょっと解りにくいと思うので下の図を見てください。 下の図の中央にあるコンピュータは2つのネットワークインターフェースを持っていますが、片方がプライベートアドレスでもう片方がグローバルアドレスです。
上の図のような環境のポイントは、プライベートアドレスにより構成されるネットワークに複数のコンピュータを設置する事が出来る点です。 ただ、そのままでは多少不便で、下の図のように中央のコンピュータに一度ログインして、そこからさらにインターネットに向けて通信をしないといけません。
上の図では、一度中央のコンピュータにログインして、そこからさらにインターネットに対して通信を行わなければなりませんでしたが、NATはこれを自動的にやってくれます。 自動的というのは、ログインを自動的にやってくれるという意味ではありません。 NATは、下の図のようにアドレスの変換を自動的にやってくれます。 NATを使うと、プライベートアドレス空間に居る全てのコンピュータは、インターネットからは1台のコンピュータに見えます。 これは、NAT箱がプライベートアドレスからの通信を全部自分のIPアドレスに変換してしまうためです。
上の図のように、NATが自動的にプライベートアドレスを変換してくれるので、プライベートアドレス空間のユーザは何も考えずにインターネットとの通信ができます。 NATを使うことにより1つのグローバルIPアドレスで複数のコンピュータが同時にインターネットを使えます。 このように、1つのIPアドレスを複数台のコンピュータで共用できるのでIPアドレスの消費量が軽減できるというのがNATの特徴です。
ADSL接続(常時接続)とIPアドレス
ISP(インターネットサービスプロバイダ)は、各ADSL接続毎に1つのIPアドレスしかくれません。 IPアドレスが複数欲しい場合には別途高額な契約が必要になりますが、多くの人はそんな契約はしていません。 ですが、多くの人は複数台のパソコンを家からインターネットに繋げたいと考えています。 NAT技術を使えば、ISPから受け取るIPアドレスが一つでも複数台のコンピュータを家からインターネット接続できます。
NAT技術は、複数台のコンピュータのプライベートIPアドレスを全部変換して1つのグローバルIPアドレスのように見せてしまいます。 そのため、ISPから受け取るIPアドレスが1つだけでも家庭内の複数のコンピュータがインターネット接続できるのです。 ISPから見ると、通信量の多いユーザだなぁぐらいは思っても各ユーザがNATをしているかどうかはわかりません。 (通信内容を解析して、詳細に調べればわからなくはないでしょうが。) 現在、SOHOルータやADSLルータと呼ばれる接続機器のほとんどがNATをサポートしているのはこの利点があるためだと思われます。
外部攻撃からの防御
NATの利用方法によっては、外部からの攻撃を防いでくれるというおまけがついてきます。 これは、多くの場合、NATがプライベートIPアドレス空間からの通信だけを変換しているからです。
プライベートアドレス空間に居るコンピュータからはインターネット上のグローバルアドレスは一意に識別できます。 一方、インターネット側から見るとNATの向こう側に居るコンピュータを一意に識別できないだけでなく、プライベートアドレス空間があることすらわかりません。 インターネット側から見るとNAT箱のインターネット側のIPアドレス以外はわかりません。 そのため、インターネット側からNAT箱の向こう側に居るコンピュータに対して通信を開始することができません。
インターネットからNATの向こう側にいるコンピュータに接続ができないので、NATは結果としてワームなどの攻撃からコンピュータを保護してくれます。 ただし、NATはメールやWWW経由で感染するウィルスなど全てを防いでくれるわけではないので注意しましょう。 インターネットに接続しただけで、何もしないでいつの間にか感染するワームなどの攻撃を防いでくれるだけです。 (それでも結構うれしいですが。)
まとめ
ここでは、NATの概要とNAT技術が生まれた背景を何となく説明しました。 次は、NATの技術的な面を説明したいと思います。