Linuxブリッジ付きのIPtables DNAT(インターフェースアドレスなし)

Linuxブリッジ付きのIPtables DNAT(インターフェースアドレスなし)

私はiptablesとブリッジでいくつかの実験をしてきました。このシナリオは単にラボにありますが、いくつかの興味深い機能が見つかりました。 )。

Debian 11サーバー仮想マシンには3つのインターフェースがあります。 ens3は「インターネット」(研究室外)に接続され、ens4は研究室ルータに接続され、ens5はアドレス指定され、研究室内部サブネットに接続されます. ens3とens4にはIPアドレスはありません。

インターフェイス ens3 と ens4 を使用してブリッジ br0 を作成しました。これは正常に機能し、「インターネット」またはラップルータからのトラフィックがens3とens4の間で正しく移動します。

br_netfilterカーネルモジュールを有効にしており、net.bridge.bridge-nf-call-iptables = 1ブリッジトラフィックをiptablesに表示しようとしています。

私が設定した目標は、特定のポート(22、SSH)に一致する「インターネット」からのパケットをキャッチし、宛先IPアドレスをens5のIPアドレスに変更することです。

カウンターの増加を表示するために空のルールを追加すると、iptables -t raw -A PREROUTINGpktカウンターが増加し始めます。したがって、トラフィックはraw PREROUTINGチェーンに表示されます。

別の空のルールを追加すると、iptables -t mangle -A PREROUTINGpktカウンタが再びインクリメントし始めます。これまでのトラフィックはフローチャートに従っています。

これが面白いところです。突然別の空のルールを追加すると、iptables -t nat -A PREROUTINGpktカウンタは増加しません。ただし、フローチャートはトラフィックがどこに行くかを示していmangle PREROUTINGますnat PREROUTING。しかし、そのようなことは明らかに起こりませんでした。 Linuxブリッジがiptablesチェーンと対話する方法のフローチャートはありますか?交通量がどのように/どこに消えるか/行くのか混乱します。

DNATルールのルールを作成しましたが、そのDNATルールのみを入れることができ、トラフィックがnat PREROUTINGまったくnat PREROUTING表示されない場合は、宛先IPを書き換えることはできません。生またはマングルでDNATを実行する方法がない場合、私はその方法を知りません。

関連情報