Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.8.5. FORWARD および NAT ルール

ほとんどの ISP では、取引先の組織に提供する一般に迂回可能な IP アドレスの数は制限しています。
そのため、LAN 上のすべてのノードにパブリック IP アドレスを与えずに、インターネットサービスへのアクセスを共有する代替方法を管理者が見つける必要があります。最も一般的な方法はプライベート IP アドレスの 使用で、LAN 上のすべてのノードが内外のネットワークサービスに適切にアクセスできるようになります。
エッジルーター (ファイアウォールなど) はインターネットからの着信通信を受け取り、パケットを目的の LAN ノードに送ります。同時に、ファイアウォール/ゲートウェイは LAN ノードからの発信要求をリモートインターネットサービスに送ります。
このネットワークトラフィックの転送は時に危険を伴うことがあり、特に最新のクラッキングツールを利用できる場合には危険性が高まります。このツールを使うと、内部 IP アドレスになりすますことができ、リモート攻撃者のマシンを LAN 上のノードとして動作させることができます。
これを防ぐために、iptables はネットワークリソースの変則的使用を防ぐために実装されるルーティングポリシーと転送ポリシーを提供します。
FORWARD チェーンを使うと、管理者は LAN 内でパケットのルーティングを制御できるようになります。例えば、LAN 全体を対象にした転送を許可するには、以下のルールを使用します (ファイアウォール/ゲートウェイに eth1 の内部 IP アドレスが割り当てられていると仮定します)。
~]# iptables -A FORWARD -i eth1 -j ACCEPT
~]# iptables -A FORWARD -o eth1 -j ACCEPT
このルールにより、ファイアウォール/ゲートウェイの外側にあるシステムが内部ネットワークにアクセスできるようになります。また、ゲートウェイは、eth1 デバイスを経由するすべてのパケットを通過させ、パケットを LAN ノードから目的の宛先ノードにルーティングします。

注記

Red Hat Enterprise Linux カーネルにおける IPv4 ポリシーは、IP 転送のサポートをデフォルトで無効にします。これは、Red Hat Enterprise Linux を稼働するマシンが専用のエッジルーターとして機能することを防ぎます。IP 転送を有効にするには、以下のコマンドを root で実行します。
~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
この設定変更は、現行セッションにおいてのみ有効です。再起動やネットワークサービスの再起動の後には永続しません。IP 転送を永続的に設定するには、以下のように /etc/sysctl.conf ファイルを編集します。
以下の行を見つけます。
net.ipv4.ip_forward = 0
以下のように編集します。
net.ipv4.ip_forward = 1
sysctl.conf ファイルへの変更を有効にするには、以下のコマンドを root ユーザーとして実行します。
~]# sysctl -p /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0[出力は省略されています]

2.8.5.1. ポストルーティングと IP マスカレード

ファイアウォールの内部 IP デバイスを経由して転送されたパケットが受け入れられると、LAN ノードの相互通信が可能になります。ただし、インターネットへの外部通信はできません。
プライベート IP アドレスを持つ LAN ノードに外部のパブリックネットワークとの通信を許可するには、IP マスカレード用にファイアウォールを設定します。IP マスカレードは、LAN ノードからの要求をファイアウォールの外部デバイス (この場合は eth0) の IP アドレスでマスクします。
~]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
上記のルールでは、NAT パケットのマッチングテーブル (-t nat) を使用して、ファイアウォールの外部ネットワークデバイス (-o eth0) に NAT 用の組み込み POSTROUTING チェーン (-A POSTROUTING) を指定しています。
POSTROUTING は、パケットがファイアウォールの外部デバイスを離れる際にパケットが変更されることを許可します。
-j MASQUERADE のターゲットは、ノードのプライベート IP アドレスを、ファイアウォール/ゲートウェイの外部 IP アドレスでマスクするために指定されます。