7.4. FORWARDNAT のルール

ほとんどの組織や企業は、ISPからのパブリックにルーティングできるIPアドレスの割り当て数が 限られています。数に制限があるため、管理者は、LAN上にあるすべてのノードに制限のある IPアドレスを与えずに、インターネットサービスへのアクセスを共有できる独創的な方法を 見つけねばなりません。プライベートIPアドレスの使用が一般的で、 LAN上のすべてのノードが正しく内部/外部のネットワークサービスにアクセスできるようにします。 エッジにあるルータ(ファイアウォールなど)はインターネットからの着信通信を受け取り、 パケットを目的のLANノードにルーティングします。同時に、 ファイアウォール/ゲートウェイはLANノードからの発信要求をリモートインターネットサービスに ルーティングします。 このネットワークトラフィックのフォワーディングは時に危険を伴うことになる恐れがあり、 特に、最近のクラッキングツールの機能を使用すると、内部IPアドレスに なりすましてLAN上にあるノードとしてリモート攻撃者のマシンを動作させることができます。 これを防止するために、iptablesはルーティングとフォワーディングの ポリシーを提供し、ネットワークリソースの異常な使用の防止を実現します。

FORWARDポリシーでは、 LAN内でパケットがルーティングされる場所を制限することができます。 例えば、LAN全体にフォワーディングを許可するには(ファイアウォール/ゲートウェイが 内部IPアドレスをeth1に持っていると仮定)、次のルールが設定できます。

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

注意注記
 

デフォルトでは、Red Hat Enterprise Linuxカーネル内のIPv4ポリシーがIPフォワーディングのサポートを 無効にしており、Red Hat Enterprise Linuxを稼動しているコンピュータが専用エッジルータとして 機能しないようにしています。IPフォワーディングを有効にするには、次のコマンドを実行します。

sysctl -w net.ipv4.ip_forward=1

このコマンドをシェルプロンプトから実行する場合、再起動後にその設定は記憶されません。 /etc/sysctl.confファイルを編集して、フォワーディングを不変的に 設定します。次の行をさがして編集します。0には 1を入れます。

net.ipv4.ip_forward = 0

次のコマンドを実行してsysctl.confヘの変更を有効にします。

sysctl -p /etc/sysctl.conf

これにより、LANノードがお互いに通信できるようになりますが、 外部との通信は許可されていません(例、インターネット)。 プライベートIPアドレスを持つLANノードが外部の公開ネットワークと通信できるようにするには、 IP マスカレード用にファイアウォールを設定します。 これはLANノードからの要求をファイアウォールの外部デバイスでマスクします(この場合、eth0)。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE