Proxmox VE 与 VMware vSphere 虚拟化 pfSense

最后更新于:2025-11-19 10:50:04

Proxmox VE 与 VMware vSphere 虚拟化 pfSense

一、 引言:Type-1 虚拟机管理程序的 pfSense 虚拟化核心原则

在生产环境中部署 pfSense 软件时,官方文档的最佳实践明确推荐使用 Type-1(裸金属/原生)虚拟机管理程序 1。Type-1 平台,如 Proxmox VE 和 VMware vSphere/ESXi,为网络功能虚拟化(NFV)提供了必要的性能、稳定性和资源隔离。

相比之下,Type-2(托管型)虚拟机管理程序(例如 VirtualBox 或 VMware Workstation)被认为仅适用于测试或开发环境,应避免用于承载关键生产负载 1。

对 Proxmox VE 和 vSphere 官方实施指南的分析揭示了一个共同的、基础性的架构要求:在虚拟机管理程序(Hypervisor)层面实现网络域的物理和逻辑隔离。这构成了虚拟防火墙部署的基石。

A. 基础原则:虚拟机管理程序层面的网络隔离

两份指南的核心目标都是在 pfSense 虚拟机(VM)创建之前,就构建起清晰、隔离的 WAN(广域网)和 LAN(局域网)虚拟网络。这种架构上的“深度防御”确保了 hypervisor 层的二层网络配置强制执行安全边界,防止了因 VM 内部配置错误而可能导致的流量“泄露”或绕过。

在 Proxmox VE 上:这通过创建两个独立的 Linux Bridge(例如 vmbr1 和 vmbr2)来实现,每个 Bridge 绑定一块专用的物理网卡(NIC) 2。

在 vSphere/ESXi 上:这通过创建两个独立的 Standard vSwitch(标准虚拟交换机)和相应的 Port Group(端口组)来实现,每个 vSwitch 同样绑定一块专用的物理上行链路(vmnic) 3。

B. 性能要求:半虚拟化(PV)驱动程序

为了实现高性能和低延迟的网络吞吐量,两个平台都强制要求使用其原生的半虚拟化(Paravirtualized, PV)网络驱动程序,而不是通用的模拟驱动程序。

在 Proxmox VE 上:必须使用 VirtIO (paravirtualized) 模型 1。在 pfSense 客操作系统(Guest OS)内部,这些接口被识别为 vtnet。

在 vSphere/ESXi 上:强烈推荐使用 VMXNET 3 适配器类型 3。在 pfSense 内部,这些接口被识别为 vmx。

C. 关键差异:驱动程序的特定调整

尽管都使用了高性能的 PV 驱动,但这两种实现路径在 pfSense 客户机内部需要进行强制性的、但性质完全不同的调整:

Proxmox/VirtIO(修复性调整):使用 vtnet 驱动程序需要一个减法步骤。用户必须在 pfSense 内部禁用硬件校验和卸载(hardware checksum offload)。这是一个功能修复,用以解决可能导致流量中断或数据包损坏的已知驱动程序/内核交互问题 2。

vSphere/VMXNET 3(增强性调整):使用 vmx 驱动程序需要一个加法步骤。用户必须在 pfSense 内部安装 Open-VM-Tools 软件包。这并非为了修复网络功能,而是为了增强 hypervisor 的集成和可管理性,例如实现从 vSphere 界面发起的优雅关机和状态报告 3。

本指南将分别详细阐述这两个平台的权威实施步骤。

二、 实施:在 Proxmox VE 上虚拟化 pfSense 软件

Netgate 提供的《Virtualizing with Proxmox VE》文档详述了在 Proxmox VE (PVE) 主机上配置网络、创建 pfSense 虚拟机以及执行关键性能调优的完整流程 2。

A. 前提假设

该指南假定管理员已具备以下环境:

一台已安装并正常运行的 Proxmox VE 主机。

主机至少有两块专用于 pfSense 的物理网卡(用于 WAN 和 LAN),此外还需要一块用于 PVE 自身管理的网卡。

pfSense 安装 ISO 镜像已上传到 Proxmox 主机的本地存储(如 local)中。

B. Proxmox VE 主机网络配置:Linux Bridges

官方推荐的标准做法是创建两个 Linux Bridge,分别映射到专用的物理 WAN 和 LAN 网卡 2。

在 Proxmox VE 界面中,选择宿主机节点,导航至 System > Network 2。

文档示例中,主机使用三块物理网卡:enp3s0(用于 Proxmox 管理),enp4s0(用于 WAN),enp5s0(用于 LAN) 2。

点击 Create > Linux Bridge。

创建 WAN Bridge:

名称:vmbr1(示例名称)

Bridge ports:填入 enp4s0(映射到物理 WAN 口)2。

