6.3. natテーブル

このテーブルはパケットの NAT (Network Address Translation) にしか利用できない。つまり、パケットの送信元フィールドまたは宛先フィールドを変更する目的にだけ使用するテーブルだ。前にも述べたことだが、このテーブルに行き当たるのは、ストリームの最初のパケットだけ。後続のパケットは全て、先頭パケットの執った行動に倣う。こうしたことを行う具体的なターゲットは:

DNAT ターゲットは主に、あなたがパブリック IP を持っている場合に、ファイヤーウォールへのアクセスをその他の (例えば DMZ 上の) ホストへ振り向ける際に使用する。つまり、パケットの宛先アドレスを変更して、特定のホストへルーティングするわけだ。

SNAT は、主としてパケットの送信元アドレスの変更に用いる。通常、こちらのローカルネットワークや DMZ などは外部にさらけ出さないものだ。格好の例が、外部向け IPアドレスの分かっているファイヤーウォールを置いていて、そのファイヤーフォールの持っている外部 IPアドレスを、ローカルネットワーク内のホストに送信元アドレスとして使わせる必要がある場合だ。このターゲットを利用すれば、ファイヤーウォールがパケットの SNAT逆SNAT 処理を自動的にやってくれるので、LAN からインターネットへの接続が可能となる。あなたのネットワークが例えば 192.168.0.0/netmask というアドレスだった場合、 IANA の規定ではこのアドレス (他にもあるが) はプライベートアドレスであり、閉じた LAN 内でのみ有効なものとされているため、インターネットからは決して返事をしてもらえないのだ。

MASQUERADE ターゲットは SNAT とまったく同じような使い方をする。ただし、 SNAT と比べると処理にかかる負荷は少々大きい。 SNAT ターゲットがひとつの固定した IPアドレスを使えばいいのに対して、 MASQUERADE ターゲットは、パケットが来る度に、使用すべき IPアドレスを調べているからだ。 MASQUERADE ならば、 ISP が 動的に DHCP IPアドレスを割り当ててくる PPPPPPoESLIP のインターネット接続下でも、きちんと動作してくれる。