pfSense 和 VMWare ESXi VLAN 集成

网络工程 VLAN 感知 虚拟机
2021-07-10 17:52:03

正在将 pfsense 框设置为 VMWare ESXi 6.0 环境中的虚拟机(在 VXRail 超融合框内)。

目标配置是要访问此框中的任何机器,您都需要通过防火墙。同一盒子内机器之间的流量也需要通过防火墙。由于它们是不同的服务器,例如 Web 服务器、数据库服务器,因此 VM 设置在不同的 VLAN 中。

因此,我们使用两个接口设置了 pfSense。一个是“外部世界”将使用的 WAN 与 ESXI 环境中的服务器通信,另一个是 Trunk,然后应连接到 pfSense 框保护的所有 VLAN。

ESXi:

我们已按照此处的指南在 VxRail 中设置分布式 vSwitch。我们已经设置了一个分布式端口组?VLAN 类型 VLAN 中继和 VLAN ID 0-200:

在此处输入图片说明

根据我们的理解,这个端口组是我们将附加到 pfsense Trunk 以便它能够“读取”所有 VLAN 标记流量的内容?

PfSense 上的中继:

在 pfsense 上创建中继基本上是将 NIC 添加到 pfsense VM。NIC 应该是我们在上面创建的端口组。

在此处输入图片说明

pfSense 上的 VLAN:

之后,我们在 pfSense 上创建一个 VLAN 并添加一个 VLAN ID。这个 VLAN 位于我们上面创建的 Trunk 上。下面的例子:

在此处输入图片说明

然后我们添加一个基于这个 VLAN 的接口,并给它一个 IP 192.168.152.1

在此处输入图片说明

在此处输入图片说明

受保护机器:

然后我们创建一台将受防火墙保护的机器。所以首先,我们给它添加一个 NIC。NIC 基于具有 VLAN 标记的主机网络,例如 152,如下所示。

在此处输入图片说明

在此处输入图片说明

然后,我们为受保护机器分配一个 IP,192.168.152.10默认网关为192.168.152.1

问题陈述:

问题是,在完成所有这些之后,受保护机器无法 ping 其默认网关。默认网关无法 ping 那台机器。就好像他们之间根本没有任何交流。我们添加了防火墙规则以允许 Interface152 上的所有流量并记录所有内容,但我们看不到任何流量被接受或拒绝。

我们可能错过了什么?我们最大的困惑在于 VXRail ESXI 设置,但也欢迎对 pfSense 设置进行任何更正。

3个回答

如果添加具有 VLAN 4095 的分布式端口组,该端口组将保留 pfSense 虚拟机设置的 802.1Q 帧标记。

此配置在 vSphere 中称为 VGT 或虚拟来宾标记,请参见KB 1003806KB 1004252

我在尝试设置合适的数据包捕获时做了一些研究/测试:如文档所述,VGT(VLAN ID 为 4095 的端口组)将所有 VLAN 从 vSwitch(也可能是 dSwitch)转发到 VM。

但是(记录不佳):在 Windows 中,VMXNET3 和 E1000 默认情况下都会从所有 VLAN 接收所有帧,但也会删除所有 Q 标记。发送出去的帧保持未标记状态,因此它们将进入物理交换机上的未标记 VLAN。

当您在 vNIC 的高级设置中配置 VLAN ID 时,vNIC 开始过滤,仅接收该 VID(未标记)的帧,并使用此 VID 标记所有出站帧。这对于 VMXNET3 和 E1000 完全相同。

如果您使用 E1000 vNIC 安装英特尔 PROSet 实用程序,您可以在来宾中设置 虚拟vNIC 实例,每个实例都提供到单个 VLAN 的连接(就像在物理机上一样)。

因此,在 Windows 中以任何方式访问完整中继并查看数据包捕获中的 802.1Q 标记似乎是不可能的。我的印象是这是虚拟 vNIC 硬件/驱动程序/操作系统的限制,而不是 vSwitch 的限制。

另一方面,LinuxFreeBSD具有本地 VLAN 支持,为每个 VID 使用子接口。我的猜测是,使用 VGT,您实际上可以访问 VLAN 中继并查看捕获帧中的标记。有时间我会试试这个,然后通知你。

我查看了您的配置,在 pfsense 方面似乎是正确的,这正是我在自己的实验室中使用 pfsense 所做的,并且我有几个使用这种类型的 VLAN 中继的虚拟机在生产中。

问题似乎是您为 VM 使用主机网络。我会在 dSwitch 上配置一个新的端口组,设置为 VLAN 和 VLAN ID 152,然后将 NIC 分配给它。