为 SNMPv3 配置 ESXi SNMP 代理时,代理会支持发送通知(陷阱和通知)和接收 GETGETBULKGETNEXT 请求。SNMPv3 还提供比 SNMPv1 或 SNMPv2c 更高的安全性,包括密钥身份验证和加密。

Inform 是一种通知,发送方会重新发送多达三次或直到接收方确认通知。

配置 SNMP 引擎 ID

每个 SNMP v3 代理都具有一个引擎 ID 作为其唯一标识符。引擎 ID 与哈希功能配合使用可生成用于对 SNMP v3 消息进行身份验证和加密的密钥。

如果不指定引擎 ID,则在启用 SNMP 代理时系统会自动生成一个引擎 ID。

如果您通过 ESXCLI 运行 ESXCLI 命令,则必须提供可指定目标主机和登录凭据的连接选项。如果您直接在使用 ESXi Shell 的主机上使用 ESXCLI 命令,则可以使用所提供的命令,而无需指定连接选项。有关连接选项的详细信息,请参见《ESXCLI 概念和示例》

前提条件

使用 ESXCLI 命令配置 ESXi SNMP 代理。有关如何使用 ESXCLI 的详细信息,请参见《《ESXCLI 入门》》。

过程

  • 运行 esxcli system snmp set 命令和 --engineid 选项以配置 SNMP 引擎 ID。
    例如,运行以下命令:
    esxcli system snmp set --engineid id
    此处, id 为引擎 ID 且其必须是介于 5 到 32 个字符之间的十六进制字符串。

配置 SNMP 身份验证和隐私协议

SNMPv3 选择性地支持身份验证和隐私协议。

身份验证用于确保用户的身份。隐私允许对 SNMP v3 消息进行加密以确保数据的保密性。这些协议提供比 SNMPv1 和 SNMPv2c(使用社区字符串确保安全性)更高的安全性级别。

身份验证和隐私都是可选项。但是,您必须启用身份验证才能启用隐私。

SNMPv3 身份验证和隐私协议是许可的 vSphere 功能,在某些 vSphere 版本中可能不可用。

如果您通过 ESXCLI 运行 ESXCLI 命令,则必须提供可指定目标主机和登录凭据的连接选项。如果您直接在使用 ESXi Shell 的主机上使用 ESXCLI 命令,则可以使用所提供的命令,而无需指定连接选项。有关连接选项的详细信息,请参见《ESXCLI 概念和示例》

前提条件

使用 ESXCLI 命令配置 ESXi SNMP 代理。有关如何使用 ESXCLI 的详细信息,请参见《《ESXCLI 入门》》。

过程

  1. (可选) esxcli system snmp set 命令与 --authentication 选项一起运行以配置身份验证。
    例如,运行以下命令:
    esxcli system snmp set --authentication protocol
    其中, protocol 必须为 none(不进行身份验证)或 SHA1
  2. (可选) esxcli system snmp set 命令与 --privacy 选项一起运行以配置隐私。
    例如,运行以下命令:
    esxcli system snmp set --privacy protocol
    其中, protocol 必须为 none(无隐私)或 AES128

配置 SNMP 用户

您最多可配置 5 个有权访问 SNMP v3 信息的用户。用户名长度不得超过 32 个字符。

在配置用户时,您可根据用户的身份验证和隐私密码以及 SNMP 代理的引擎 ID 生成身份验证和隐私哈希值。如果在配置用户后更改引擎 ID、身份验证协议或隐私协议,则这些用户将不再有效,并且您必须重新配置。

如果您通过 ESXCLI 运行 ESXCLI 命令,则必须提供可指定目标主机和登录凭据的连接选项。如果您直接在使用 ESXi Shell 的主机上使用 ESXCLI 命令,则可以使用所提供的命令,而无需指定连接选项。有关连接选项的详细信息,请参见《ESXCLI 概念和示例》

前提条件

  • 在配置用户之前,验证是否已配置身份验证和隐私协议。
  • 确认您知道计划配置的每个用户的身份验证和隐私密码。密码必须至少包含 7 个字符。请将这些密码存储在主机系统上的文件中。
  • 使用 ESXCLI 命令配置 ESXi SNMP 代理。有关如何使用 ESXCLI 的详细信息,请参见《《ESXCLI 入门》》。

