配置 qemu-system 以使用主机端虚拟桥

配置 qemu-system 以使用主机端虚拟桥

我将使用 qemu-system 作为虚拟机管理程序运行以下设置:

主机设置:

Hypervisor machine (Ubuntu 16.04)           Second Machine 
qemuVm--tap0--br123--eth0--|Hardware hub|--eth42--SecondPC

因此,这是一个包含由 qemu-system 托管的虚拟机的网络,并通过 tap 接口连接到虚拟网桥。虚拟网桥由主机创建。虚拟网桥不是 libvirt/virt-manager 或其他系统的默认网桥。虚拟网桥有一个真正的 eth0 网卡。此网卡通过有线方式与真正的集线器连接。连接到集线器的是另一台真正的 PC。所有客户端都使用静态 IP 地址。我想在所有连接的机器之间使用所有服务,如 ICMP、UDP、TCP、FTP 等

IP 列表:

  • win7qemuVm: 10.0.0.10
  • br123: 10.0.0.100(我不想使用 qemu 的默认桥)
  • tap0: ?是否可以/有必要分配 IP 地址?
  • eth0: ?需要分配ip地址吗?
  • eth42 10.0.0.201(第二台电脑的界面)

我 想 和 老人 一起工作-netdev/-device不想 和 老人 一起工作-net nic.

我的 win7qemuVm 需要哪些命令行参数才能将其连接到 tap 设备?

有 IP 路由、ipforwarding 和 iptables。我是否需要更改默认的 ubuntu 设置才能实现这样的网络?

我的主机网络已经配置如下:

iface tap11 inet manual
    pre-up tunctl -t tap0
    up ifconfig tap0 up
    down ifconfig tap0 down

auto br123
iface br123 inet static
   address 10.0.0.100
   netmask 255.255.255.0
   bridge_ports eth0
   bridge_ports tap0
   bridge_stp off
   bridge_fd 0.0
   pre-up ifdown eth0
   pre-up ifdown tap0
   pre-up ifup eth0
   pre-up ifup tap0
   post-down ifdown eth0
   post-down ifdown tap0

网络管理器已被禁用。

答案1

上面的配置是正确的,可以解决问题。第一次成功是,当你的 bride/tap 等保持 UP 时。所以这说明它被使用了,系统正在运行。应该看起来像这样:

$ ip link show
# Output modified and formatted:
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
   master br123 state UP 
   mode DEFAULT group default qlen 1000
   link/ether 68:05:ca:51:8e:ff brd ff:ff:ff:ff:ff:ff
5: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 
   master br123 state UP
   mode DEFAULT group default qlen 1000
   link/ether ce:c4:55:91:86:6f brd ff:ff:ff:ff:ff:ff
6: br123: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
   state UP mode DEFAULT group default qlen 1000
   link/ether 68:05:ca:51:8e:ff brd ff:ff:ff:ff:ff:ff

您可以看到提到 master 和 state 的那一行,那些是重要的。

下一个挑战是找到一个支持这个 tap 的网络设备。我已经为我的 XP 使用了virtio network device并下载了virtio driver。我还没有测试其他操作系统,只测试了一些虚拟网卡,所以其他的也有可能工作。但重要的是,并非所有虚拟设备驱动程序都适用于 tap 设备。例如,Windows 中的网卡可能已启动并正在运行,但您无法进出任何 ping。如果您的防火墙已关闭,而其他所有配置都正确,则您可能添加了一个适配器,但不支持 tap 设备。

网络连接是 1:1 对,因此您需要使用两个步骤来完成此操作。主机端配置从 开始-netdev,您可以在其中定义连接到(此处)主机的网络适配器。tap0是其中的一部分。重要的是定义ID

ID用于定义客户机接口的客户端配置。.-devicevirtio-net-pci本例中使用的网络适配器。

exec qemu-system-x86_64 \
-enable-kvm \
-hda W_XP.img \
-m 1G \
-monitor stdio \
-cdrom /media/img/SharedImages/driver/W_XP/virtio-win-0.1.126.iso \
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=mynet0,id=mynet0,mac=52:54:00:c9:18:27 \
$@

命令来源

机器运行期间或运行后控制桥梁的状态

$ dmesg
[time in sec ]
[13649.332345] br123: port 2(tap0) entered blocking state
[13649.332346] br123: port 2(tap0) entered forwarding state
  machine running
[13674.309067] br132: port 2(tap0) entered disabled state
  machine stopped

我已经使用 winXP SP3 检查了以下适配器的设置,所有适配器均可与 tap-device 配合使用:

只有某些情况您需要安装外部驱动程序。

rtl8139 Realtak RTL8139-Familie-PCI-Fast Ethernet-NIC   
   5.398.613.2003 RTL8139.sys   100 
ne2k_pci    Realtek RTL8029(AS)-basierender Ethernetadapter (Standard)
   5.508.803.2000 RTL8029.sys   10
e1000-82545em   Intel(R) PRO/1000 MT Network Connectiion
   Intel 8.10.3.0 e1000325.sys uvm. 1000
e1000   Intel(R) PRO/1000 MT Network Connectiion
   Intel 8.10.3.0 e1000325.sys uvm. 1000
virtio-net-pci  Red Hat VirtIO Ethnernet Adapter    
   51.73.104.12600 netkvm.sys 1000

相关内容