我想使用 TAP 网络后端,而不是 Qemu 提供的默认 SLIRP。这是我用来创建虚拟机的批处理文件(受到此启发):
@echo off
set "QEMUIMG=D:\user\VMs\Qemu\qemu\qemu-img.exe"
set "IMAGE=disk.img"
set "ISOFILE=D:\user\VMs\isos\isofile.iso"
set "QEMUBIN=D:\user\VMs\Qemu\qemu\qemu-system-x86_64.exe"
rem ==================================
rem Safety net
rem ==================================
if not exist %IMAGE% (
rem CREATE a virtual hard disk
%QEMUIMG% create -f qcow2 %IMAGE% 32G
) else (
echo file %IMAGE% already exist. Delete or move and try again.
goto:eof
)
rem ==================================
rem Run the virtual machine
rem ==================================>
start "QEMU" %QEMUBIN% -k us -usb -device usb-tablet -drive ^
file=%IMAGE%,index=0,media=disk,format=qcow2 -cdrom %ISOFILE% -m 2048M ^
-boot order=d -smp cpus=2 -rtc base=localtime,clock=host -parallel none ^
-serial none -name vm -no-acpi -no-hpet -no-reboot -show-cursor ^
-netdev tap,id=tap0,ifname=mytap,script=no,downscript=no -device netdev=tap0
然后:
- 我下载了 OpenVPN 并只安装了TAP-Win32 虚拟以太网适配器。
- 现在在网络连接中出现了一个新界面:TAP-Windows 适配器 V9(我将其重命名为“mytap”)。
下一步是建立桥梁TAP 适配器与我用于连接互联网的接口之间。但由于我使用 Wi-Fi,它不起作用,并且桥接的安全性不如 NAT。
然而,我发现设置 NAT是 OpenVPN 或 Hyper-V 所特有的,我不知道如何将它们应用于这种情况。
关于如何进行有什么提示吗?
答案1
安装 TAP 软件并创建 TAP 适配器实例后,转到“网络连接”窗口(在当前 Windows 10 中:设置应用程序 -> 网络和 Internet,单击“更改适配器选项”)并在那里找到 TAP 适配器的名称。如果需要,您可以从那里重命名它。
例如我的TAP适配器实例称为Ethernet
:
ifname=
在的参数中使用 TAP 适配器的名称-netdev tap
。
id=
将的设置netdev
为您喜欢的任何内容;典型示例使用mynet0
。这是 Qemu 实例内部的虚拟网络的名称,用于连接模拟网络接口和 TAP 适配器连接的某种组合。
然后您可以参考此内容netdev
将其连接到虚拟 NIC(网络接口卡)。执行此操作的机制取决于您在 Qemu 中模拟的机器类型。
对于像 PC 这样的设备,您需要将 NIC 指定为单独的-device
选项,然后将其放在选项netdev=
中device
:
-netdev tap,id=mynet0,ifname=Ethernet -device e1000,netdev=mynet0
对于具有无法在选项中指定的默认网络设备的系统-device
,例如lance.0
在中SS-20
,添加这样的额外-net nic
部分似乎是必需的:
-netdev tap,id=mynet0,ifname=Ethernet -net nic,model=lance,netdev=mynet0
当您启动 Qemu 时,您应该会看到网络连接窗口中的 TAP 适配器图标失去“网线已拔出”指示。
现在,您可以继续按照自己的喜好在 Windows 端配置 TAP 适配器,使用“网络连接”窗口中的图标,就像将物理 NIC 连接到单独的物理网络一样,例如:
- 在其属性的“共享”选项卡中启用“允许其他网络用户通过此计算机的 Internet 连接进行连接”,以将其配置为 Windows 内置“Internet 连接共享”NAT 的客户端网络,
- 在其属性中为其提供本地 TCP/IP 设置,以将其用作仅主机网络,或者
- 如果您想要桥接网络,可以通过上下文菜单将其桥接到另一个网络适配器。