親しい友人だけが集まるパーティならTシャツに短パンというラフな服装も許される。でも,仕事の顧客などが集まる正式なパーティとなると場違いである。場合によっては「作法知らず」と後ろ指を指されかねない。ネットワークの世界では,このような作法知らずは後ろ指を指されるどころか,思わぬトラブルを招く。

 今回取り上げるのは,NATナットやIPマスカレードとして知られる「アドレス変換」という技術だ。「マスカレード」は英語で仮装という意味。アドレス変換とは,送受信パケットに書かれたIPアドレスなどを,ルール違反にならないように着替えさせる技術である。

作法に合わないと通信できない

 社内ネットとインターネットは違うネットワークである。インターネットでは,接続する一人ひとりがほかと重複しないIPアドレスを持っていなければいけない。これはある種の作法だ。この作法に反する人がいると,通信ができなくなってしまったりする。

 重複しないアドレスを持っていなければいけないのは,社内ネットでも同じだ。ただ,社内ネットの場合は重複してはならない範囲が,社内に限られることが多い。社内ネットは,この範囲で作法を守っていれば,ほかは気にしなくてもよいのだ。

 でも振り返ってみると,社内ネットにつながっているパソコンも,家で組んだLANにつないだパソコンも,192.168.0.1のようなプライベートIPアドレスだったりする。もう,これだけでインターネットの作法に反している。

 それでも,社内ネットや家庭からインターネットにアクセスできるのはなぜだろうか。実は,ここにアドレス変換が関係してくる。

作法の違うネット同士をつなぐ

 あるネット内でのみ通用していればよかったIPアドレスを,全世界で通用する作法に合わせたIPアドレスに着替えさせる。これがアドレス変換の役割である。着替えとは,つまり送信元やあて先のIPアドレスを書き換えることだ。家庭や社内ネットからインターネットへアクセスするには,今や欠かせない重要な技術——それがアドレス変換なのである。

 このアドレス変換は,ルーターなどが備え,異なるネットワークの境界に設置される。ここでLANの作法に合ったIPアドレス(プライベート)からインターネットに合わせたIPアドレス(グローバル)に書き換える。

 アドレス変換を処理するルーターは,IPアドレスを着替えさせるためのクロークのようなものと言える。

少ないアドレスを共有させる

 ユーザーの立場から見ると,アドレス変換には利点も多い。

 最大の利点は,インターネット接続に必要なグローバルIPアドレスの共有だ。ダイヤルアップ接続などの低価格なインターネット接続サービスを利用しているユーザーは,通常1個のグローバルIPアドレスしかプロバイダから割り当ててもらえない。このままだと,同時にインターネットへアクセスできるのは一人だけになってしまう。

 ここでIPマスカレードを使えば,複数のパソコンが1個のグローバルIPアドレスを共有して,同時にインターネットへアクセスできる。

 また,IPマスカレードを使うことで,外部からの不正なパケットをLAN内に通さないこともでき,セキュリティの向上にも役立つ。IPマスカレードをセキュリティ機能としてとらえているユーザーがいるくらいだ。準備編では,なぜIPマスカレードがこのように言われているかを含めて,アドレス変換の基本的なしくみを確認しよう。

「アドレス変換問題」を克服する

 このようにLANとインターネットをつなぐアドレス変換は,今のネットワークには欠かせない重要な技術である。だが,問題もある。アドレスを途中で変換してしまうと,動かないアプリケーションが出てくるのだ。IP電話やネットワーク・ゲームなどである。これは,ちまたで「NAT越え問題」とか言われる。ここでは「アドレス変換問題」と呼ぶことにしよう。

 この問題に対してルーターは,さまざまな解決策を用意している。複数の解決策があるのは,どんな問題にも対応できる決定打がないからだ。ただ,どうして問題を起こすのか,その解決策にはどんなものがあるのか,といったことがわかれば,自分が使いたいアプリケーションに最も有効な対策がわかる。攻略編では,このようなアドレス変換問題の原因と,それを解決するためのさまざまな方策について,詳しく探っていこう。

準備編
1対1変換のNAT
共有できるIPマスカレード

 攻略編に入る前に,アドレス変換の基本であるNATとIPマスカレードのしくみをじっくりと確認しておこう。

 NATとIPマスカレードを同一視して語られることもあるが,技術的に見ると少し違う。この準備編では,アドレス変換のカラクリを解き明かし,NATとIPマスカレードの違いを確認していこう。

 アドレス変換は,IPアドレスの体系が違うネットワーク同士をつなぐ。そのカラクリは実は単純で,アドレス変換を処理するルーターが送受信パケットのIPアドレスなどを機械的に書き換えるだけである。パケット中でIPアドレスの情報があるのはヘッダー部分だから,ネットワークの境目にあるルーターが,この部分を書き換える。

 ただ,ルーターが単にアドレスを書き換えているだけだと,返信されてくるパケットを正しい送信元に転送できない。そこで,ルーターは書き換えた前後のアドレスの対応関係を記録する。この記録する内容の違いが,NATとIPマスカレードの違いであり,それによって使い勝手も異なってくる。

図1 アドレス変換の基本動作
LAN側パソコンから送出されたパケットのIPヘッダーにあるプライベートIPアドレスを,ルーターが持つグローバルIPアドレスに書き換える。これがNATだ。

IPアドレスを書き換えて,覚える

 LAN側にプライベートIPアドレスAを持つパソコンがあり,ここからインターネット上のグローバルIPアドレスXを持つサーバーと通信する場合を考えてみよう(図1[拡大表示])。インターネットにアクセスするには,パソコンAにも全世界でユニークなグローバルIPアドレスが必要だが,グローバルIPアドレスはルーター(アドレスはG)にしか割り振られていない。

 このとき,パソコンAからXに向けた送信パケットのIPへッダーには,送信元がA,あて先がXと記される。ルーターは,このパケットが通過する際に,ヘッダーから送信元IPアドレス(A)を読み出し,これを自分自身に割り振られているグローバルIPアドレス(G)に書き換える(1)。さらに,ルーターは送信元アドレスをAからGに書き換えたことを記録しておく(2)。

 これでIPヘッダーの書き換えは完了し,パケットはインターネット側に転送される。インターネットへ出て行くパケットからは,Aのアドレスはなくなり,あたかもブロードバンド・ルーターがXに向けて送信したかのように見える。

 これを受信したサーバーXは送信元はルーターGだと思うので,返信パケットをGあてに返す。

 このままでは,ブロードバンド・ルーターで通信が終わる。そこでブロードバンド・ルーターは,内部に覚えているアドレス書き換えの対応表を参照して,受信パケットのあて先IPアドレスを自分あてからAあてに書き換えて(3),LAN側に転送する。これで,送信パケットはインターネット上の正しい相手に届き,返信パケットはLAN側の正しい送信元に戻ってくる。

 イントロ編で「アドレス変換を処理するルーターはクロークのようなものだ」と例えたが,そのココロがここまで読み進むと実感できるだろう。LAN側のIPアドレス(衣服)を脱がせて,インターネット向けのIPアドレスに着替えさせ,脱いだ服を預かっておく。そして戻ってきた(返信パケット)ときに,LAN向けのアドレスに再度着替えさせるのだ。

 実は,この一連のIPアドレス変換のしくみがNATである。