11.12. MASQUERADEターゲット

MASQUERADE ターゲットは、基本的には SNAT ターゲットと同じだ。ただし、 --to-source オプションは必要でない。なぜかといえば、 MASQUERADE ターゲットは、ダイヤルアップ接続、DHCP など、つまり、目的のネットワークへの接続に動的な IPアドレスを使用する接続で機能するようにできているからだ。即ち、 MASQUERADE ターゲットは、動的に割り当てられる IPコネクション、つまり、実際のアドレスが変化するためそのアドレスが分からないようなコネクションでのみ、使うようにしなければならない。固定的な IP 接続なら、代わりに SNAT ターゲットを使用すべきだ。

接続を MASQUERADE することは、 --to-source オプションの代わりに特定のネットワークインターフェースの IPアドレスを指定しているのと同じだ。その IPアドレスは、特定のインターフェースに関する情報から自動的に捕捉される。 MASQUERADE ターゲットにはもうひとつ、或るインターフェースが無効になるとコネクションも忘れ去られるという特性がある。これは、例えば特定のインターフェースを殺したい場合に非常に有効な特性だ。もし SNAT ターゲットを使っていたら、コネクション追跡データが残ったままになり、それらは時には何日間も放置されることもあるので、せっかくのコネクション追跡メモリが食いつぶされてしまう。 MASQUERADE ターゲットのこの仕組みは、一般的に、ダイアルアップ接続に対して妥当とされる。接続が確立される度に異なった IP が割り当てられる確率が高いからだ。割り当て IP が変われば今までのコネクションはどのみち無効になるので、エントリを持ち続けるのも間抜けな話ではなかろうか。

IP が固定の場合でも、SNAT の代わりに MASQUERADE ターゲットを使うこともできなくはない。あまりお勧めでないのは、余計なオーバーヘッドがあることと、運用しているうちに矛盾を生じ、既存のスクリプトを駄目にして "使用不能" にしてしまう可能性があるからだ。

MASQUERADE ターゲットは、 SNAT ターゲットと同様に、 nat テーブルの POSTROUTING チェーンでのみ有効だという点に気を付けなくてはならない。 MASQUERADE ターゲットは、省略可能な下記のオプションを採ることもできる。

Table 11-10. MASQUERADEターゲットオプション

オプション--to-ports
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
説明--to-ports オプションは、出ていくパケットに使用させる送信元ポート (複数可) を指定するために用いる。 --to-ports 1025 のように単一のポートも指定できるし、ポート範囲で --to-ports 1024-3000 のような指定も可能だ。つまり、範囲の上下ポートはハイフンで区切る。これは、SNATターゲット のセクションで述べている SNAT の規定動作による選択ポートを、変更していることになる。 --to-ports オプションは、ルールのマッチ条件部で --protocol マッチを使って TCPUDP を指定している場合にのみ使用することができる。

Note

Linux カーネル 2.3, 2.4, 2.5, 2.6 で機能する。