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