21.5. NAT(Network Address Translation) の概要

NAT とは IP パケットを操作し、送信先あるいは送信元の IP アドレスやポート番号を書き換えることをいいます。 送信元の情報を変換する NAT を送信元 NAT(SNAT)、送信先の情報を変換する NAT を送信先 NAT(DNAT) といいます。SNAT (送信元アドレス変換)は、主に IP マスカレードと呼ばれる機能を実現するために使用されます。IP マスカレードについては、項21.7 を参照してください。DNAT (送信先アドレス変換)は、主に内部ネットワークに存在するサーバーを外部に公開したいときに使用されます。着信したパケットの 送信先 IP アドレスを内部ネットワークのサーバーの IP アドレスに変換することにより、パケットを内部サーバーへリダイレクトします。

iptables で SNAT、DNAT を行うためのチェインには、PREROUTING、POSTROUTING、OUTPUT があります。以下の図では、パケットフィルタリングで使用されるチェインとの関係も示しています。

PREROUTING チェイン

ルーティングが行われる前に、着信したパケットの送信先情報を変換するために利用します。ホスト宛て、あるいはホストが転送するパケットが対象になります。

POSTROUTING チェイン

パケットを送信する直前に、パケットの送信元情報を変換するために利用します。ホストが転送するパケットが対象になります

OUTPUT チェイン

ローカルホストのプロセスが生成したパケットの送信先情報を変換するために利用されます。

注意

ネットワークインターフェース間のパケット転送を有効にするには、 以下のコマンドを実行し、/proc/sys/net/ipv4/ip_forward の値を 1 (有効)にします。あるいは、ネットワーク設定ツールの turbonetcfg で有効にすることも可能です。turbonetcfg で有効にすれば、システム再起動後でも有効にした値は保持されます。

# cat /proc/sys/net/ipv4/ip_forward
0
# echo 1 > /proc/sys/net/ipv4/ip_forward  ← 値を 1 に変更
# cat /proc/sys/net/ipv4/ip_forward
1