首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何告诉qemu随机分配MAC地址

如何告诉qemu随机分配MAC地址
EN

Unix & Linux用户
提问于 2022-10-01 17:31:47
回答 1查看 876关注 0票数 0

我正在启动三个Qemu,每个‘m都有几个网络接口。网络接口配置如下所示:

代码语言:javascript
运行
复制
-nic user,hostfwd=tcp::"${ssh_ports[$machine]}"-:22,model=virtio-net-pci \
-nic bridge,br="${bridge1}",model=virtio-net-pci
...

在所有的机器中,我发现第一个网络设备的MAC地址是52:54:00:12:34:56,第二个...:57,第三个...:58等等。这会导致我的VM之间的MAC地址冲突。如何让Qemu随机分配MAC地址?

PS:

  • 不确定这是否相关:我有两个桥接口,每个VM在第一个桥中有一个网络接口,在第二个桥中有一个网络接口。
  • 当然,我可以使用bash生成一些随机数,然后显式地将其设置为参数。不过,如果Qemu自己也这么做,我会觉得更好。
  • 一次快速的搜索发现了那些想要达到相反目标的人的问题:让Qemu分配一些预先确定的MAC。这些问题听起来像是MAC地址的随机分配实际上是默认的。
EN

回答 1

Unix & Linux用户

发布于 2022-10-02 03:01:00

你不会想那样做的。使用随机MAC地址将不可避免地导致MAC地址冲突-这就是为什么您看到这些搜索结果。

相反,您应该使用带有mac=macaddr选项的-nic为每个VM上的每个网络接口分配一个不同的硬编码MAC地址。例如:

  • 具有第一个VM的-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地址已经分配并属于哪个VM。

或者只使用利布维特,它自动处理MAC地址分配。海事组织,没有足够的理由手动运行qemu而不是使用libvirt -没有任何VM自定义可以用qemu完成,您也不能使用libvirt....and实现任何定制脚本的自动化--这只是对libvirt已经做得更好的东西的拙劣模仿(我从个人经验中知道这一点,因为我在切换到使用libvirt之前已经使用了非常复杂的qemu命令行。libvirt是一个用于自动化VM的API,它为shell、perl、python和许多其他语言提供了工具/库。

顺便说一下,硬编码MAC地址的一个额外好处是(如果您使用DHCP为每个VM分配IP地址),您可以配置dhcp守护进程为每个MAC地址分配固定的IP地址,这样每个VM都可以有一个静态IP和一个可靠的主机名(在DNS或/etc/host文件中)。

运行dnsmasq (或者类似的软件--个人而言,我使用bind9和ISC dhcpd,因为我已经将它们用于与VM无关的目的)为VM提供组合dhcp和dns,这并不少见。事实上,当使用libvirt作为qemu、kvm等的包装器时,这是一个相当标准的设置。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/719435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档