我正在启动三个Qemu,每个‘m都有几个网络接口。网络接口配置如下所示:
-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:
发布于 2022-10-02 03:01:00
你不会想那样做的。使用随机MAC地址将不可避免地导致MAC地址冲突-这就是为什么您看到这些搜索结果。
相反,您应该使用带有mac=macaddr
选项的-nic
为每个VM上的每个网络接口分配一个不同的硬编码MAC地址。例如:
-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等的包装器时,这是一个相当标准的设置。
https://unix.stackexchange.com/questions/719435
复制相似问题