如何让在 qemu/kvm 上运行的 Windows 客户机使用 DHCP 服务器从物理路由器获取 IP 地址?

如何让在 qemu/kvm 上运行的 Windows 客户机使用 DHCP 服务器从物理路由器获取 IP 地址?

我在 Ubuntu 18.04 LTS 上使用 qemu/kvm 以客户机身份运行 Windows XP。
我想使用此 Windows 实例来管理使用 ActiveX 小程序的 CCTV IP 摄像机。

我需要这个 Windows XP 从与 IP 摄像机相同的子网获取 IP。
如何使用虚拟机管理器配置此虚拟机?

我使用笔记本电脑,所以我的主要连接是 WiFi(接口名称 wlp2s0)。

/etc/netplan/01-network-manager-all.yaml我有

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

如果我编辑内容,/etc/network/interfaces我就无法连接到互联网(笔记本电脑无法启动 WiFi 连接)

我试过本教程沒有任何成功

然后我尝试这个。这里说“然后将以太网接口添加为网桥中的端口...”并且我注意到该nmcli命令可以传递type参数。我阅读了有关该参数的帮助,并设法传递wifi ssid MYSSID参数以使用我的 WiFi 连接配置该网桥。

因此我设法拉取以下命令:

sudo nmcli conn add type bridge con-name br0 ifname br0
sudo nmcli conn add type wifi ssid MYSSID slave-type bridge con-name bridge-br0 ifname enp1s0 master br0

在第二个中,我将以太网更改为 wifi ssid

sudo nmcli conn show --active
sudo nmcli conn up br0

然后教程说我需要关闭以太网连接 - 所以我认为在我的情况下我需要关闭 wifi 连接。

这怎么可能行得通?我希望我的笔记本电脑有连接,并且我的桥接虚拟客户操作系统也有连接。

当我发出ip abr0 连接时,它没有来自 DHCP 的 IP 地址。

如果我建立 WiFi 连接,桥接接口上不会显示新的 IP 地址(ip a

答案1

有一个随 QEMU/KVM 环境一起安装的本机桥 (virbr0)。它用于与本地子网建立 NAT(网络地址转换)连接。

这应该足以管理您的 IP 摄像头。如果其他系统要联系您的 XP VM,则它只需要在网络上拥有自己的 IP。

但无论哪种情况,您都应该从 NAT 桥接开始,以保​​持简单,直到您确定您的 XP VM 配置正确。几乎肯定不是!

您可以通过以下方式测试主机系统上是否存在虚拟桥:

virsh net-dumpxml default

如果存在,您应该能够通过将网络源设置为来选择它以供您的 XP VM 在 vi​​rt-manager 中使用“虚拟网络‘默认’:NAT”如图所示:

virt-manager 网络选择

检查您的 XP 是否有可用的网络驱动程序。如果以下图片很熟悉... 在此处输入图片描述

您需要一张驱动程序磁盘!我推荐 Red Hat 的 virtio 驱动程序。

  1. 下载最新的 virtio 驱动程序 ISO (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.185-2/virtio-win.iso这是我上次检查时看到的)。
  2. 将 ISO 附加到您的 XP VM 并启动它!
  3. 在“查找新硬件”/连接到 Windows 更新时,拒绝(否)。
  4. 选择“从特定位置安装”/下一步
  5. 选择“搜索可移动媒体”/下一步
  6. 在“硬件安装/Red Hat Virtio 以太网适配器”中,选择“仍然继续”。
  7. 打开命令提示符窗口并 ping 您的 IP 摄像头(适配器可能需要几秒钟才能启动)。

如果您仍想要完整桥接,请添加评论。我在我的环境中只使用 networkd/Netplan,但我认为我可以提出一个 Network-Manager 解决方案。

答案2

您需要在主机 PC 上创建网桥。此答案基于以下理解:您的 IP 摄像机、Ubuntu 主机操作系统和 Windows XP VM 都将位于同一网络上(无需高级 VLAN 配置)。

  1. 安装 bridge-utils 包:sudo apt-get install bridge-utils
  2. 编辑 /etc/network/interfaces 来配置创建的 br0 接口的网络,使用以下详细信息(替换与您的网络相关的 IP 信息)。

主机静态 IP 配置

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
        address 192.168.0.10
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 192.168.0.5 8.8.8.8
        dns-search example.com
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

请注意,文件中没有行auto eth0iface eth0 inet manual。这是因为 br0 将调出分配给它的组件。

bridge_stp off是生成树的设置。如果您有网络查看功能,则可能需要启用此功能。

bridge_fd 0关闭所有转发延迟。如果你不知道这是什么,你可能不需要它。

bridge_maxwait 0是系统等待以太网端口启动的时间。零表示无需等待。

主机 DHCP 配置

auto lo
iface lo inet loopback

auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

这将创建一个虚拟接口 br0。您可以拥有多个网桥,有些网桥不需要分配任何实际网卡。

  1. 通过运行命令sudo /etc/init.d/networking restart或重新启动主机上的网络sudo reboot

如果在停止或启动客户虚拟机时主机冻结了几秒钟,这是因为 Linux 桥接器正在使用所有连接接口中编号最小的接口的硬件地址(MAC 地址)。要解决此问题,请将以下行添加post-up ip link set br0 address 00:00:00:00:00:00到桥接接口配置中,将 MAC 地址替换为连接的物理接口的 MAC 地址。

链接:

答案3

我建议您尝试以下方法。这种方法对我来说已经成功了很多次,但是主机操作系统是 CentOS,而不是 Ubuntu,虚拟机是基于 Linux 的,而不是基于 Windows 的。不过,我认为操作系统在这里不会产生太大的影响。

  1. 不要对您的wlp3s0界面做任何特殊的事情 - 只需保留其默认配置。

  2. 在 中virt-manager,按照下图更改虚拟机上的网卡的设置(virt-manager如果没有的话,请安装)。

virt-manager 屏幕截图

将“源设备”设置为“wlp3s0 : macvtap”(我希望你在选择菜单中有这个选项),将“源模式”设置为“桥接”。虚拟机需要关闭并重新启动才能使设置生效。

通过这样做,您可以直接将虚拟机上的虚拟网卡连接到wlp3s0主机操作系统上的设备。它应该看到与您wpl3s0看到的完全相同的网络,并且表现得就像连接到该网络的另一个设备一样。

它对我有用,我希望它对你也有用。

相关内容