|
|
Part2 準備編---1対1変換のNAT,共有できるIPマスカレード
出典:日経NETWORK 2002年9月号
54ページより
(記事は執筆時の情報に基づいており、現在では異なる場合があります) 攻略編に入る前に,アドレス変換の基本であるNATとIPマスカレードのしくみをじっくりと確認しておこう。NATとIPマスカレードを同一視して語られることもあるが,技術的に見ると少し違う。この準備編では,アドレス変換のカラクリを解き明かし,NATとIPマスカレードの違いを確認していこう。 アドレス変換は,IPアドレスの体系が違うネットワーク同士をつなぐ。そのカラクリは実は単純で,アドレス変換を処理するルーターが送受信パケットのIPアドレスなどを機械的に書き換えるだけである。パケット中でIPアドレスの情報があるのはヘッダー部分だから,ネットワークの境目にあるルーターが,この部分を書き換える。 ただ,ルーターが単にアドレスを書き換えているだけだと,返信されてくるパケットを正しい送信元に転送できない。そこで,ルーターは書き換えた前後のアドレスの対応関係を記録する。この記録する内容の違いが,NATとIPマスカレードの違いであり,それによって使い勝手も異なってくる。 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側の正しい送信元に戻ってくる。 Part1のイントロ編で「アドレス変換を処理するルーターはクロークのようなものだ」と例えたが,そのココロがここまで読み進むと実感できるだろう。LAN側のIPアドレス(衣服)を脱がせて,インターネット向けのIPアドレスに着替えさせ,脱いだ服を預かっておく。そして戻ってきた(返信パケット)ときに,LAN向けのアドレスに再度着替えさせるのだ。 実は,この一連のIPアドレス変換のしくみがNATである。 NATでは同時に複数が利用できないNATを使ってIPアドレスを書き換えることで,IPアドレス体系の違うネットワーク同士でも通信できるようになった。しかし,NATには限界がある。LAN側にある複数のパソコンから同時にインターネットへアクセスできないのである。例えば,パソコンAがNATを使ってインターネットにアクセスしている最中は,ほかのパソコン(例えばB)がインターネットへ出て行けない。 これは,ルーターがNATを処理するときに記憶する対応表がAとXの1対1の表であるためで,1個のグローバルIPアドレスをLAN側の1台のパソコンが占有してしまうからである(図2)。 NATを使って複数のパソコンからインターネットへアクセスさせるには,LAN側にあるパソコンの数だけグローバルIPアドレスが必要になる。しかし,ダイヤルアップ接続や低価格なADSL接続サービスでは,プロバイダからグローバルIPアドレスが1個しか割り当ててもらえない。 IPアドレス以外の情報を使うこの制限をなくし,「一つのグローバルIPアドレスを複数のパソコンで共有できるようにしよう」という考えのもとで考案されたのが,「IPマスカレード」というしくみである。キモはIPアドレスだけでなく,ポート番号という別の情報も書き換えて,書き換え前後の情報を記録することにある。 ポート番号とは,IPの上位レイヤーに当たるTCP/UDPのヘッダーに記述される情報で,コンピュータ上で動作するアプリケーションやサーバー・ソフトを特定するための番号である。 もう少し具体的に言うと,送受信されるIPパケットのデータ部分には,TCP/UDPパケットがすっぽりと収まっている。ポート番号は,このTCP/UDPパケットのヘッダー中に書かれ,通信に使用するアプリケーションが起動するたびに,ほかのアプリケーションと重複しない番号が割り振られる。例えば,1台のパソコン上でWebブラウザのウインドウを何個も開くと,それぞれのウインドウに対して別々のポート番号が割り振られる。 なお,TCP/UDPヘッダー中に書かれるポート番号もIPアドレスと同じように,送信元とあて先ポート番号がある。Webアクセスの場合,あて先ポート番号は80番に固定されるが,送信元のポート番号は1024〜65535の任意の数値が割り当てられる。
>>ポート番号も書き換わる
![]() 連載新着連載目次へ >>
|
読みましたか? 〜 未読記事をご紹介 |