ESXi 包括默认启用的防火墙。安装时,会配置 ESXi 防火墙阻止入站和出站流量,但在主机安全配置文件中启用的服务的流量除外。您可以使用 vSphere Client、CLI 和 API 管理防火墙。

打开防火墙端口时,应考虑不限制访问 ESXi 主机上运行的服务可能使主机遭受外部攻击及未经授权的访问。通过将 ESXi 防火墙配置为仅从授权网络启用访问来降低该风险。

注: 此防火墙还允许 Internet 控制消息协议 (ICMP) ping 及与 DHCP 和 DNS(仅 UDP)客户端的通信。

可以如下所示管理 ESXi 防火墙端口:

  • vSphere Client 中,对每台主机使用配置 > 防火墙。请参见管理 ESXi 防火墙设置
  • 从命令行或在脚本中使用 ESXCLI 命令。请参见使用 ESXCLI 防火墙命令配置 ESXi 行为
  • 如果安全配置文件中不包括要打开的端口,则使用自定义 VIB。

    要安装自定义 VIB,必须将 ESXi 主机的接受程度改为 CommunitySupported。

    注: 如果您联系 VMware 技术支持来调查装有社区支持的 VIB 的 ESXi 主机上的问题,VMware 技术支持可能会要求您卸载该 VIB。此类请求是一个故障排除步骤,用于确定该 VIB 是否与调查的问题有关。

NFS 客户端规则集 (nfsClient) 的行为与其他规则集不同。启用 NFS 客户端规则集后,将在允许的 IP 地址列表中打开目标主机的所有出站 TCP 端口。有关详细信息,请参见NFS 客户端防火墙行为

管理 ESXi 防火墙设置

可以通过 vSphere Client 或在命令行中为服务或管理代理配置入站和出站防火墙连接。

此任务介绍了如何使用 vSphere Client 配置 ESXi 防火墙设置。可以使用 ESXi Shell 或 ESXCLI 命令在命令行处配置 ESXi 以自动执行防火墙配置。有关使用 ESXCLI 操作防火墙和防火墙规则的示例,请参见 使用 ESXCLI 防火墙命令配置 ESXi 行为

注: 如果不同的服务具有重叠的端口规则,则启用一项服务可能在不知不觉中激活其他服务。为了避免此问题,可以指定允许哪些 IP 地址访问主机上的各个服务。

过程

  1. 使用 vSphere Client 登录 vCenter Server
  2. 在清单中,浏览到主机。
  3. 单击配置,然后单击系统下的防火墙
    可以通过单击 入站出站,在入站和出站连接之间切换。
  4. 在“防火墙”部分中,单击编辑
  5. 从以下服务组中选择一个:未分组安全 Shell简单网络管理协议
  6. 选择要激活的规则集,或取消选择要停用的规则集。
  7. 对于某些服务,还可以通过导航到配置 > 系统 > 服务来管理服务详细信息。
    有关启动、停止和重新启动服务的详细信息,请参见 激活或停用 ESXi 服务
  8. 对于某些服务,可以明确指定允许连接的 IP 地址。
  9. 单击确定

ESXi 主机添加允许的 IP 地址

默认情况下,可以通过每个服务的防火墙访问所有 IP 地址。要限制流量,请更改每个服务,以便仅允许来自管理子网的流量。如果您的环境不使用某些服务,也可以取消选择这些服务。

要更新服务的允许的 IP 列表,可以使用 vSphere Client、ESXCLI 或 PowerCLI。此任务介绍了如何使用 vSphere Client。有关使用 ESXCLI 的说明,请参见《ESXCLI 概念和示例》文档中标题为“管理 ESXi 防火墙”的主题。

过程

  1. 使用 vSphere Client 登录 vCenter Server
  2. 浏览到 ESXi 主机。
  3. 单击配置,然后单击系统下的防火墙
    可以通过单击 入站出站,在入站和出站连接之间切换。
  4. 在“防火墙”部分中,单击编辑
  5. 从以下三个服务组中选择一个:未分组安全 Shell简单网络管理协议
  6. 要显示“允许的 IP 地址”部分,请展开一个服务。
  7. 在“允许的 IP 地址”部分中,取消选择允许从任何 IP 地址连接,然后输入允许连接到主机的网络的 IP 地址。
    使用逗号分隔 IP 地址。可以使用以下地址格式:
    • 192.168.0.0/24
    • 192.168.1.2, 2001::1/64
    • fd3e:29a6:0a81:e478::/64
  8. 确保选择服务本身。
  9. 单击确定
  10. 验证服务的允许的 IP 地址列中的更改。

ESXi 主机的入站和出站防火墙端口

使用 vSphere ClientVMware Host Client 打开和关闭每个服务的防火墙端口。