创建 LAN Bridge:

再次点击 Create > Linux Bridge。

名称:vmbr2(示例名称)

Bridge ports:填入 enp5s0(映射到物理 LAN 口)2。

点击 Apply Configuration 使更改生效。如果新接口未显示为 Active,建议重启 Proxmox VE 主机 2。

此配置完成后,便建立了严格的物理隔离。Proxmox 自身的管理流量与 pfSense 虚拟机处理的防火墙流量在物理上分离。

C. 虚拟机参数配置

在创建 pfSense 虚拟机(Create VM)时,以下是官方指南中的关键参数设置 2:

General(常规)

Name:为 VM 指定一个描述性名称(例如 firewall)。

OS(操作系统)

选择 Use CD/DVD disc image file。

Storage:选择 ISO 所在的存储(例如 local)。

ISO image:选择已上传的 pfSense ISO 文件。

Guest OS Type:选择 Other。

System(系统)

Graphic card:推荐 SPICE。文档指出 SPICE 在空闲时具有更低的 CPU 占用,并支持更丰富的控制台特性。

Hard Disk(硬盘)

Bus/Device:推荐 VirtIO Block。

Disk Size:至少 8 GB。

CPU(处理器)

Socket:1。

Cores:根据需求设置(例如 1 或更多)。

Type:推荐 Host。此设置将宿主机的 CPU 功能(如 AES-NI 加速)直接传递给虚拟机,这对 VPN 等加密密集型任务至关重要。

Memory(内存)

Memory:至少 1024 MB。

Network(网络)

在向导中,首先创建的是第一个网络接口(WAN)。

Bridge:选择 vmbr1(之前创建的 WAN 桥接)。

Model:选择 VirtIO (paravirtualized)。

D. 添加第二个虚拟网络接口(LAN)

虚拟机创建向导默认只创建一个网卡。第二个网卡(LAN)必须手动添加:

在 Proxmox VE 界面左侧树中选中刚创建的 VM。

导航至 Hardware 选项卡。

点击 Add > Network Device。

Bridge:选择 vmbr2(之前创建的 LAN 桥接)。

Model:同样选择 VirtIO (paravirtualized)。

点击 Add。

此时,VM 硬件列表中应有两个 net 设备,分别桥接到 vmbr1 和 vmbr2。

E. 客户机操作系统安装与接口分配

启动虚拟机并打开 Console。

按照标准的 pfSense 安装流程在虚拟硬盘上安装系统。

安装完成后重启,pfSense 将在控制台提示分配接口。

当询问 VLAN 时,输入 n 跳过。

分配 WAN:当提示输入 WAN 接口名称时,输入 vtnet0。(vtnet0 对应 Proxmox 中的第一个网络设备,即 net0,它连接到 vmbr1)。

分配 LAN:当提示输入 LAN 接口名称时,输入 vtnet1。(vtnet1 对应 Proxmox 中的第二个网络设备,即 net1,它连接到 vmbr2)。

确认分配(输入 y)。

F. 关键调优:禁用硬件校验和卸载

这是在 Proxmox VE 上使用 VirtIO 驱动程序时必须执行的步骤。

原因:如果不执行此操作,VirtIO 驱动程序(vtnet)与 pfSense 所基于的 FreeBSD 内核之间关于硬件卸载功能的协商会不匹配。文档明确警告,这会导致虚拟机无法正常转发流量 2。此外,管理界面(WebGUI)也可能变得极其缓慢或无法访问 2。

操作流程:

登录 pfSense WebGUI。

导航至 System > Advanced > Networking 2。

在 “Networking Interfaces” 区域,勾选 Disable hardware checksum offload 2。

点击 Save。

导航至 Diagnostics > Reboot 重启 pfSense 虚拟机以使设置生效 2。

官方文档指出,尽管当前版本的 pfSense 软件会尝试自动为 vtnet 接口禁用此功能,但作为最佳实践,管理员应始终手动检查并确保该设置已被勾选 2。

G. 附加步骤:UEFI (OVMF) 启动

如果需要使用 UEFI 模式启动 pfSense VM(而不是默认的 SeaBIOS),需要执行以下额外步骤:

创建 VM 时:

System 选项卡:Machine 设置为 q35。

System 选项卡:BIOS 选择 OVMF (UEFI)。

系统会提示添加一个 EFI Disk,按提示操作并选择存储位置。

创建 VM 后:

在 VM Hardware 中,添加一个 Serial Port。

首次启动时:

在 Proxmox 控制台中,当看到启动画面时按 Esc 键进入固件设置。

导航至 Device Manager → Secure Boot Configuration。

取消勾选 Attempt Secure Boot。

按 F10 保存并退出,然后重启 VM。

