Iptablesを使用した特定のTCPポートのネットワークインターフェイス(ブリッジポート)でのトラフィックフィルタリングの問題

Iptablesを使用した特定のTCPポートのネットワークインターフェイス(ブリッジポート)でのトラフィックフィルタリングの問題

トラフィックをフィルタリングするためにiptablesをファイアウォールとして使用しています。特定のTCPポートのネットワークインターフェイスからトラフィックをブロックしたい(ポート22でテストしています)。ネットワークインタフェースはブリッジポートなので、physdevモジュールを使用します(-iオプションを試しましたが機能しません)。ポートを指定せずにルールを作成すると、すべてのトラフィックが正常にフィルタリングされます。

iptables -t mangle -A PREROUTING -m physdev --physdev-in IF_NAME -j DROP

ただし、ポートを指定すると機能しません。

iptables -t mangle -A PREROUTING -m physdev --physdev-in IF_NAME -p tcp -m tcp --dport 22 -j DROP

ルールを 2 つに分割するために mark と connmark モジュールを試してみたので、ブリッジ インターフェイスと TCP ポートは別々のルールにあります。不運。

いくつかの注意:私はDebian 10でiptables v1.8.2を使用しています。仮想マシンのトラフィックをフィルタリングしようとしています。ホストコンピュータでルールを作成しています。仮想マシンのネットワークインターフェイスを設定します。ネットワークインターフェイスの代わりに仮想マシンのIPを使用すると正常に動作します。

ブリッジがデータリンク層にあり、TCPポートがトランスポート層で機能しないためですか?私は個人的に、これがルールが機能しないという良い言い訳ではないと思います。結局のところ、iptablesは他のネットワーク層で動作します。

私の質問:

  1. (最初の優先順位)iptablesを使用してこのルールを操作することは可能ですか?もしそうなら、何か、そうでなければなぜですか?
  2. nftablesを使ってこれは可能ですか?
  3. 言及したい他の解決策はありますか?

ベストアンサー1

おすすめ記事