23.17.8. 网络接口
使用管理工具修改网络接口设备,以配置域 XML 的以下部分:
图 23.46. devices - 网络接口
... <devices> <interface type='direct' trustGuestRxFilters='yes'> <source dev='eth0'/> <mac address='52:54:00:5d:c7:9e'/> <boot order='1'/> <rom bar='off'/> </interface> </devices> ...
为客户机虚拟机配置网络接口有几种可能性。这可以通过将值设为 interface 元素的 type 属性来实现。可以使用以下值:
"direct"
- 将 guest 虚拟机的 NIC 附加到主机物理计算机上的物理 NIC。详情请查看 第 23.17.8.6 节 “将附件直接附加到物理接口”。"网络"
- 建议使用动态或无线网络配置在主机物理机器上连接常规客户机虚拟机的建议配置。详情请查看 第 23.17.8.1 节 “虚拟网络”。"bridge"
- 这是在主机物理机器上使用静态有线网络配置的客户机虚拟机连接的建议配置设置。详情请查看 第 23.17.8.2 节 “网桥到 LAN”。"Ethernet"
- 提供了一种方法,供管理员执行任意脚本以将客户机虚拟机的网络连接到 LAN。详情请查看 第 23.17.8.5 节 “通用以太网连接”。"hostdev"
- 允许将 PCI 网络设备直接分配给客户机虚拟机,使用通用设备透传。详情请查看 第 23.17.8.7 节 “PCI 透传”。"mcast"
- 多播组可用于代表虚拟网络。详情请查看 第 23.17.8.8 节 “多播隧道”。"用户"
- 使用 user 选项设置用户空间 SLIRP 堆栈参数,为外界提供包含 NAT 的虚拟 LAN。详情请查看 第 23.17.8.4 节 “用户空间 SLIRP 堆栈”。"服务器"
- 使用 server 选项创建 TCP 客户端-服务器架构,以便提供一个虚拟网络,其中一个客户机虚拟机提供网络服务器端,所有其他客户端虚拟机都被配置为客户端。详情请查看 第 23.17.8.9 节 “TCP 隧道”。
每个选项都有一个链接,用于提供更多详细信息。另外,可以使用可选的
<trustGuestRxFilters>
属性定义 <每个接口>
元素,以允许主机物理计算机检测和信任从客户机虚拟机接收的报告。每次接口接收对过滤器的更改时,会发送这些报告。这包括对主 MAC 地址、设备地址过滤器或 vlan 配置的更改。出于安全考虑,<trustGuestRxFilters>
属性会被默认禁用。另请注意,对此属性的支持取决于客户机网络设备模型以及主机物理计算机的连接类型。目前,它只支持 virtio 设备模型以及主机物理计算机上的 macvtap 连接。建议设置可选参数 <trustGuestRxFilters>
的简单用例是,如果您希望为客户机虚拟机提供控制主机物理机器侧过滤器的权限,因为客户机设置的任何过滤器也将在主机上进行镜像。
除了上面列出的属性外,每个
<interface>
元素还可使用可选 <地址>
子元素,可以将接口绑定到特定的 PCI 插槽,属性 type='pci'
。如需更多信息,请参阅 第 23.17.2 节 “设备地址”。
23.17.8.1. 虚拟网络
这是在带有动态或无线网络配置的主机物理机器上进行常规虚拟客户机连接的建议配置(或主机物理机硬件详情的多主机物理机器详情),建议在
<网络定义>
中单独描述。此外,它还提供了一个连接,其中包含由指定网络定义描述的详细信息。根据虚拟网络的 转发模式
配置,网络可以完全隔离(无所给的 <转发>
元素),使用 NAT 连接到显式网络设备或默认路由(forward mode='nat'
)、路由 no NAT(转发模式='route'
),或者直接连接到主机物理机器的网络接口(使用 macvtap)或网桥设备(使用 macvtap 模式(forward mode='bridge|private|passve
))的名称。
对于具有
网桥
、private
、vepa
和 passthrough
模式的网络,则假定主机物理计算机已在 libvirt 范围之外设置。对于隔离、nat 和路由网络,DHCP 和 DNS 由 libvirt 在虚拟网络中提供,可通过使用 virsh net-dumpxml [networkname] 检查虚拟网络配置来确定 IP 范围。"默认"虚拟网络是设置开箱即用的,它使用 NAT 连接到默认路由,并且 IP 范围为 192.168.122.0/255.255.255.0。每个客户机虚拟机都会创建一个关联的 tun 设备,其名称为 vnetN,它也可通过 <target>
元素覆盖(请参考 第 23.17.8.11 节 “覆盖 target 元素”)。
当接口源是网络时,可以指定一个端口组以及网络的名称;一个网络可能会定义了多个端口组,每个 portgroup 含有不同类网络连接的不同配置信息。另外,类似于
<直接>
网络连接(如下所示),类型为 network
的连接可能会指定 <虚拟>
端口元素,其中要转发到 802.1Qbg 或 802.1Qbh 兼容 虚拟以太网端口聚合器 (VEPA)交换机或 Open vSwitch 虚拟交换机。
由于交换机类型取决于主机物理计算机上的
<network>
元素中的配置设置,因此可以接受省略 <virtualport 类型>
属性。您需要指定一次或多次 <指定虚拟>
端口类型。当域启动时,通过组合到定义的类型和属性来构成完整 <的虚拟端口>
元素。这会生成新构建的虚拟端口。请注意,较低虚拟端口的属性无法对高虚拟端口中定义的属性进行更改。接口具有最高优先级,而端口组优先级最低。
例如,若要创建具有 802.1Qbh 交换机和 Open vSwitch 交换机正确工作的网络,您可以选择指定 no 类型,但必须同时提供
profileid
和 interfaceid
。从虚拟端口填写的其他属性(如 managerid
、typeid
或 profileid
)是可选的。
如果要限制客户机虚拟机仅连接到特定类型的交换机,您可以指定虚拟端口类型,并且只连接具有指定端口类型的交换机。您还可以通过指定附加参数来进一步限制连接。因此,如果指定端口,且主机物理计算机的网络有不同类型的虚拟端口,接口的连接将失败。虚拟网络参数通过使用管理工具来定义,它修改域 XML 的以下部分:
图 23.47. devices - 网络接口
... <devices> <interface type='network'> <source network='default'/> </interface> ... <interface type='network'> <source network='default' portgroup='engineering'/> <target dev='vnet7'/> <mac address="00:11:22:33:44:55"/> <virtualport> <parameters instanceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/> </virtualport> </interface> </devices> ...