要直接连接到QEMU虚拟机,而不通过端口转发的方式,可以采用桥接网络(Bridged Networking)或创建一个虚拟网络接口卡(TAP)的方式,让虚拟机与宿主机处于同一网络中。这样,虚拟机可以直接获得一个与宿主机相同网段的IP地址,从而使得宿主机可以直接连接到虚拟机。以下是详细的操作步骤:
方法 1: 使用桥接网络 (Bridged Networking)
通过桥接网络,可以让虚拟机直接与宿主机所在的物理网络通信。
1. 修改启动脚本使用桥接网络
你需要将QEMU的网络设置从-net user
修改为桥接网络。假设宿主机的网络接口为eth0
或wlan0
(具体接口名称可能因网卡不同而有所不同)。
@echo off
"C:\Program Files\qemu\qemu-system-aarch64.exe" -m 8G -cpu cortex-a72 --accel tcg,thread=multi -M virt -bios c:\isos\QEMU_EFI.fd -rtc base=localtime -display sdl -device VGA -device nec-usb-xhci -device usb-tablet -device usb-kbd -drive if=virtio,file=c:\qvm\kylin_arm64.img,id=hd0,format=raw,media=disk -net nic,model=virtio -net bridge,br=br0
2. 配置桥接网络
-
Windows: 通常不需要额外配置,如果使用的是VMware或者VirtualBox,可以在安装时选择桥接适配器。QEMU也支持桥接,但需要手动创建网络桥。
-
Linux: 如果你使用Linux宿主机,需要创建一个桥接接口,例如
br0
,并将物理网络接口(例如eth0
或wlan0
)桥接到br0
。创建桥接接口的步骤(以
netplan
为例):network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no bridges: br0: interfaces: [eth0] dhcp4: yes
之后,重新启动网络服务:
sudo netplan apply
3. 获取虚拟机IP地址
在虚拟机启动后,使用命令查看虚拟机获得的IP地址:
ip a
或者使用ifconfig
命令:
ifconfig
找到与虚拟机网络接口相关的IP地址。
4. 直接连接到虚拟机
在Xshell中,直接使用虚拟机的IP地址进行连接。设置如下:
- 主机:虚拟机的IP地址
- 协议:SSH
- 端口号:22(默认)
方法 2: 使用TAP接口 (仅Linux)
在Linux系统上,使用TAP接口也可以实现虚拟机与宿主机之间的直接通信。
1. 创建TAP接口
sudo ip tuntap add dev tap0 mode tap
sudo ip link set tap0 up
sudo ip link set tap0 master br0
2. 修改启动脚本使用TAP接口
"C:\Program Files\qemu\qemu-system-aarch64.exe" -m 8G -cpu cortex-a72 --accel tcg,thread=multi -M virt -bios c:\isos\QEMU_EFI.fd -rtc base=localtime -display sdl -device VGA -device nec-usb-xhci -device usb-tablet -device usb-kbd -drive if=virtio,file=c:\qvm\kylin_arm64.img,id=hd0,format=raw,media=disk -net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=no
3. 获取虚拟机IP地址并连接
获取虚拟机的IP地址后,通过Xshell直接连接。
注意事项
- 桥接网络和TAP接口: 需要宿主机的网络配置支持(比如网卡允许混合模式,尤其在Wi-Fi接口上可能受限)。
- 虚拟机的防火墙配置: 确保虚拟机的防火墙允许SSH访问。
- 宿主机网络配置: 确保宿主机的网络不会阻止虚拟机的流量。
通过这些配置,虚拟机可以直接和宿主机通信,并且宿主机可以直接通过Xshell连接到虚拟机的SSH服务。
标签:直连,桥接,虚拟机,宿主机,网络,IP地址,device,QEMU From: https://blog.csdn.net/yxyc666/article/details/141430862