*NAT機器によるポートアドレス変換*


ここでは、ブロードバンドルータなどのようにインターネットと接続する機器で使用されるポートアドレス変換について説明します。
ポートアドレス変換は、主に以下の2つの目的で使用されます。

以下、2人の会話をご覧ください。


後輩 せんぱ~い (^ー^*)
先輩 ん、どうした~?
後輩 ラボでNATの検証やってみました。機器によるのかもしれませんけど、そんなに設定は難しくないですね。
はい、PCとルータをお返しします。
先輩 おっ、たのもしいね~(・ω・)b
ちゃんと、思ったように動いた?
後輩 はい、動きました~ヽ( ̄o ̄)ノ
でも、1つ気になることがあるんですけど。。。
先輩 んっ?
後輩 家でインターネットに繋ぐとき、家ではブロードバンドルータの下に複数の端末が繋がっているんですけど、NATの設定なんてやってないのに動いてるんですよ。あれは何でなんでしょう?
先輩 あぁ。それは、ブロードバンドルータがインターネットに接続することを想定して作られているので、わざわざユーザが設定しなくても勝手にやってくれるんだよ。
後輩 ふむふむ(・_・)
でもでも、プロバイダさんに繋いだときにもらえるIPアドレスって、普通は1つだけですよね?
先輩 そうだね。
一般用の普通の契約なら、繋ぐたびに適当なIPアドレスが1つだけ割り当てられるはずだよ。
後輩 えっ、繋ぐたびにIPアドレスが変わるんですか? ∑( ̄Д ̄;)
それじゃNATの設定が出来ないし、だいいち2台以上の端末が接続できないんじゃ。。。?
先輩 あぁ。それは、「PAT」を使っているからだよ。
後輩 ぱ、「ぱっと」を使ってる?
それって、「ふんわりガード」みたいな感じですか?(´∇`*
先輩 な、何を勘違いしているんだ?(;゚д゚)
「PAT」というのは、「Port Address Translation」の略だよ。他にも「NAPT」とか、「IPマスカレード」とか言うんだけど。
後輩 で、ですよね~、あははヾ(´▽`;ゝ
それで、そのPATって言うのはNATと何が違うんですか?
先輩 NATのところでは1対1と説明していたけど、PATは1対複数でアドレス変換が出来るんだ。
下の図を見てみそ(..)

NAT図4

後輩 う~ん、よく分かんない。。。(@_@)
先輩 この図には説明が必要だね。
まず、ホストAがホストBのポートbbbbに対して通信を開始すると、、、。
後輩 ホストAは、1024番以上の空いているポートを送信元ポート番号として割り当てます。
この図だと、aaaaのところですね?
先輩 そう。で、PAT機器がパケットを転送するときに、送信元IPアドレスとポート番号の両方を変換するんだ。
後輩 そうすると、ホストBから見ると「X.X.X.X」というホストの「xxxx」ポートからパケットが来たように見えるわけですね。
先輩 そのとおり。パケットを戻すときは、今の動きが逆になるだけだ。ちなみに、一般的には1対1の変換をNATと呼び、1対複数の変換をPATと呼ぶ傾向があるけど、どちらもアドレス変換には違いないから、両方まとめてNATと呼ぶ場合もあるね。(o・ω・o)b
後輩 うーん。
今の話は分かったんですけど、2つ質問がありまーす (^o^)/
先輩 ん?
後輩 PAT機器が割り当てた「xxxx」というポート番号は、どうやって決めるんでしょう?
先輩 あぁ、これは新しいホストまたはポート番号で通信が始まるたびに、PAT機器がランダムに1024番以上の未使用ポートを割り当てるんだよ。だから、ユーザは単に「PATする」という設定をするだけでイイんだ。
後輩 なるほど~(・_・)
あと、さっきの話のようにグローバルIPアドレスが固定じゃない場合は、どうやって「X.X.X.X」を設定するんでしょう?
先輩 これはどんな機器でも出来るというわけじゃないけど、ほとんどのPAT機器は「自分のインターフェースのIPアドレスでPATする」という設定が出来るので、ユーザがIPアドレスを固定値で設定しなくても勝手に認識してくれるんだよ。
後輩 へぇ~(*´ー`)/∩
へぇ~(*´ー`)/∩
先輩 PATの仕組みは理解してもらえたかな?
後輩 はい、よく分かりました。つまり、NATのようにIPアドレスだけを使って対応付けするのではなくて、IPアドレスとポート番号の組み合わせで対応付けするから、1対複数の変換が可能ということですね。
先輩 そう( ̄ー ̄)
さっきの図だと、「A.A.A.A:aaaa」と「X.X.X.X:xxxx」が対応していることになるね。
後輩 あっ!(・0・☆)もしかして、ポート番号は65535番までだから、xxxx=65535-1023=64512個の対応付けを持てるということになるんですか?
先輩 実際にはPAT機器自身もポート番号を使っているし、もう少し減ると思うけどね。実際に試したことはないけど、考え方は合っていると思うよ。
後輩 そっか~。
でもこれで、家で複数の端末からインターネットに接続できている理由が分かりました。
先輩 うんうん、そりゃよかったね~( ´ー`)
でも、最後に1つ気にしなければいけないことがあるんだ。
後輩 えっ、なにか裏があるんですか?
まさか、今さら「全部ウソぴょ~ん!ヽ(●´Д`●)ノ」なんて言うんじゃ。。。?
先輩 なんじゃそりゃ?(^-^;
さっきの質問でも出ていたけど、図の中の「xxxx」というポート番号は通信が始まるたびに割り当てられると言ったよね?
後輩 はい、そうでした。
先輩 つまりこのポート番号は、PATが必要となる通信が開始されるまで開かないよね?
後輩 通信が始まるまでは値が決まらないわけだから、そりゃそうですよね。
先輩 従って、PATは一方向のみで使用できるアドレス変換、ということになるんだ。
後輩 そっか。さっきの図だと、ホストBはホストAからの通信に対して戻りのパケットを返すことは出来るけど、ホストAに対して通信を開始することは出来ないんですね。
先輩 そうそう( ̄ー ̄)( ̄ー ̄)
でも、それは決して欠点ではないんだよ。
後輩 (?_?)
と言いますと?
先輩 仮に、図の左側が内部ネットワークで、右側がインターネットだとしたら、、、。
後輩 。。。そっか!(・0・☆)
右側から左側に入れないということは、インターネットから内部ネットワークを守っていることになりますね!
先輩 そうそうそう( ̄ー ̄)( ̄ー ̄)( ̄ー ̄)
後輩 しかも左側から右側には通信できるわけだから、まるでマジックミラーのように都合の良い構成になりますね!
先輩 そうそうそうそう( ̄ー ̄)( ̄ー ̄)( ̄ー ̄)( ̄ー ̄)
つまり、こんな感じね(..)

NAT図5

後輩 せんぱい!
PATって便利ですね~(^ー^*)
先輩 うんうん、そりゃよかったね~( ´ー`)
もう一度PCとルータを貸してあげるから、忘れないうちにラボで検証してみそ。
後輩 わっかりました。
行ってきま~す(たったったっ。。。。)
先輩 ふぅ、行ったか。。。
俺にも、あんな時代があったな~(しみじみ)

以上でアドレス変換の話は終わりです。
引き続き、「ネットワーク機器によるアクセス制御」をご覧ください。。。

ネットワークセキュリティ関係者の部屋 > ネットワークセキュリティ実践劇場 > NAT機器によるポートアドレス変換