ホストシステムからゲストのネットワーク構成(IPアドレス、サブネット、ゲートウェイ、ブロードキャストアドレス)を設定します。使用されているネットワーク設定はbridge
モードです。クライアント自体を静的ネットワーク構成に構成するのではなく、ホストからネットワークを構成するにはどうすればよいですか?
私が実行すると:
virsh edit vm1
<network>
ブロックも同様で、そこからネットワークインターフェイスを構成しようとしましたが、残念ながらゲストVMはそれを使用していないようで、ネットワークに対してオフラインになっています(自動を使用しているため)ネットワーク構成のみ)...ゲストVMはLinuxとWindowsの両方に基づいています。
ゲスト内で構成を行わない場合、唯一のオプションは、静的IPアドレスを渡すDHCPサーバーです。 bridge
モードを使用する場合、それはおそらく一部の外部DHCPサーバーになります。静的リースを提供する方法については、そのマニュアルを参照してください。
ただし、少なくとも転送モードnat
またはroute
では、libvirtの組み込みdnsmasqd
を使用できます(libvirtdの最新バージョンは、dnsmasqの「dhcp-hostsfile」オプションをサポートしています)。方法は次のとおりです。
まず、静的IPアドレスを割り当てるVMのMACアドレスを確認します。
virsh dumpxml $VM_NAME | grep 'mac address'
次にネットワークを編集します
virsh net-list
virsh net-edit $NETWORK_NAME # Probably "default"
を見つける <dhcp>
セクションで、ダイナミックレンジを制限し、VMのホストエントリを追加します
<dhcp>
<range start='192.168.122.100' end='192.168.122.254'/>
<Host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
<Host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
<Host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>
次に、VM=を再起動します(またはDHCPクライアントを再起動します。例:ifdown eth0; ifup eth0
)
更新:「virsh net-edit」の後で変更が有効にならない可能性があるという報告があるようです。その場合は、編集後にこれを試してください。
virsh net-destroy $NETWORK_NAME
virsh net-start $NETWORK_NAME
... VMのDHCPクライアントを再起動します。
それでもうまくいかない場合は、
注:KVMホストが特定のネットワーク構成を使用するように不明なOSと不明な構成でVMを強制することができる方法はありません。しかし、知っている場合、 VMは特定のネットワーク構成プロトコルを使用します-DHCPと言います-これを使用できます。これはこの投稿が想定していることです。
Some OS(一部のLinuxディストリビューションなど)では、ネットワーク構成オプションをゲストに渡すこともできます。カーネルコマンドラインを介して。しかし、それはOSに非常に特有であり、DHCP方式に勝る利点はありません。
virsh net-update
は良いコマンドです(ネットワークを再起動/破壊する必要はありません)
参照: https://www.redhat.com/archives/libvir-list/2012-September/msg01380.html
dnsmasq
プロセスに-HUP
信号を送信するだけで、新しく追加されたIP-MACマッピングをdnsmasq
に「表示」させることができました。その後、libvirtd
やネットワーク自体を再起動する必要なく、新しいゲストを再起動するだけで、適切なIPを割り当てることができました。
公式のlibvirtドキュメント( http://wiki.libvirt.org/page/Networking#Applying_modifications_to_the_network )は、プロセス全体を自動化するこの非公式のPerlスクリプトについて言及しています: https://Gist.github .com/bendiken/032ea1bddb9ffafe98b4
私はこのスクリプトを自分で試したことはありません。hostsfileがすでに更新されており、-HUPシグナルを送信するだけで十分であることがわかったためです。
ホストはDebian 7.8を実行しており、パッケージのバージョンは次のとおりです。