nftablesでソースnatルールの厳格な条件を設定するには?

nftablesでソースnatルールの厳格な条件を設定するには?

サーバーには、「prerouting」と「postrouting」という2つのチェーンのみを含む「nat」という表が1つしかありません。 IP転送が有効になっています。ソースNATルールのより具体的な条件を設定しようとしています。クラシックルールを設定すると、次のようになります。

nft add rule nat postrouting ip saddr 192.168.1.0/24 oif eth0 snat 1.2.3.4

すべてが正常です。しかし、「saddr 192.168.1.0/24」ネットワークが配置されているインターフェースも指定したいと思います。

nft add rule nat postrouting **iif eth1** ip saddr 192.168.1.0/24 oif eth0 snat 1.2.3.4

このコマンドを入力すると、プログラムはそれを受け入れ、ルールが表に表示されます。しかし、交通量はありません。理由を知っている人はいますか?

ベストアンサー1

この機能返品適切なネットフィルタをサポートするには、カーネル> = 5.5が必要です。で説明されているkernelnewbies.org:

Linux 5.5リリース2020年1月26日

[...]

  • Webフィルタ

    • POSTROUTINGでiifマッチングをサポート犯罪

提出内容:

netfilter: POSTROUTINGでiifマッチをサポート

通常、NF_HOOK_COND()に入力デバイスにNULLを渡すのではなく、代わりにskbパスの入力デバイスを含むskb-> devを渡します。

iptables(legacyとnft)は、入力インターフェースに一致するルールをPOSTROUTINGチェーンに追加することを拒否しますが、nftablesはそれを許可します。

説明によると、このコミットの前にnetfilterは入力インターフェースを提供しておらず、式がiif一致しませんでした。

おすすめ記事