IPマスカレードと、IPフィルターとの組み合わせについて
ヤマハルータでは、NAT機能における一連の変換ポリシーをまとめたものを「NATディスクリプター」と呼んでいます。
IPフィルタが絡むとややこしいので、少し説明します。
NATには、静的NAT、動的NAT、そしてIPマスカレードがありますが、
ここでは、IPマスカレードについて説明します。
IPマスカレードには静的、動的と2つあります。
動的IPマスカレードについて
いわゆる普通のブロードバンドルータとおなじ、ひとつのグローバルIPをLAN内の複数端末で共有するやつです。
下の図はここを簡略化したものです。
ルーティングを境に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側から通信がきたらどうでしょうか?
NATディスクリプタは、NAT変換テーブルに対応が無い為、LAN側のIP、ポート番号に変換することができません。
したがって、通信は拒否されます。(デフォルトの動作の場合)
つまり、内部から開始した通信したものはNAPTテーブルができるので戻ってこれますが、外部から開始した通信は拒否されてしまいます。
このままだと、LAN内のサーバを外部に公開するなどが出来ませんので、その場合静的NATを使います。
静的IPマスカレードについて
別名ポートフォワードと言ったりもします。
動的IPマスカレードだと、WAN側に出るときに、IPはルータのグローバルIPに、ポート番号は空いた番号が動的に割り当てられるので、
LAN内のサーバを外部に公開することが出来ません。
ここで、IPマスカレードはNAPT変換テーブルにしたがって変換していることに注目します。
つまり、最初から静的にNAPT変換テーブルを定義しておくことにより、逆変換をすることが出来ます。
ここでも注意なのが、送信先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フィルタの条件にマッチしないものは全て拒否です。
さて、秘密のサーバには本当に10.20.20.20からしかアクセスできないのでしょうか??
IPフィルターがNAT変換より前、つまりWAN側の入り口で有効化されているなら、このフィルタ定義で良さそうです。
しかし実際はIPフィルターはNAT変換後に処理されるため、フィルターの定義はNAT変換後のアドレス、ポート番号で指定しないといけません。
つまり、この例だと、2番目のフィルターは無意味で、秘密のサーバへは誰でもアクセスできてしまいます。
まとめ
IPマスカレードとIPフィルターとの組み合わせについて説明しました。
では、ルータのWAN側IP以外の通信、つまり、NATディスクリプタが変換するWAN側IPアドレス以外からの通信がWAN側からきた場合どうなるでしょうか?
NAPT変換テーブルにないので拒否されるのでしょうか?
実はNATディスクリプタを定義する際、外側と内側のアドレスを定義します。それ以外のアドレスからの通信はそもそもNATディスクリプタを通りません。
なので、いきなりIPフィルターに来る事になります。
デフォルトのフィルターに、ローカルIPからのアクセスを拒否するようなフィルターが定義されているのはその為です。
このページの参照回数は、2648です。