世紀末の墓

世紀末の墓

IT系寄りの雑記

NAPTとは

この記事の続きといえば続きです。
silmin.hatenablog.com

NATとの違い

アドレス変換テーブルを用いて変換を行う部分は同じなのですが、
変換するパラメータに「ポート番号」を追加します。

聞いたことがあるかもしれません。(80番ポートが一番有名かな?)

NATでは、IPアドレスのみでテーブルを作っていましたが、1対1の通信しか実現できませんでした。
※詳しくは上の記事参照

ですがNAPTでは1対多の通信を実現できます。

NAPTとは

例のごとく、このようなネットワークをモデルにします。
f:id:silmin:20180114234141p:plain
NAPTでは、ルーターはIPとポート番号をセットにしたアドレス変換テーブルを持ちます。

ポートについては詳しく記事にしようと思いますが、分からない人は今は「そんなのがあるんだ」くらいに思っておいてくれれば結構です。

では実際に流れを見ていきます。


PC2からサーバーの80番ポートにパケットを送っています。
f:id:silmin:20180114234131p:plain
ルーターはアドレス変換テーブルを見ながら、ヘッダ情報を書き換えます。
これでPC2からサーバーに送ることができました。
ここまではNATでも可能でした。

サーバーからPC2に送る時はどうでしょう。
f:id:silmin:20180114234150p:plain
サーバーは、G:S2から送られたと思っている(受け取ったパケットのヘッダ情報から読み取る)ので、G:S2宛にパケットを送ります。

受け取ったルーターは、アドレス変換テーブルにもとづいてヘッダ情報を変換します。

こうして、PC2に無事届けることができました。

こちらも、アドレス変換テーブルに無い宛先のパケットが来た場合は破棄されます。

これが俗に「IPマスカレード」,「ポートフォワーディング」というやつですね。

アドレス変換問題

一見完璧なように見える(かもしれない)NAPTですが、コレにも問題があります。

それは、ヘッダしか見ない(変換しない)こと です。

...宛先や送信元情報が書かれてるのはヘッダなんだからいいじゃんと思うかもしれません。

その通りなんですが、例外もあります。

ICMPなど、パケットのデータ部分に宛先情報等が載っているプロトコルも存在するため、データ部分まで見ないNAPTではカバーしきれないのです。

NAPTだけでも簡易的なセキュリティ対策にはなるのですが、今になっては無意味同然なので通常ファイヤーウォールと併用して運用します。(多分そう違ったらごめん)