在创建 Qemu VM 时设置静态 IP

在创建 Qemu VM 时设置静态 IP

我正在使用 Qemu 启动虚拟机:

sudo qemu-system-arm \     
-kernel kernel-qemu-4.14.79-stretch \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-hda raspbian-stretch-lite_1.qcow \
-cpu arm1176 -m 256 \
-M versatilepb \
-dtb versatile-pb.dtb \
-no-reboot \
-serial stdio \
-display none \
-net nic,addr=10.10.10.11/24, -net bridge,br=br0

但是,这样设置虚拟机的 IP 不起作用。相反,设置了一个完全不同的 IP。有没有简单的方法可以做到这一点?

如果没有,是否可以找出已启动虚拟机的 IP?也许可以使用 Qemu 启动时可设置的 MAC?

谢谢你!

答案1

更多的是一种权宜之计,而不是真正的解决方案:

由于可以为 NIC 指定 MAC 地址,因此使用 dnsmasq 作为网桥上的 DHCP 服务器可以实现该目标:

sudo dnsmasq --conf-file=dnsmasq.conf 

该 conf 文件应包含以下行:

port=0
interface=br0
no-dhcp-interface=eth0
dhcp-range=10.10.1.10,10.10.1.150,12h
dhcp-host=2c:4d:11:12:11:11,10.10.1.25

port=0禁用 DNS 服务器并no-dhcp-interface=eth0确保物理接口不受影响(如果您的接口不同,请更改)。现在,dhcp-host=<MAC>,<IP>可用于创建手动映射。可以使用以下命令启动 IP 为 10.10.1.25 的 Qemu VM:

sudo qemu-system-arm -net nic,macaddr=2c:4d:11:12:11:11 -net bridge,br=br0

假设已经设置了桥接接口:

ip link add name br0 type bridge
ip link set br0 up

相关内容