ebtablesでIP-MACペアリングルールを作成しようとしています。いくつかのチュートリアルと関連する質問[1]がありますが、私は特定の設定をしています。
環境: 私は多くの物理ホストを持っています。各ホストにはいくつかのイーサネットカードがあり、結合で結合され、ブリッジのスレーブとして使用されます。各ホスト(kvm、qemu、libvirt)には多くの仮想マシンがあります。各仮想マシンは、vnet [0-9] +と呼ばれる新しいポートを介して物理ホストのブリッジに接続されます。NATはありません。ネットワークは正常に機能し、すべての物理ホスト、すべての仮想マシンにpingを実行できます。各仮想マシンには、独自のIPアドレスとMACアドレスがあります。
問題:仮想マシン内で、IPアドレスを別のアドレスに変更できます。
見つかった解決策: ebtablesサイト[2]には既知の解決策がありますが、この解決策は1つのホストのみが使用されている場合に適用できます。すべてのトラフィックを許可し、許可されていないMACを持つIPからのパケットがある場合、パケットはドロップされます。複数のホストがある場合は、すべての既存のIP-MACペアをすべてのホストに登録する必要があります。逆ポリシーソリューションが必要です。
CRAFTED SOLUTION: ebtablesを逆に使用しようとしました。これが私が試した例です。
例1
Bridge table: filter
Bridge chain: INPUT, entries: 2, policy: DROP
-i bond0 -j ACCEPT
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: FORWARD, entries: 0, policy: ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
例2
Bridge table: filter
Bridge chain: INPUT, entries: 0, policy: ACCEPT
Bridge chain: FORWARD, entries: 1, policy: DROP
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
私が欲しいのは、デフォルトのポリシーDROPを設定し、特定のホストに正しいIP-MACペアがデプロイされている仮想マシンからのトラフィックのみを許可することです。ただし、これらのソリューションは機能しません。
質問:実行中の仮想マシンの指定されたIP-MACペアに対してのみブリッジでトラフィックを許可し、ポートvnet [0-9] +から来るすべての不明なIP-MACペアをドロップする方法は?
回答有難うございます。