• 締切済み

NATルータの仕組みについて質問です。

NATルータの仕組みについて質問です。 NATルータでは、NAT変換テーブルというのを用いて、プライベートアドレスとグローバルアドレスを変換していると本で読んだのですが、NAT変換テーブルは、送信したときにルータで変換対を作り、受信時にその変換対を用いてグローバルアドレスをプライベートアドレスに変換しているんですよね? なら、NAT変換テーブルができていない変換対の送り先にパケットを送ろうと思った場合、ルータでは、どのプライベートアドレスに変換したらよいかわからなくなってしまうんではないでしょうか? 実際の仕組みはどうなっているかわかる方、宜しくお願いします。

みんなの回答

回答No.3

#1,#2さんの書かれている説明はNATではなく、NAPT(もしくはIPマスカレードやポートフォワード)の説明ではないかと思います。 確かに、個人で使用する様なBBルータ等の場合は、NAPTの方が一般的ですが、本を読んでいるということですので、一般的なNATの説明がほしいのではないかと。 送信したときに、変換対を作成するNATは動的NATと呼びますが、質問内容の通り、送信するときに初めて変換テーブルに登録するので、それよりも前に受信しようとしてもできません。 なので、プライベートネット側で何らかのサービスを行う場合、動的なNATではなく、静的NATと呼ばれる、あらかじめ決められたIPアドレスの変換対を登録しておきます。 そうすることで、グローバル⇔プライベートの変換がいつでも行えるようになります。 これが、もともとのNATです。 ここから、IPアドレスをいくつかプールしておいて必要な時に動的に割り当ててあげる動的NAT、IPアドレスではなく、TCP・UCPのポート単位で変換するNAPTと、発展していきます。 これらの違いは必要なグローバルIPアドレスの個数です。 静的NATは外部と通信するプライベートホストと同じ数だけ。動的NATは外部に同時に通信するプライベートホストの数、NAPTは数万台のホストあたり1IPアドレスで可能です。

回答No.2

NAT変換テーブルが出来ていない変換対の送り先にパケットを送ってきた場合、該当なしと判断するだけです。該当なしの場合の対応はルーターによって異なりますが、普通は不正アクセスがあったとログに記録した上でそのデータを捨てると思います。 変換テーブルには(送信元IPアドレス、送信元port、変換後IPアドレス、変換後port、通信先IPアドレス、通信先port、エントリ更新時間)などの情報が入っていて、仰る通り内部のプライベートIPアドレスからデータを送信したときに作成されます。もちろん、内部にリダイレクトする設定を書くとこのエントリはデータを送信するまでもなく変換テーブルに入っていると思います。 外部からIPパケットが到着すると、この変換表を参照して(変換後IPアドレス、変換後port、通信先IPアドレス、通信先port)から(送信元IPアドレス、送信元port)を求めようとします。 見つからない場合は上記の通り該当なしとして処理をし、見つかった場合は変換後IPアドレスと変換後portを送信元IPアドレスと送信元portに書き換えて処理します。 見つからなかった場合はこの書き換えが行われません。 その後、ファイアウォールのルールに基づき転送の可否が判断され、可なら送信元に届くというわけです。なお、変換がない場合は自分自身にIPパケットが来たことになりますが、多くのNATルーターは外部から自分のportへの接続をファイアウォールのルールで禁止していると思いますので、IPパケットが捨てられると言うわけです。 ちなみに、通信の過程でFINやRSTなどで通信を終了する合図を送ることでNAT変換テーブルのエントリは削除されます。また、これだけだとRSTやFINを送らずに通信が途切れた場合には無駄なエントリができてしまいますし、無駄なエントリがあるとそれだけ変換後portとして使えるportが減ってしまうので、一定時間経過すると変換テーブルのエントリを削除するようになっています。

noname#116115
noname#116115
回答No.1

NAT変換テーブルに無いものはルーター自身が受けます。 ポートが空いていたらそこが応答しますが、それ以外はDropもしくはRejectします。

関連するQ&A