私は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 PREROUTING
pktカウンターが増加し始めます。したがって、トラフィックはraw PREROUTING
チェーンに表示されます。
別の空のルールを追加すると、iptables -t mangle -A PREROUTING
pktカウンタが再びインクリメントし始めます。これまでのトラフィックはフローチャートに従っています。
これが面白いところです。突然別の空のルールを追加すると、iptables -t nat -A PREROUTING
pktカウンタは増加しません。ただし、フローチャートはトラフィックがどこに行くかを示していmangle PREROUTING
ますnat PREROUTING
。しかし、そのようなことは明らかに起こりませんでした。 Linuxブリッジがiptablesチェーンと対話する方法のフローチャートはありますか?交通量がどのように/どこに消えるか/行くのか混乱します。
DNATルールのルールを作成しましたが、そのDNATルールのみを入れることができ、トラフィックがnat PREROUTING
まったくnat PREROUTING
表示されない場合は、宛先IPを書き換えることはできません。生またはマングルでDNATを実行する方法がない場合、私はその方法を知りません。