QemuにMACアドレスをランダムに割り当てるように指示する方法

QemuにMACアドレスをランダムに割り当てるように指示する方法

私はそれぞれ、複数のネットワークインターフェイスを備えた3つのQemu VMを起動しました。ネットワークインタフェースの設定は次のとおりです。

-nic user,hostfwd=tcp::"${ssh_ports[$machine]}"-:22,model=virtio-net-pci \
-nic bridge,br="${bridge1}",model=virtio-net-pci
...

すべてのマシンの中で、最初のネットワークデバイス52:54:00:12:34:56、2番目...:57、3番目...:58などのMACアドレスが見つかりました。これにより、仮想マシン間でMACアドレスの競合が発生します。 QemuにMACアドレスをランダムに割り当てる方法は?

添付:

  • これが関連しているかどうかはわかりません。 2 つのブリッジ インターフェイスがあり、各仮想マシンには、最初のブリッジにネットワーク インターフェイスがあり、2 番目のブリッジにネットワーク インターフェイスがあります。
  • もちろん、bashを使用して任意の数値を生成し、それをパラメータとして明示的に設定できます。 Qemuが自分でやったならもっといいと思います。
  • クイック検索で、反対の目標を達成したい人からいくつかの質問がありました。 Qemuに所定のMACを割り当てさせることです。これらの問題は、MACアドレスのランダムな割り当てが実際にデフォルト設定のように聞こえます。

答え1

あなたはそうしたくありません。任意のMACアドレスを使用すると、必然的にMACアドレスの競合が発生します。なぜこれらの検索結果が表示されます。

代わりにその他mac=macaddrこのオプションを使用して、各仮想マシンの各ネットワークインターフェイスにMACアドレスをハードコードします-nic。たとえば、

  • -nic user,...,mac=52:54:00:12:34:56-nic bridge,...,mac=52:54:00:12:34:57最初の仮想マシンの場合、
  • 52:54:00:12:34:58&52:54:00:12:34:59第二に、
  • そして52:54:00:12:34:60及び52:54:00:12:34:61第三。

説明をテキストファイルに保存して、割り当てられたMACアドレスと仮想マシンに属するアドレスを記録します。

または単に使用ライブラリ仮想マシン、MACアドレスの割り当てを自動的に処理します。 IMO、libvirtを使用する代わりに手動で実行する理由はあまりありませんqemu。 qemuやlibvirtを使用して実行できるVMのカスタマイズはありません...そしてそれを自動化するために書くことができるカスタムスクリプトは、libvirtの間違った模倣です。もう良くなっています。 (私はlibvirtに切り替える前に私のカスタム設定ファイルを使って非常に複雑なqemuコマンドラインをDIYするのに数年を費やしていたので、私は個人的な経験を通してこれを知っています。)ツール/ライブラリを含む仮想マシン自動化用のAPI。


しかし、MACアドレスをハードコーディングすることで追加の利点は、(DHCPを使用して各仮想マシンにIPアドレスを割り当てる場合)、各MACアドレスに固定IPアドレスを割り当てるようにdhcpデーモンを設定できることです。静的IPと信頼できるホスト名(DNSまたは/ etc / hostsファイル)を持つことができます。

組み合わされたdhcpとdnsをVMに提供するために実行するdnsmasq(または同様のソフトウェア - 個人的に私はVMに関連していない目的ですでに使用しているのでbin9とISC dhcpdを使用します)ことはまれではありません。実際、これはlibvirtをqemu、kvmなどのラッパーとして使用するときにかなり標準的な設定です。

関連情報