入力チェーンのnftables dnat

入力チェーンのnftables dnat

ファイアウォールポート80および443に到着するすべてのトラフィックをリダイレクトしようとしています10.133.8.11

私から集めたこれ入力チェーンのNATが可能でなければなりません。しかし、dnatはそうではないようです。どのようなNATが可能ですか?

入力チェーンを使用してこれを実行したいのは、パスを前のチェーンに配置すると、ファイアウォールへのトラフィックだけでなく、すべてのトラフィックが破棄されるためです。

これまでに試したことは次のとおりです。

テーブルinet natがすでに存在しています。

# nft 'add chain inet nat input { type nat hook input priority -100; }'

# nft 'add rule inet nat input tcp dport { 80, 443 } dnat ip to 10.133.8.11'
Error: Could not process rule: Operation not supported
add rule inet nat input tcp dport { 80, 443 } dnat ip to 10.133.8.11
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#
``

答え1

ローカルポートに到着したパケットを非ローカル宛先にリダイレクトしようとしています。成功するには、ルーティング決定が行われる前に(つまりPREROUTINGチェーンで)、このリダイレクトを完了する必要があります。

INPUTチェーン内のパケットはすでに一部のローカルプロセスに移動されているため、ポート番号の変更は制限されてはいけませんが、宛先IPアドレスの変更は不可能であるか、ローカルホストで使用されるアドレスに制限される可能性があります。

次のようなことができます

nft 'add chain inet nat prerouting { type nat hook prerouting priority -100; };'
nft 'add rule inet nat prerouting ip daddr <firewall's own IP here> tcp dport { 80, 443 } dnat ip to 10.133.8.11'

DNATはルーティング決定(ローカル対非ローカル)に影響を与えるため〜しなければならないフックで完了しましたprerouting

はい。事前ルーティングチェーンで変更する前に、元の宛先アドレスと一致させることができます。これにより、他のチェーンは宛先IPアドレスが変更されたパケットを表示します。たとえば、ルールでこれを許可することに注意する必要がありますforward

はい、パケットが複数のエントリと一致するように要求できます(例:宛先アドレスそして宛先ポート)を同じ規則で適用します。

関連情報