ESXi 包括默认启用的防火墙。安装时,会配置 ESXi 防火墙以阻止除主机安全配置文件中启用的服务相关的流量之外的所有入站和出站流量。有关 ESXi 防火墙中受支持端口和协议的列表,请参见 https://ports.vmware.com/ 中的 VMware Ports and Protocols Tool™。

VMware Ports and Protocols Tool 将列出默认安装的服务的端口信息。如果在主机上安装其他 VIB,则可能还会配置其他服务和防火墙端口。这些信息主要用于 vSphere Client 中显示的服务,但是 VMware Ports and Protocols Tool 还包括其他某些端口。

NFS 客户端防火墙行为

NFS 客户端防火墙规则集的行为方式与其他 ESXi 防火墙规则集不同。挂载或卸载 NFS 数据存储时,ESXi 将配置 NFS 客户端设置。对于不同版本的 NFS,行为有所不同。

添加、挂载或卸载 NFS 数据存储时,产生的行为取决于 NFS 版本。

NFS v3 防火墙行为

添加或挂载 NFS v3 数据存储时,ESXi 将检查 NFS 客户端 (nfsClient) 防火墙规则集的状态。

  • 如果停用了 nfsClient 规则集,则 ESXi 将激活规则集,并通过将 allowedAll 标记设置为 FALSE 来停用“允许所有 IP 地址”策略。NFS 服务器的 IP 地址将会添加到允许的出站 IP 地址的列表中。
  • 如果激活了 nfsClient 规则集,则规则集状态和允许的 IP 地址策略将不会更改。NFS 服务器的 IP 地址将会添加到允许的出站 IP 地址的列表中。
注: 如果手动激活 nfsClient 规则集或手动设置“允许所有 IP 地址”策略,则将 NFS v3 数据存储添加到系统之前或之后,卸载最新 NFS v3 数据存储时将替代您的设置。卸载所有 NFS v3 数据存储时,将停用 nfsClient 规则集。

移除或卸载 NFS v3 数据存储时,ESXi 会执行以下操作之一。

  • 如果未从已卸载数据存储的服务器挂载任何剩余的 NFS v3 数据存储,则 ESXi 将从出站 IP 地址列表中移除该服务器的 IP 地址。
  • 如果执行卸载操作后没有剩余任何挂载的 NFS v3 数据存储,则 ESXi 将停用 nfsClient 防火墙规则集。

NFS v4.1 防火墙行为

挂载第一个 NFS v4.1 数据存储时,ESXi 将激活 nfs41client 规则集并将其 allowedAll 标记设置为 TRUE。此操作将打开所有 IP 地址的端口 2049。卸载 NFS v4.1 数据存储不会影响防火墙状态。也就是说,第一个 NFS v4.1 挂载将打开端口 2049,除非明确关闭该端口,否则该端口将保持激活状态。

使用 ESXCLI 防火墙命令配置 ESXi 行为

如果环境包含多个 ESXi 主机,可使用 ESXCLI 命令或 vSphere Web Services SDK 自动执行防火墙配置。

防火墙命令参考

可以使用 ESXi Shell 或 ESXCLI 命令在命令行处配置 ESXi 以自动执行防火墙配置。要操作防火墙和防火墙规则,请参见《ESXCLI 入门》了解相关介绍,参见《ESXCLI 概念和示例》查看使用 ESXCLI 的示例。

ESXi 7.0 及更高版本中,已限制对用于创建自定义防火墙规则的 service.xml 文件进行访问。有关使用 /etc/rc.local.d/local.sh 文件创建自定义防火墙规则的信息,请参见 VMware 知识库文章 2008226

表 1. 防火墙命令
命令 描述
esxcli network firewall get 返回防火墙的状态并列出默认操作。
esxcli network firewall set --default-action 设置为 true 可将默认操作设置为通过。设置为 false 可将默认操作设置为丢弃。
esxcli network firewall set --enabled 激活或停用 ESXi 防火墙。
esxcli network firewall load 加载防火墙模块和规则集配置文件。
esxcli network firewall refresh 如果已加载防火墙模块,则通过读取规则集文件来刷新防火墙配置。
esxcli network firewall unload 破坏过滤器并卸载防火墙模块。
esxcli network firewall ruleset list 列出规则集信息。
esxcli network firewall ruleset set --allowed-all 设置为 true 可允许所有人对所有 IP 地址具有访问权限。设置为 false 可使用允许的 IP 地址列表。
esxcli network firewall ruleset set --enabled --ruleset-id=<string> 将“已启用”设置为 true 可激活指定规则集。将“已启用”设置为 false 可停用指定规则集。
esxcli network firewall ruleset allowedip list 列出指定规则集允许的 IP 地址。
esxcli network firewall ruleset allowedip add 允许从指定的 IP 地址或 IP 地址范围访问规则集。
esxcli network firewall ruleset allowedip remove 从指定的 IP 地址或 IP 地址范围移除对规则集的访问。
esxcli network firewall ruleset rule list 列出防火墙中的每个规则集的规则。