完成这些步骤后,VM 才能从 ISO 以 UEFI 模式正常启动并安装。

三、 实施:在 VMware vSphere / ESXi 上虚拟化 pfSense 软件

Netgate 针对 VMware 平台的《Virtualizing pfSense Software with VMware vSphere / ESXi》指南,提供了从网络配置到虚拟机创建,再到平台特定工具安装的完整工作流 3。

A. 关键前提:版本兼容性

与 Proxmox 不同,vSphere/ESXi 指南首先强调的是严格的版本依赖性。pfSense 软件所基于的 FreeBSD 版本,决定了其所需的最低 ESXi 主机版本 3。

基于 FreeBSD 12.x 的 pfSense 软件(例如 pfSense CE 2.6.0)要求 ESX 6.7 或更高版本 3。

基于 FreeBSD 14.x 的 pfSense 软件(例如 pfSense CE 2.7.0)要求 ESX 7.0 或更高版本 3。

虚拟机硬件版本(VM hardware version)也必须与 ESXi 版本级别匹配或更高 3。管理员在规划升级或新部署时,必须同时查阅《Versions of pfSense software and FreeBSD》和 VMware 官方的《Guest OS Compatibility Guide》来确认兼容性 3。

下表总结了这一关键依赖关系:

表 1:pfSense/FreeBSD 与 vSphere ESXi 版本兼容性要求

B. vSphere 主机网络配置:vSwitch 与 Port Group

与 Proxmox 的理念相同,vSphere 部署也要求为 WAN 和 LAN 创建独立的虚拟网络 3。

1. 创建两个 Standard vSwitch

登录 vSphere Web Client,导航至 Networking → Virtual switches 选项卡 3。

点击 Add standard virtual switch 3。

创建 WAN vSwitch:

vSwitch Name:WAN

Uplink 1:绑定一块专用的物理网卡(例如 vmnic1) 3。

重复此过程,创建 LAN vSwitch:

vSwitch Name:LAN

Uplink 1:绑定另一块专用的物理网卡(例如 vmnic2) 3。

2. 创建两个 Port Group

导航至 Networking → Port groups 选项卡 3。

点击 Add port group 3。

创建 WAN Port Group:

Name:WAN

Virtual switch:选择上一步创建的 WAN vSwitch 3。

重复此过程,创建 LAN Port Group:

Name:LAN

Virtual switch:选择上一步创建的 LAN vSwitch 3。

Port Group 是 VM 虚拟网卡连接的端点。此配置确保了连接到 "WAN" Port Group 的 vNIC 只能通过 "WAN" vSwitch 绑定的 vmnic1 物理出口,实现了与 "LAN" 网络的隔离。

C. 虚拟机参数配置

在 vSphere 中,通过 Create/Register VM 向导创建新虚拟机 3:

Select a name and guest OS(选择名称和客户机操作系统)

Name:例如 pfSense 或 firewall。

Compatibility:选择当前可用的最高 VM 硬件版本(例如 ESXi 7.0 U2 virtual machine) 3。

Guest OS Family:选择 Other 3。

Guest OS Version:选择与 pfSense 基础 FreeBSD 版本匹配的条目(例如 FreeBSD 12 (64-bit)) 3。

Select storage(选择存储)

选择一个可用的 datastore 3。

Customize settings(自定义设置)

CPU:使用 1 个 Socket。如果宿主机核心数充足,可以增加 Cores per socket(每插槽核心数) 3。

Memory(内存):建议至少 1024 MB RAM。如果计划安装较多软件包,应增加此值 3。

Hard Disk 1(硬盘 1):至少 16 GB 3。

SCSI Controller 0(SCSI 控制器 0):保持默认的 LSI Logic SAS 即可 3。

Network Adapter 1(网络适配器 1 / WAN):

连接到 WAN Port Group 3。

展开该适配器选项,确保 Adapter Type(适配器类型)设置为 VMXNET 3 3。

New Network Adapter(新网络适配器 / LAN):

点击 Add new device > Network Adapter 添加第二块网卡。

连接到 LAN Port Group 3。

同样确保 Adapter Type 设置为 VMXNET 3 3。

CD/DVD Drive 1(CD/DVD 驱动器 1):

选择 Datastore ISO file,并浏览到 pfSense 安装 ISO 文件 3。

文档明确指出,VMXNET 3 是 vSphere 7.x 中的默认类型,也是实现最佳性能所推荐的适配器类型 3。

D. 客户机操作系统安装与接口分配

在 vSphere Client 中选中新创建的 VM,点击 Power on 3。

打开虚拟机控制台,执行标准 pfSense 安装流程并重启 3。

重启后,在控制台界面分配接口:

当询问 VLAN 时,输入 n 跳过。

