libvirt nwfilter が他の VM のネットワークを壊す

libvirt nwfilter が他の VM のネットワークを壊す

私は VirtualBox から KVM 搭載の Virt Manager に切り替えたばかりですが、この切り替えには非常に満足しています (当初の動機は、Virtualbox と標準の Proxmox の両方を捨てて libvirt を採用し、デスクトップ VM とサーバー VM に同じ仮想化を使用するためでした)。とはいえ、自分が何をしているのかよくわからないので、助けていただけるとありがたいです。

私は Debian ホストで Debian VM を実行しています。ホスト (/etc/network/interfaces) にシンプルなブリッジを定義し、そこにすべての VM を配置しました。ホストは UFW のデフォルト構成を実行しています。nwfilters を使用するまではすべて順調です。

フィルター (virsh nwfilter-define) を定義し、それを VM 'my-vm1' (別名、my-vm1 のネットワーク デバイス内の reffilter filter='my-vm1-filter') に追加しました。「my-vm1」のトラフィックは期待どおりにフィルタリングされますが、他のVMは接続が失われてしまいます。:

  • 他のVMを再起動しても効果はありません。DHCPを実行できないようです。
  • my-vm1を停止しても効果はありません
  • 他のVMのネットワークを復元するには、ホストを再起動してmy-vm1を起動しないことが必要です。
  • my-vm1 を起動した後、iptables -L への変更を理解しようとしましたが、混乱しています。しかし、そもそも iptables について何も知りません。

最初の質問: nwfilters の使用に関して、私が残念ながら見逃していたよく知られた問題や手順、または制限はありますか?

そうでない場合は、次に試すべきことについての提案はありますか? 私の問題に関連する新しいことを学べて嬉しいです。

答え1

誰かがここに来た場合のために、進捗状況をお知らせします。

  • 私は、古い投稿で参照されているiptablesよりもnftのほうが良い画像が得られることに気付きました。私が理解している限りでは、libvirtは現在nftablesを使用しています。
  • ufw は libvirt とうまく連携しないことが判明しました。これを無効にすると問題はなくなり、nwfilter のない他の VM は正常に動作します。
  • どこかで、firewalld は libvirt と相性が良いかもしれないと読んだが、試したことはない。

編集: 私のような初心者にとっては、少なくとも私の単純な使用例では、firewalld の方がはるかにうまく機能します。

  • ホストブリッジを「libvirt」ゾーンに配置する
  • そのゾーンのサービス、ポートなどは、ホストの着信トラフィックにのみ適用されます(独自のnwfilterに依存できるVMには適用されません)。
  • libvirt ゾーンのターゲットは「受け入れる」(ドロップも拒否もしない) ままにする必要があります。直感に反しますが、サービス/ポートでカバーされていないパケットはホストによって受け入れられませんが、VM トラフィックには「受け入れる」ことが必要です。

関連情報