libvirt/qemu/kvm を使用すると、ゲストコンピュータで使用する 1 つ以上のブリッジを定義できます。 libvirt マシンは一般的に呼び出されるブリッジの生成virbr0
(virbr0-nic
いくつかの問題を解決するため) を処理しなければならず、通常ファイアウォールルールの挿入 (通過) も処理してiptables
接続を保証する必要があります (ゲスト間のトラフィックの転送、許可、時々アウトバウンド/拒否)。インバウンドトラフィック全体virbr0
)。
これで移行しているので、過去の経験nftables
を上回るすべてのユースケースに追加された柔軟性と強力な構文が気に入っています。 IPv4とIPv6だけではなく、製品群全体に関連する特定の規則を表現できるという事実はそれ自体価値があります。iptables
ip6tables
ipset
inet
ああ、libvirtは正式にのみサポートしています。iptables
または firewalld
。
今私の問題は次のとおりです。この状況を処理する標準的な方法はありますか?それは何ですか?
以下は私が考慮したいくつかのシナリオです(すべて欠けていますfirewalld
)。
- libvirtが呼び出すデバイスなどを見つけるためにシステムを使用し
nftables
てください。update-alternatives
iptables
- ブリッジ生成をlibvirtからlibvirtに移動し
netplan
、他の方法を使用して必要なルールを動的に挿入します。 - 使用します
nftables
が、引き続きiptables
活動してください -私が知っている限り、これはおそらく最悪の考えです。、いくつかの極端なケース、または一般的に衝突が発生するためです。
答え1
私のアプローチは次のとおりです。標準かどうかはわかりませんが、かなり高い標準ですが、現在のツールとうまく機能しているようです。 Fedora 34ホストで2つの新しいQemu / KVM Windows 10ゲストのインターネットアクセスの問題を発見した後、このアプローチを取りました。 DHCPは、ゲストW10インターフェイスとiptables
一部のランダムvmマネージャ(VMMに示されていない)で動作しないようです。 ))エラーメッセージ(今は覚えていません!)
ホスト:Fedora 34 5.13.12-200.fc34.x86_64 a)nftables
ゲストインターネットアクセスに(移行)とsnatを使用firewalld
し、iptables
すでに非アクティブです。 b) iproute2 を使用して起動時に IP アドレスでブリッジインターフェイスを作成する
ゲスト:a)Windows 10 Qemu / KVMイメージのすべてにVMMを使用して、ホストに作成されたブリッジインターフェイスを指定します。 b) ゲストの Windows 10 設定で Windows 10 インターフェイスに固定 IP アドレスを使用します。
ブリッジインターフェイスは起動時に生成されます。 Windows 10 が起動すると、トンネル インターフェイスが作成され、ブリッジに接続します。
ブリッジの一部の関連ホスト構成フラグメント
- iproute2 ステートメント
/usr/sbin/ip link add name virbr1 type bridge
/usr/sbin/ip link set virbr1 up
/usr/sbin/ip address add dev virbr1 192.168.123.1/24 broadcast 192.168.123.255
- nft snat
table nat {
chain nat {
type nat hook postrouting priority 100;
policy accept;
ip saddr 192.168.123.0/24 counter snat to *myipaddr*;
}
}
VMMビューのブリッジのXML詳細。
<interface type="bridge">
<mac address="52:54:00:xx:xx:xx"/>
<source bridge="virbr1"/>
<target dev="vnet0"/>
<model type="e1000e"/>
<alias name="net0"/>
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</interface>