現在ipv4.ip_forward
複数のインターフェース間でパケットをルーティングできるようになりました。
現在、システムを8つのインターフェースにスケールアップしていますが、インターフェース/アドレス間のルーティングを制限したいと思います。
1つのオプションはfirewalld
を使用することですが、私はこれを古いバージョンのRHにデプロイするため、iptables
を介して行われます。
実際、iptables
はこれを制限するのに非常に適しています。パケットが許可またはブロックされるfilterテーブルには3つのチェーンがあります。各チェーンでは、パケットを照合し、パケットが一致した場合にアクションをトリガーするようにルールを定義できます。パケットが一致するルールのチェーンに対して、iptables
が実行されているホストに対するパケットの方向によって異なります。
INPUT
:ローカルホスト宛ての着信パケットOUTPUT
:ローカルホストから発信された発信パケットFORWARD
:別のホスト宛てで転送が必要なパケット次に、たとえばパケットが転送され、FORWARD
チェーン内でそれと一致するルールがない場合、これに設定されたpolicyに従って処理されますチェーン。デフォルトはACCEPT
です。パケットは通過を許可されます。このコマンドは、ポリシーとルールが定義されている場合にそれらを表示します。
iptables -t filter -vnL
テーブルは-t <table>
を使用して指定されます。何も指定されていない場合、filter
がデフォルトのテーブルなので、次のコマンドは同等です。
iptables -vnL
転送のためにすべてのパケットをブロックするには、このチェーンのポリシーを次のようにREJECT
またはDROP
に設定できます。
iptables -P FORWARD REJECT
転送されるすべてのパケットは、FORWARD
チェーン内のルールが明示的にそれらを受け入れない場合、拒否されます。
内部トラフィックの場合、REJECT
ポリシーが必要になる可能性があります。これにより、パスが閉じていることがすぐにクライアントに通知されます。外部ネットワークからのトラフィックにはDROP
ルールが必要になる場合があります。
特定のパケットの通過を明示的に許可するために、ルールはそれらのチェーンに追加されます。これらのチェーンは、それらのルールが定義された順序でパケットに一致します。たとえば、eth0
に着信し、ルーティングに基づいてeth1
に転送されるすべてのトラフィックを許可するには:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
また、たとえば、10.0.0.0/24
サブネットからのパケットのみを反対方向に通過させるには、次のようにします。
iptables -A FORWARD -i eth1 -o eth0 -s 10.0.0.0/24 -j ACCEPT
すべてのパラメータの詳細については、 iptables-manpage および iptables-extensions manpage を参照してください。