查看源码 管理器配置文件定义

配置数据可以包含在位于配置目录中的配置文件中。该目录的名称在 config_dir 配置参数中给出。这些文件在启动时读取。

配置文件的所在目录作为参数传递给管理器。

所有文件中的条目格式都是 Erlang 项,用 '.' 和换行符分隔。在以下章节中,将描述这些项的格式。注释可以指定为普通的 Erlang 注释。

如果在这些文件中发现语法错误,它们将在启动时通过 错误报告模块config_err/2 函数报告。

管理器信息

管理器信息应存储在名为 manager.conf 的文件中。

每个条目是一个大小为二的元组

{变量, 值}.

  • 变量 是以下之一

    • transports - 它定义了管理器的传输域及其地址。必选

      {域, 地址} 元组或 原子列表。

      • transportDomainUdpIpv4transportDomainUdpIpv6 之一。

      • 地址 对于当前支持的域,要么是 IpAddr,要么是 {IpAddr, IpPort} 元组。IpAddr 要么是常规的 Erlang/OTP ip_address(),要么是传统的 SNMP 整数列表,而 IpPort 是一个整数。

        地址 不包含端口号时,将使用 port 的值。

        当未指定 地址 时,即仅使用 原子时,主机的名称将被解析以查找 IP 地址,并使用 port 的值。

    • port - 它定义了管理器用于与代理通信的 UDP 端口。如果 transports 没有为每个传输定义端口号,则必选

    • engine_id - 如 SNMP-FRAMEWORK-MIB 中定义的 SnmpEngineID必选

    • max_message_size - 如 SNMP-FRAMEWORK-MIB 中定义的 snmpEngineMaxMessageSize必选

  • 是变量的值。

仍然支持旧版和中间变量 addressdomain,因此旧的配置将起作用。

以下示例显示了一个 manager.conf 文件

{transports,       [{transportDomainUdpIpv4, {{141,213,11,24}, 5000}},
                    {transportDomainUdpIpv6, {{0,0,0,0,0,0,0,1}, 5000}}]}.
{engine_id,        "mgrEngine"}.
{max_message_size, 484}.

engine_id 的值是一个字符串,它应该具有非常特定的结构。有关详细信息,请参见 RFC 2271/2571。

用户

对于每个管理器用户,管理器需要一些信息。此信息可以添加到 users.conf 配置文件中,也可以通过在运行时调用 register_user 函数添加。

每一行定义管理器的管理器用户

每个条目是一个大小为四的元组

{用户ID, 用户模块, 用户数据, 默认代理配置}.

  • 用户ID 是任何项(用于唯一标识用户)。
  • 用户模块 是用户回调模块(原子)。
  • 用户数据 是任何项(在调用 用户模块 时传递给用户)。
  • 默认代理配置 是默认代理配置的列表。当此用户注册代理时,这些值将用作默认值。

代理

处理代理所需的信息应存储在名为 agents.conf 的文件中。也可以通过调用 register_agent 在运行时添加代理。

每个条目是一个元组

{用户ID, 目标名称, 社区, 域, 地址, 引擎ID, 超时, 最大消息大小, 版本, 安全模型, 安全名称, 安全级别}.

  • 用户ID 是负责此代理的管理器用户的标识(项)。
  • 目标名称 是一个唯一的非空字符串。
  • 社区 是社区字符串(字符串)。
  • 是传输域,可以是 transportDomainUdpIpv4transportDomainUdpIpv6
  • 地址 是传输域中的地址,可以是 {IpAddr, IpPort} 元组,也可以是包含端口号的传统 SNMP 整数列表。IpAddr 要么是常规的 Erlang/OTP ip_address(),要么是不包含端口号的传统 SNMP 整数列表,而 IpPort 是一个整数。
  • 引擎ID 是代理的引擎 ID(字符串)。
  • 超时 是重传超时(infinity | 整数)。

  • 最大消息大小 是发送到此代理的出站消息的最大消息大小(整数)。
  • 版本 是版本(v1 | v2 | v3)。

  • 安全模型 是安全模型(any | v1 | v2c | usm)。

  • 安全名称 是安全名称(字符串)。
  • 安全级别 是安全级别(noAuthNoPriv | authNoPriv | authPriv)。

仍然可以使用不带 元素,以及带有所有 TDomainIpPort 元素的元组的旧版配置。

USM 的安全数据

有关 USM 的安全数据的信息应存储在名为 usm.conf 的文件中,如果管理器希望在与代理通信时使用 SNMPv3,则该文件必须存在。也可以通过调用 register_usm_user 在运行时添加 usm 数据。

对应的表是 SNMP-USER-BASED-SM-MIB 中的 usmUserTable(根据 SNMP-USM-HMAC-SHA2-MIB 进行调整)。

每个条目是一个项

{引擎ID, 用户名, 认证协议, 认证密钥, 隐私协议, 隐私密钥}.
{引擎ID, 用户名, 安全名称, 认证协议, 认证密钥, 隐私协议, 隐私密钥}.

第一种情况是当我们有恒等函数 (安全名称 = 用户名) 时。

  • 引擎ID 是一个字符串。

  • 用户名 是一个字符串。

  • 安全名称 是一个字符串。

  • 认证协议usmNoAuthProtocolusmHMACMD5AuthProtocolusmHMACSHAAuthProtocolusmHMAC128SHA224AuthProtocolusmHMAC192SH256AuthProtocolusmHMAC256SHA384AuthProtocolusmHMAC384SHA512AuthProtocol

  • 认证密钥 是一个列表(整数)。这是用户的秘密本地化身份验证密钥。它在 MIB 中不可见。此密钥的长度(字节数)需要为

    • 如果为 usmHMACMD5AuthProtocol,则为 16。
    • 如果为 usmHMACSHAAuthProtocol,则为 20。
    • 如果为 usmHMAC128SHA224AuthProtocol,则为 28。
    • 如果为 usmHMAC192SHA256AuthProtocol,则为 32。
    • 如果为 usmHMAC256SHA384AuthProtocol,则为 48。
    • 如果为 usmHMAC384SHA512AuthProtocol,则为 64。
  • 隐私协议usmNoPrivProtocolusmDESPrivProtocolusmAesCfb128Protocol

  • 隐私密钥 是一个列表(整数)。这是用户的秘密本地化加密密钥。它在 MIB 中不可见。如果使用 usmDESPrivProtocolusmAesCfb128Protocol,则此密钥的长度需要为 16。