br_netfilterカーネルモジュールは正確に何を制御しますか?

br_netfilterカーネルモジュールは正確に何を制御しますか?

私はbr_netfilterLinuxカーネルモジュールが正確に何をしているのかを明確に理解しようとしています(ネットワークに関連していることを知っています)。

ここで私が尋ねる簡単な質問は次のとおりです。

このモジュールを有効にすると実行できますが、このモジュールを無効にすると実行できない操作の例を挙げてください。私はこれがそれに関連していると思いましたが、iptablesモジュールを無効に/有効にするときは常に同じiptablesコマンドを実行できます。

注:カーネルモジュールを無効にしてもコンピュータがシャットダウンしないかどうかわからないため、テストするためにテストAWS EC2インスタンスを作成しました。

編集:明確にするために私が見たいのは、X、Y、Zコマンドの実行とも呼ばれる簡単なステップのセットです。有効にすると、システムは期待どおりに実行され、無効にするとそうではありません。

答え1

まず、このモジュールを便利に使用するには、まず次のことを行う必要があります。ブリッジング複数のネットワークインターフェイス(物理または仮想)間のトラフィック。

たとえば、システムでQEMU / KVM仮想マシンを実行し、仮想マシンを別々のIPアドレスでネットワークに提供できる場合(=仮想マシンでサービスを設定するためにポート転送が不要)、ホストシステムの物理ネットワークを実行できます。インターフェイスと仮想マシンの仮想ネットワークインターフェイス間のブリッジ。

hostapdまたは、独自のWiFiアクセスポイントを実行し、ワイヤレスネットワークが別々のIPサブネットになることを望まない場合は、有線インターフェイスとワイヤレスネットワークインターフェイス間でブリッジを実行できます。

brctl showデフォルトでは、orの出力が空のip link show type bridgeリストでない場合は、MACebtablesアドレスに基づいてブリッジを通過するトラフィックの制限を設定できます。

これら2つのコマンドに出力が表示されない場合は、フィルタリングを実行するサブシステムを使用していないbr_netfilterため、役に立ちません。br_netfilter彼らはする出力を見ると、ブリッジのMACベースのフィルタリングのみが必要な場合でも、br_netfilterこのモジュールはまったく必要ありません。

しかし、ブリッジでIPアドレスまたはTCP / UDPポートに基づいてフィルタリングするにはどうすればよいですか?その後、実行できますecho 1 > /proc/sys/net/bridge/bridge-nf-call-iptablesbr_netfilterこれがモジュールが有効になった理由です。iptablesブリッジされたトラフィックにルールを適用できます。

私が正しく理解したと仮定すると、テストされていない例です。

vifXホストが示すように、名前付き仮想ネットワークインターフェイスを使用してKVM仮想マシンを実行する仮想化ホストを実行しています。仮想ネットワークは、物理インターフェイスと仮想インターフェイスbr0に接続されたブリッジを介して実装されます。 VMのIPアドレス/マスクは10.6.6.6/24です。直接アクセスを介してアクセスできる同じネットワークセグメントには、10.6.6.100/24のIPアドレス/マスクを持つ別の物理サーバーがあります。eno1vifXeno1

最初は、SSH接続を10.6.6.100から10.6.6.6に、またはその逆に設定できます。 10.6.6.100から10.6.6.6への接続を許可しますが、10.6.6.6からのSSH接続をブロックしようとしています。

ネットワークインタフェースを介して標準接続トレースiptables FORWARDルールを作成できます。

iptables -A FORWARD -i vifX -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i vifX -p tcp --dport 22 -j DROP

しかし、最初は動作しません。なぜならあなたではないからです。ルーティング仮想マシンと外部世界間のトラフィック。ブリッジング。したがって、ブリッジされたトラフィックにもルールをbr_netfilter適用できます。iptables

 echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

これで、物理ホスト 10.6.6.100 は VM 10.6.6.6 に SSH で接続できますが、VM はどこからでもポート 22 への SSH 接続を確立できません。同じネットワークセグメント内の他のホストの場合も同様です。

詳しくはこちらをご覧くださいebtableshttps://ebtables.netfilter.org/index.html

具体的にbr_netfilter有効にする方法は次のとおりです。https://ebtables.netfilter.org/documentation/bridge-nf.html

関連情報