分配 WAN:当提示输入 WAN 接口名称时,输入 vmx0。(vmx0 对应 vSphere 中的 Network Adapter 1)。

分配 LAN:当提示输入 LAN 接口名称时,输入 vmx1。(vmx1 对应 vSphere 中的 Network Adapter 2)。

确认分配(输入 y)。

E. 关键集成:安装 Open-VM-Tools

与 Proxmox 平台不同,vSphere 部署的最后一步是安装一个增强包,以实现与 hypervisor 的深度集成 3。

原因:Open-VM-Tools 是 VMware 官方推荐用于 FreeBSD(及其他开源操作系统)的工具包。它允许 pfSense 客户机操作系统向 vSphere hypervisor 报告其 IP 地址、主机名等状态,并允许 vSphere 向 pfSense VM 发送优雅关机(graceful shutdown)或重启命令,而不是简单地“拉掉电源” 3。

操作流程:

在 pfSense WebGUI 中,导航至 System > Packages > Available Packages 3。

在列表中搜索或找到 Open-VM-Tools。

点击 Install(安装)按钮 3。

确认安装 3。

验证:安装完成后,导航至 Status > Services,确认 Open-VM-Tools 服务正在运行 3。

四、 综合与比较技术分析

Proxmox VE 和 VMware vSphere 均能实现稳定、高性能的 pfSense 虚拟化,但它们通过不同的抽象模型和调优哲学来达成这一目标。

A. 网络抽象模型的对比

Proxmox VE:采用扁平化的标准 Linux 网络模型。管理员直接操作 Linux Bridge (vmbr),并将物理网卡(如 enp4s0)和 VM 虚拟网卡(vtnet0)“插入”到同一个二层桥接域中。这种方式透明、直接,易于有 Linux 经验的管理员理解。

VMware vSphere:采用更结构化、多层次的专有模型。Standard vSwitch 负责与物理上行链路(vmnic)绑定,而 Port Group 则作为 VM 虚拟网卡(vmx0)的连接“插座”,并承载 vSwitch 上的网络策略。

B. 半虚拟化驱动与调优哲学的对比

两种实现路径在强制性调优步骤上表现出最显著的差异,这直接反映了不同驱动程序和 hypervisor 的集成特性:

Proxmox/VirtIO 路径(减法修复):此路径的强制调优是修复性的。VirtIO (vtnet) 驱动程序需要用户禁用硬件校验和卸载 2。这是一个减法操作,目的是关闭一个在虚拟环境中导致功能异常(无法转发流量)的特性,从而使其达到可用的基线水平。

vSphere/VMXNET 3 路径(加法增强):此路径的强制调优是增强性的。VMXNET 3 (vmx) 驱动程序在安装后即具备基本的网络转发功能,但需要用户安装 Open-VM-Tools 3。这是一个加法操作,目的是增加高级管理功能(如状态报告、优雅关机),以实现与 vSphere 平台的深度集成。

下表直观地总结了两种实现路径的关键配置参数对比:

表 2:Proxmox VE 与 vSphere/ESXi 虚拟化 pfSense 的配置对比

五、 结论:权威实践总结

基于 Netgate 官方技术文档的分析,在 Proxmox VE 和 VMware vSphere/ESXi 两种 Type-1 虚拟机管理程序上成功部署 pfSense 软件,必须遵循三个核心技术原则:

架构隔离(Hypervisor-Level Isolation):部署的前提是在 hypervisor 层面(无论是通过 Proxmox Linux Bridges 还是 vSphere Standard vSwitches)为 WAN 和 LAN 创建完全独立的、由不同物理网卡支持的虚拟网络域 2。

高性能驱动(Paravirtualized Drivers):部署的性能保障是为 pfSense 虚拟机配置相应平台的半虚拟化网络驱动程序(Proxmox 的 VirtIO 或 vSphere 的 VMXNET 3) 2。

特定调优(Driver-Specific Tuning):部署的稳定运行关键在于执行特定于所选驱动程序的强制性客户机操作系统调优。

对于 Proxmox/VirtIO,必须禁用硬件校验和卸载以确保网络流量的正确转发 2。

对于 vSphere/VMXNET 3,必须安装 Open-VM-Tools 以确保 VM 与 vSphere 平台之间的可管理性和状态通信 3。

通过严格遵守相应平台(Proxmox VE 或 vSphere/ESXi)的官方文档所详述的网络架构、虚拟机参数以及强制性调优步骤,可以构建一个性能可靠、运行稳定的虚拟化 pfSense 防火墙实施方案。

Works cited

Virtualization | pfSense Documentation, accessed November 17, 2025,

Virtualizing with Proxmox® VE | pfSense Documentation, accessed November 17, 2025,

Virtualizing pfSense Software with VMware vSphere / ESXi ..., accessed November 17, 2025,