将 NIC 分配给 XenProject VM

Assigning NICs to a XenProject VM

我想在我的 Xen 项目机器上安装一个 VM,它将 运行 Zentyal 防火墙。我的机器有三张网卡:一张是集成的,两张是独立的,类似的网卡(它们具有相同的 Realtek 芯片,但来自不同的制造商)。为了让防火墙以最佳方式工作,我要做的是将两个独立的 NIC 分配并专用于我的防火墙 VM,并将集成卡用于 Dom0 和其他 VM。过去我已经能够用其他虚拟化软件做类似的事情,但一直没能找到用 Xen Project 做的方法。

This page 提供了很多有用的配置,但我认为没有一个符合我想要做的。这完全可能吗,还是我必须放弃虚拟化我的防火墙计算机的希望?

我认为解决此问题的最佳方法是使用 PCI passthrough in Xen. What this means is that you can leave 1 of your NICs attached to the dom0 (which can then be bridged to allow the other VMs to connect through the same interface - look at one of the Xen articles on network configuration 的一些示例来说明如何设置它,这与您只有一个 NIC 的情况相同)并允许防火墙VM 完全控制其他两个 NIC。

这个过程有点复杂,并且可能因发行版而异,所以我建议您查看我链接的第一篇文章,但我将描述基本过程。

使用lspci查看你要穿越的两块网卡的PCI地址。您的卡片的输出行将类似于以下内容(尽管细节会非常不同,但结构是相同的):

00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)
00:19.1 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)

记下第一列(本例中为 00:19.000:19.1)。按照以下格式将其添加到防火墙 VM 的配置中:

pci=['00:19.0','00:19.1']

这将导致 VM 无法启动,因为它无法通过设备。为了让设备通过,它们需要使用如下命令绑定到 dom0 上的 pciback 驱动程序:

xl pci-assignable-add 00:19.0
xl pci-assignable-add 00:19.1

这可能并非在所有情况下都可行,但如果不行,还有其他方法。我强烈建议您阅读我之前提到的 the article,以充分了解在您的情况下执行此操作的最佳方法。