18.5. FORWARD および NAT ルール
ほとんどの ISP は、サービスを提供する組織に公開されているルーティング可能な IP アドレスのみを提供します。
管理者は、LAN 上の全ノードにパブリック IP アドレスを指定せずにインターネットサービスへのアクセスを共有する代替方法を見つける必要があります。プライベート IP アドレスの使用は、LAN 上の全ノードが内部および外部のネットワークサービスに適切にアクセスできるようにする最も一般的な方法です。
エッジルーター(ファイアウォールなど)は、インターネットから着信送信を受け取り、パケットを目的の LAN ノードにルーティングすることができます。同時に、ファイアウォール/ゲートウェイは、LAN ノードからリモートインターネットサービスに送信要求をルーティングすることもできます。
ネットワークトラフィックの転送により、特に 内部 IP アドレスのなりすましや、リモート攻撃者のマシンが LAN のノードとして機能する可能性がある最新のクラッキングツールが利用可能になると、危険にさらされる可能性があります。
これを防ぐために、iptables は、ネットワークリソースの異常な使用を防ぐために実装可能なルーティングおよび転送ポリシーを提供します。
管理者は、
FORWARD
チェーンを使用して、LAN 内でパケットをルーティングできる場所を制御できます。たとえば、(firewall/gateway に eth1 の内部 IP アドレスが割り当てられていることを前提とします)、以下のルールを使用します。
[root@myServer ~ ] # iptables -A FORWARD -i eth1 -j ACCEPT [root@myServer ~ ] # iptables -A FORWARD -o eth1 -j ACCEPT
このルールは、ファイアウォールの背後にあるシステムに内部ネットワークへのアクセスを付与します。ゲートウェイは、1 つの LAN ノードから目的の宛先ノードにパケットをルーティングし、
eth1
デバイスを介してすべてのパケットを渡します。
備考
デフォルトでは、Red Hat Enterprise Linux カーネルの IPv4 ポリシーは IP 転送のサポートを無効にします。これにより、Red Hat Enterprise Linux を実行するマシンが専用の edge ルーターとして機能しなくなります。IP 転送を有効にするには、以下のコマンドを使用します。
[root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1
この設定変更は、現行セッションでのみ有効で、再起動またはネットワークサービスの再起動後も維持されません。IP 転送を永続的に設定するには、以下のように
/etc/sysctl.conf
ファイルを編集します。
以下の行を見つけます。
net.ipv4.ip_forward = 0
この設定を以下のように編集します。
net.ipv4.ip_forward = 1
以下のコマンドを使用して
sysctl.conf
ファイルへの変更を有効にします。
[root@myServer ~ ] # sysctl -p /etc/sysctl.conf
18.5.1. POSTROUTING and IP Masquerading
ファイアウォールの内部 IP デバイスを介して転送されたパケットを受け取ると、LAN ノードは相互に通信できますが、インターネットに外部で通信することはできません。
プライベート IP アドレスを持つ LAN ノードが外部のパブリックネットワークと通信できるようにするには、IP マスカレード のファイアウォールを設定します。これにより、LAN ノードの要求をファイアウォールの外部デバイスの IP アドレスでマスクします(この場合は eth0)。
[root@myServer ~ ] # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
このルールは NAT パケットマッチングテーブル(
-t nat
)を使用し、ファイアウォールの外部ネットワークデバイス(-o eth0
)上の NAT(-A POSTROUTING
)の組み込み POSTROUTING チェーンを指定します。
POSTROUTING により、パケットの変更はファイアウォールの外部デバイスから出る際に変更できます。
-j MASQUERADE
ターゲットを指定して、ファイアウォール/ゲートウェイの外部 IP アドレスでノードのプライベート IP アドレスをマスクします。