如何为单个 KVM 虚拟机配置多个 Tap 接口

如何为单个 KVM 虚拟机配置多个 Tap 接口

我正在尝试使用 Linux KVM 设置虚拟机以进行 F5 BIG-IP VE 部署(用于实验室)https://support.f5.com/content/kb/en-us/products/big-ip_ltm/manuals/product/bigip-ve-kvm-setup-11-3-0/_jcr_content/pdfAttach/download/file.res/BIG-IP®_Virtual_Edition_Setup_Guide_for_Linux_KVM.pdf。

此虚拟机需要 3 个不同的网络接口(管理、外部连接和内部连接)

我一直在尝试使用以下配置在 /etc/network/interfaces 中设置这些连接:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

auto br0
iface br0 inet dhcp
   pre-up ip tuntap add dev tap0 mode tap user root
   pre-up ip tuntap add dev tap1 mode tap user root
   pre-up ip tuntap add dev tap2 mode tap user root
   pre-up ip link set tap0 up
   pre-up ip link set tap1 up
   pre-up ip link set tap2 up
   bridge_ports all tap0 tap1 tap2
   bridge_stp off
   bridge_maxwait 0
   bridge_fd      0
   post-down ip link set tap0 down
   post-down ip link set tap1 down
   post-down ip link set tap2 down
   post-down ip tuntap del dev tap0 mode tap
   post-down ip tuntap del dev tap1 mode tap
   post-down ip tuntap del dev tap2 mode tap

尽管每当我配置虚拟机时,只有一个 tap 接口会显示为与桥接器关联。我花了 4-5 个小时尝试让这些接口工作,但没有任何成功。我在这里做错了什么?

在此处输入图片描述

答案1

您需要在主机上设置的只是网桥。配置虚拟网卡并将其连接到虚拟机后,虚拟机启动时会自动创建分接头。

现在,无需阅读实际指南,您似乎需要三个不同网络上的三个接口。如果您将所有虚拟网卡插入同一个网桥(实际上是虚拟交换机),它们最终都会位于同一个 L2 网络上。当然,您可以通过简单的子网划分来实现,但如果您想使用 VLAN,则需要在每个 VLAN 标记接口上创建一个单独的网桥,并相应地插入虚拟网卡

答案2

Dyasny 的回答是正确的,但遗漏了一些可能有用的信息,具体取决于您希望如何在虚拟机管理程序上设计网络堆栈。网桥本身支持使用子接口进行 VLAN 标记(例如,网桥 0 上的 VLAN 10 的 br0.10)。这样,您可以从网桥生成子接口,而不是将网桥绑定到单个以太网设备子接口。如果您在主机上使用来自公共结构的多个 VLAN,这可以大大简化您的网络堆栈。

这些 VLAN 标记子接口可以直接使用,方法是将它们用作给定 VM NIC 配置(例如 br0.10)中的主机设备。以这种方式使用时,VM 将在该给定 VLAN 上与其虚拟以太网设备进行通信,就像它是本机一样。客户机内不会进行标记。如果您需要更多 VLAN,则必须模拟更多 NIC,并且这些 NIC 仍然可以是来自同一网桥的子接口。如果您已经使用了子接口,它们就不能成为网桥根 (br0)。

或者,通过使用桥接“根”接口(例如 br0)连接 VM TAP 接口,VM 本身可以访问桥接上的本机 VLAN,也可以创建标记接口,这些接口在客户机内部运行,就像在主机上一样。这样,客户机中只需一个虚拟 NIC 即可访问多个 VLAN,从而简化了访问多个 VLAN 的计算机的部署。VM 只能标记在主机桥接上也已标记的 VLAN。这样,主机桥接就像典型的交换机一样充当 VLAN 数据库和 ACL。

甚至与此相反,Open vSwitch 可以用更好的界面完成同样的活动。

示例配置:

我省略了桥接器下面的所有内容以及大多数桥接器选项,因为它们在这个第 2 层讨论中用处不大。下面是一个示例,使用主机桥接器上的标记子接口来提供 VLAN ACL 集,同时使用主机桥接器本身来连接您的 tap 接口。

$> cat /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
DELAY=0

-

$> cat /etc/sysconfig/network-scripts/ifcfg-br0.10

DEVICE=br0.10
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
VLAN=yes

完成所有这些操作(或类似操作)后,使用br0接口连接 VM TAP 接口,并注意您现在可以在 VM 内部为 VLAN 10 创建标记接口。网桥可以处理 VLAN,也可以充当 VLAN 中继。

相关内容