ここでは、ブロードバンドルータなどのようにインターネットと接続する機器で使用されるポートアドレス変換について説明します。
ポートアドレス変換は、主に以下の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対複数でアドレス変換が出来るんだ。 下の図を見てみそ(..) |
| う~ん、よく分かんない。。。(@_@) |
| この図には説明が必要だね。 まず、ホスト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・☆) 右側から左側に入れないということは、インターネットから内部ネットワークを守っていることになりますね! |
| そうそうそう( ̄ー ̄)( ̄ー ̄)( ̄ー ̄) |
| しかも左側から右側には通信できるわけだから、まるでマジックミラーのように都合の良い構成になりますね! |
| そうそうそうそう( ̄ー ̄)( ̄ー ̄)( ̄ー ̄)( ̄ー ̄) つまり、こんな感じね(..) |
| せんぱい! PATって便利ですね~(^ー^*) |
| うんうん、そりゃよかったね~( ´ー`) もう一度PCとルータを貸してあげるから、忘れないうちにラボで検証してみそ。 |
| わっかりました。 行ってきま~す(たったったっ。。。。) |
| ふぅ、行ったか。。。 俺にも、あんな時代があったな~(しみじみ) |
以上でアドレス変換の話は終わりです。
引き続き、「ネットワーク機器によるアクセス制御」をご覧ください。。。
ネットワークセキュリティ関係者の部屋 > ネットワークセキュリティ実践劇場 > NAT機器によるポートアドレス変換