过程

  1. 如果您正在使用身份验证或隐私,请通过运行带有 --auth-hash--priv-hash 标记的 esxcli system snmp hash 命令来获得用户的身份验证和隐私哈希值。
    例如,运行以下命令:
    esxcli system snmp hash --auth-hash secret1 --priv-hash secret2
    此处, secret1 是包含用户身份验证密码的文件的路径, secret2 是包含用户隐私密码的文件的路径。

    或者,您可以传递 --raw-secret 标记,然后在命令行中直接指定密码。

    例如,可以运行以下命令:
    esxcli system snmp hash --auth-hash authsecret --priv-hash privsecret --raw-secret
    生成的输出可能如下:
    Authhash: 08248c6eb8b333e75a29ca0af06b224faa7d22d6
    Privhash: 232ba5cbe8c55b8f979455d3c9ca8b48812adb97
    系统会显示身份验证和隐私哈希值。
  2. 通过运行带有 --user 标记的 esxcli system snmp set 命令来配置用户。
    例如,可以运行以下命令:
    esxcli system snmp set --user userid/authhash/privhash/security
    该命令接受以下参数:
    参数 描述
    userid 用户名。
    authhash 身份验证哈希值。
    privhash 隐私哈希值。
    security 为该用户启用的安全级别,其可以是 auth(代表仅身份验证)、priv(代表身份验证和隐私)或 none(代表无身份验证和隐私)。
    例如,运行以下命令为 user1 配置具有身份验证和隐私的访问:
    esxcli system snmp set --user user1/08248c6eb8b333e75a29ca0af06b224faa7d22d6/
    232ba5cbe8c55b8f979455d3c9ca8b48812adb97/priv
    必须运行以下命令为 user2 配置不具有身份验证或隐私的访问:
    esxcli system snmp set --user user2/-/-/none
  3. (可选) 通过运行以下命令测试用户配置:
    esxcli system snmp test --user username --auth-hash secret1 --priv-hash secret2
    如果配置正确,此命令会返回以下消息:“已使用引擎 ID 和以下安全级别正确验证用户 username: protocols (User username validated correctly using engine id and security level: protocols)”。其中, protocols 表示配置的安全协议。

配置 SNMP v3 目标

配置 SNMP v3 目标以允许 ESXi SNMP 代理发送 SNMP v3 陷阱和通知。

SNMP v3 允许发送陷阱和通知。通知消息是一种消息类型,发送方最多可以重新发送三次。发送方在每次尝试之间等待 5 秒,除非接收方已确认收到消息。

您最多可以分别配置三个 SNMP v3 目标以及三个 SNMP v1/v2c 目标。

要配置目标,您必须指定接收陷阱或通知的系统的主机名或 IP 地址、用户名、安全级别以及是否发送陷阱或通知。安全级别可以为 none(代表无安全)、auth(代表仅身份验证)、priv(代表身份验证和隐私)。

如果您通过 ESXCLI 运行 ESXCLI 命令,则必须提供可指定目标主机和登录凭据的连接选项。如果您直接在使用 ESXi Shell 的主机上使用 ESXCLI 命令,则可以使用所提供的命令,而无需指定连接选项。有关连接选项的详细信息,请参见《ESXCLI 概念和示例》

前提条件

  • 对于 ESXi SNMP 代理和目标管理系统,请确保将访问这些陷阱或通知的用户配置为 SNMP 用户。

  • 如果您正在配置通知,则需要提供接收通知消息的远程系统上的 SNMP 代理的引擎 ID。
  • 使用 ESXCLI 命令配置 ESXi SNMP 代理。有关如何使用 ESXCLI 的详细信息,请参见《《ESXCLI 入门》》。

过程

  1. (可选) 如果您要配置通知,请将 esxcli system snmp set 命令与 --remote-users 选项一起运行以配置远程用户。
    例如,运行以下命令:
    esxcli system snmp set --remote-users userid/auth-protocol/auth-hash/priv-protocol/priv-hash/engine-id
    该命令接受以下参数:
    参数 描述
    userid 用户名。
    auth-protocol 身份验证协议 none(不进行身份验证)或 SHA1
    auth-hash 身份验证哈希或 -(如果身份验证协议为 none)。
    priv-protocol 隐私协议,AES128none
    priv-hash 隐私哈希或 -(如果隐私协议为 none)。
    engine-id 接收通知消息的远程系统上的 SNMP 代理的引擎 ID。
  2. esxcli system snmp set 命令与 --v3targets 选项一起运行。
    例如,运行以下命令:
    esxcli system snmp set --v3targets hostname@port/userid/secLevel/message-type
    此命令的参数如下。
    参数 描述
    hostname 接收陷阱或通知的管理系统的主机名或 IP 地址。
    port 接收陷阱或通知的管理系统上的端口。如未指定端口,则使用默认端口 162。
    userid 用户名。
    secLevel 您已配置的身份验证和隐私的级别。如果您仅配置了身份验证,请使用 auth,如果配置了身份验证和隐私,请使用 priv,如果两者均未配置,请使用 none
    message-type 管理系统接收的消息类型。使用 trapinform
  3. (可选) 如果未启用 ESXi SNMP 代理,请运行以下命令:
    esxcli system snmp set --enable true
  4. (可选) 通过运行 esxcli system snmp test 命令发送测试通知,以验证是否正确配置了代理。
    代理将 warmStart 通知发送到配置的目标。