IPマスカレードと、IPフィルターとの組み合わせについて

Last-modified: Mon, 22 May 2017 00:48:46 JST (2760d)
Top > IPマスカレードと、IPフィルターとの組み合わせについて

ヤマハルータでは、NAT機能における一連の変換ポリシーをまとめたものを「NATディスクリプター」と呼んでいます。

IPフィルタが絡むとややこしいので、少し説明します。
NATには、静的NAT、動的NAT、そしてIPマスカレードがありますが、
ここでは、IPマスカレードについて説明します。

IPマスカレードには静的、動的と2つあります。

動的IPマスカレードについて

いわゆる普通のブロードバンドルータとおなじ、ひとつのグローバルIPをLAN内の複数端末で共有するやつです。

下の図はここを簡略化したものです。

napt01.png

ルーティングを境にLAN側にも対象構造になっているのですが、今回は使わないので省略しています。

例として、グローバルIP:xx.xx.xx.xxにあるWebサーバにLAN内の端末(192.168.1.21)アクセスしたとします。

LAN側から入ってきた通信は、ルーティングによってWAN側に振り分けられます。

まず、WAN側インターフェースのoutフィルタが適用され、WAN側に流さない通信などがフィルタされます。

次にNATディスクリプタに入ります。
NATディスクリプタは変換ポリシーをまとめたもので、ここではIPマスカレードが定義されているとします。
ここで、送信元端末のIPアドレスがルータのWAN側グローバルIP(10.10.10.10)(とポート番号)に書き換えられて、Webサーバ(xx.xx.xx.xx)に送信されます。
このとき、ルータ内部のNAPT変換テーブルに、変換したIPアドレス、ポート番号の対比表(NAPT変換テーブル)が作成されます

Webサーバ(xx.xx.xx.xx)から、送信元と送信先を逆にして応答が帰って来ます。
NATディスクリプタは、NAPT変換テーブルから対応するものを探し出して、
送信先IP(とポート番号)を書き換えます

その後、WAN側インターフェースのinフィルタが適用されます。
これにより、無事Webサーバからの応答が帰ってきて、通信が出来るようになります。

ここで注意なのが、送信先IPアドレスがNAPTによってローカルIPに変換された後にフィルターが適用されるという点です。

いきなりWAN側から通信がきた場合

NAPTテーブルにないポート番号でいきなりWAN側から通信がきたらどうでしょうか?

napt02.png

NATディスクリプタは、NAT変換テーブルに対応が無い為、LAN側のIP、ポート番号に変換することができません。
したがって、通信は拒否されます。(デフォルトの動作の場合)
つまり、内部から開始した通信したものはNAPTテーブルができるので戻ってこれますが、外部から開始した通信は拒否されてしまいます。
このままだと、LAN内のサーバを外部に公開するなどが出来ませんので、その場合静的NATを使います。

静的IPマスカレードについて

別名ポートフォワードと言ったりもします。
動的IPマスカレードだと、WAN側に出るときに、IPはルータのグローバルIPに、ポート番号は空いた番号が動的に割り当てられるので、
LAN内のサーバを外部に公開することが出来ません。
ここで、IPマスカレードはNAPT変換テーブルにしたがって変換していることに注目します。
つまり、最初から静的にNAPT変換テーブルを定義しておくことにより、逆変換をすることが出来ます。

napt03.png

ここでも注意なのが、送信先IPアドレスがNAPTによってローカルIPに変換された後にフィルターが適用される点です。
なので、WAN側からの通信をフィルターしたい場合は、送信先IPがローカルIPでフィルタしないといけません。

静的IPマスカレード+IPフィルターの組み合わせでありがちな失敗例

ここで例を一つあげます。
静的IPマスカレードで2つのサーバを公開しています。
ひとつはWebサーバ(Port80)で192.168.1.30のサーバを、もうひとつは秘密のサーバ(Port8080)で192.168.1.60のサーバです。
NATディスクリプタに静的IPマスカレードを定義しただけだと、両方誰でも外部よりアクセスできるので、IPフィルターを設定しました。

Webサーバのポート番号80は全て許可。秘密のサーバのPort番号8080は10.20.20.20からのみ許可。
IPフィルタの条件にマッチしないものは全て拒否です。

napt04.png

さて、秘密のサーバには本当に10.20.20.20からしかアクセスできないのでしょうか??
IPフィルターがNAT変換より前、つまりWAN側の入り口で有効化されているなら、このフィルタ定義で良さそうです。
しかし実際はIPフィルターはNAT変換後に処理されるため、フィルターの定義はNAT変換後のアドレス、ポート番号で指定しないといけません
つまり、この例だと、2番目のフィルターは無意味で、秘密のサーバへは誰でもアクセスできてしまいます。

まとめ

IPマスカレードとIPフィルターとの組み合わせについて説明しました。
では、ルータのWAN側IP以外の通信、つまり、NATディスクリプタが変換するWAN側IPアドレス以外からの通信がWAN側からきた場合どうなるでしょうか?
NAPT変換テーブルにないので拒否されるのでしょうか?

実はNATディスクリプタを定義する際、外側と内側のアドレスを定義します。それ以外のアドレスからの通信はそもそもNATディスクリプタを通りません。
なので、いきなりIPフィルターに来る事になります。
デフォルトのフィルターに、ローカルIPからのアクセスを拒否するようなフィルターが定義されているのはその為です。


Counter: 2648, today: 2, yesterday: 5

このページの参照回数は、2648です。