NFT を使用して、特定のアドレスに送信されるすべてのトラフィックをローカルホストにルーティングするにはどうすればよいですか?

NFT を使用して、特定のアドレスに送信されるすべてのトラフィックをローカルホストにルーティングするにはどうすればよいですか?

外部 IP に送信されるトラフィックを傍受し、ローカルホストに再ルーティングする必要があります。iptables を使用すると非常に簡単ですが、nft を介して動作させる方法がわかりませんでした。nft 内にテーブルとチェーンを作成しましたが、ルールを作成できず、nft は操作がサポートされていないと表示します。

テーブル

sudo /usr/sbin/nft list ruleset
table ip filter {
        chain OUTPUT {
                type filter hook output priority filter; policy accept;
        }
}

ルール

sudo /usr/sbin/nft  add rule ip filter OUTPUT ip daddr $EXTERNAL_ADDRESS counter dnat to 127.0.0.1
Error: Could not process rule: Operation not supported

カーネルモジュール

lsmod | grep nf_tables
nf_tables             360448  1 nft_nat
libcrc32c              12288  3 nf_conntrack,nf_nat,nf_tables
nfnetlink              20480  1 nf_tables

私のルールの何が問題なのでしょうか、それとももっと簡単にできるのでしょうか?

答え1

ホストに IP アドレスを割り当てます。すべてのトラフィックをルーティングするのは転送テーブルの役割であり、ファイアウォールで実行できますが、多くの場合は必要ありません。

たとえば、Linux 上のループバックに作成した IP アドレスを割り当てるには、次のようにします。

  ip a add 2001:db8:114:6402::1020 dev lo

1 つのホスト ルートであるため、通常はインターネット上の他の場所に存在していても優先されます。ループバック インターフェイスでは、他のホストはそれを認識せず、同じホストから「出る」トラフィックによってのみ到達可能です。

ホストがルータである場合は、これを他のルータにアドバタイズするかどうかを決定します。

読者のための演習: これを IPAM と DNS に登録します。ディストリビューションのネットワーク マネージャーで永続化します。

関連情報