如何使用 TAP 后端为 Qemu 设置 NAT?(Windows 10)

Cla*_*hez 3 networking nat qemu windows-10

我想使用 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 
Run Code Online (Sandbox Code Playgroud)

然后:

  • 我下载 OpenVPN 并仅安装TAP-Win32 虚拟以太网适配器
  • 现在,在网络连接中出现了一个新界面:TAP-Windows Adapter V9(我将其重命名为“mytap”)。

下一步是在 TAP 适配器和我用来连接互联网的接口之间创建桥梁。但由于我使用 Wi-Fi,它不起作用,而且桥接不如 NAT 安全。

但是,我发现设置 NAT 的说明特定于 OpenVPN 或 Hyper-V,我不知道如何将它们应用到这种情况。

有关如何进行的任何提示?

rak*_*ice 5

安装 TAP 软件并创建 TAP 适配器实例后,转到“网络连接”窗口(在当前 Windows 10 中:“设置”应用程序 ->“网络和 Internet”,单击“更改适配器选项”)并找到名称TAP 适配器在那里。如果需要,您可以从那里重命名它。

例如,我的 TAP 适配器实例称为Ethernet

从网络连接中调用以太网的 TAP 适配器图标的图片

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
Run Code Online (Sandbox Code Playgroud)

对于具有无法在选项中指定的默认网络设备的系统-device,例如lance.0在 中SS-20,添加如下所示的额外-net nic部分似乎是必需的:

-netdev tap,id=mynet0,ifname=Ethernet -net nic,model=lance,netdev=mynet0
Run Code Online (Sandbox Code Playgroud)

当您启动 Qemu 时,您应该会看到“网络连接”窗口中的 TAP 适配器图标失去了“网络电缆已拔出”指示。

现在,您可以继续在 Windows 端使用“网络连接”窗口中的图标来配置 TAP 适配器,就像您将物理 NIC 连接到单独的物理网络一样,例如:

  • 在其“属性”共享选项卡中启用“允许其他网络用户通过此计算机的 Internet 连接进行连接”,将其配置为 Windows 内置“Internet 连接共享”NAT 的客户端网络,
  • 在其属性中为其提供本地 TCP/IP 设置,以将其用作仅主机网络,或者
  • 如果您想要桥接网络,可以通过上下文菜单将其桥接到另一个网络适配器。