当我尝试使用 TAP 接口连接 qemu 时,虚拟机会冻结,不知道为什么。但是使用-netdev user
它不会冻结,但根本无法连接到虚拟机。
我测试了使用情况ESXi
,发现使用界面Centos 7
时两个虚拟机都会冻结。虚拟机启动正常,但重新启动时虚拟机会冻结,无法恢复。使用界面时加载时会冻结。Tap
Centos 7
eth0
ESXi
Tap
Qemu
我使用 openVPN 在 Windows 10 上创建了一个 Tap 接口,将该接口重命名为 Ethernet7,并在运行VM时使用了以下命令。
-netdev tap,ifname=Ethernet7,script=no,downscript=no,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=DE:AD:BE:EF:16:B6
我从 qemu.org 下载了最新的 Windows 版本的 Qemu
答案1
更新:由于 Windows 10 Tap 接口使用的是旧的 2014 驱动程序,因此 TAP 接口无法正常工作。我创建了一个新接口(使用hdwwiz.exe
),并且可以选择 2019 驱动程序而不是旧驱动程序。TAP 接口工作正常,不会冻结 VM。
User mode
如果您不需要 TAP 接口,网络也可以正常工作。
qemu-system-x86_64 -boot d -hda centos.img -m 2048 -smp cpus=2,cores=2 -netdev user,id=n1,hostfwd=tcp::2222-:22 -device e1000,netdev=n1
在Centos
我必须运行命令,dhclient eth0
因为它不会自动分配 dhcp IP。运行命令后,VM 获取 IP 地址,10.0.2.15
然后我可以使用 SSH 连接到它ssh -p 2222 root@localhost
。
User mode
对于 ESXi,我必须在 ESXi 设置中启用 SSHD 并使用 localhost 进行连接。ICMP 在网络中对两者都不起作用。
qemu-system-x86_64 -boot d -hda esxi.img -m 4096 -cpu Westmere -machine q35 -smp cpus=2,cores=2 -accel tcg -netdev user,id=n1,hostfwd=tcp::2223-:22,hostfwd=tcp::9443-:443,hostfwd=tcp::8085-:80 -device e1000,netdev=n1