檢視原始碼 管理器配置檔案的定義

配置數據可以包含在位於配置目錄中的配置文件中。此目錄的名稱在 config_dir 配置參數中給定。這些文件在啟動時讀取。

找到配置文件的目錄作為參數傳遞給管理器。

所有文件中的條目格式都是 Erlang 項,以 '.' 和換行符分隔。在以下各節中,描述了這些項的格式。註解可以指定為普通的 Erlang 註解。

如果在這些文件中發現語法錯誤,則會在啟動時使用錯誤報告模組config_err/2 函數報告。

管理器資訊

管理器資訊應儲存在名為 manager.conf 的檔案中。

每個條目都是一個大小為二的元組

{Variable, Value}.

  • Variable 是以下其中之一

    • transports - 定義管理器的傳輸域及其地址。必填

      Value{Domain, Addr} 元組或 Domain 原子(atom)的列表。

      • DomaintransportDomainUdpIpv4transportDomainUdpIpv6 其中之一。

      • Addr 對於目前支援的域,可以是 IpAddr{IpAddr, IpPort} 元組。IpAddr 可以是常規的 Erlang/OTP ip_address() 或傳統的 SNMP 整數列表,而 IpPort 則是一個整數。

        Addr 不包含埠號時,將使用 port 的值。

        當未指定 Addr 時,即僅使用 Domain 原子時,將解析主機名稱以找到 IP 地址,並使用 port 的值。

    • port - 定義管理器用於與代理程式通信的 UDP 埠。如果 transports 未定義每個傳輸的埠號,則為必填

    • engine_id - 如 SNMP-FRAMEWORK-MIB 中定義的 SnmpEngineID必填

    • max_message_size - 如 SNMP-FRAMEWORK-MIB 中定義的 snmpEngineMaxMessageSize必填

  • Value 是變數的值。

仍然支援舊版和中間變數 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 函數來添加。

每一行定義管理器的管理器使用者

每個條目都是一個大小為四的元組

{UserId, UserMod, UserData, DefaultAgentConfig}.

  • UserId 可以是任何項(用於唯一標識使用者)。
  • UserMod 是使用者回呼模組(原子)。
  • UserData 可以是任何項(在調用 UserMod 時傳遞給使用者)。
  • DefaultAgentConfig 是預設代理程式配置的列表。當此使用者註冊代理程式時,這些值將用作預設值。

代理程式

處理代理程式所需的資訊應儲存在名為 agents.conf 的檔案中。也可以通過在運行時調用 register_agent 來添加代理程式。

每個條目都是一個元組

{UserId, TargetName, Comm, Domain, Addr, EngineID, Timeout, MaxMessageSize, Version, SecModel, SecName, SecLevel}.

  • UserId 是負責此代理程式的管理器使用者的身份(項)。
  • TargetName 是一個唯一非空字串。
  • Comm 是社群字串(字串)。
  • Domain 是傳輸域,可以是 transportDomainUdpIpv4transportDomainUdpIpv6
  • Addr 是傳輸域中的地址,可以是 {IpAddr, IpPort} 元組或包含埠號的傳統 SNMP 整數列表。IpAddr 可以是常規的 Erlang/OTP ip_address() 或不包含埠號的傳統 SNMP 整數列表,而 IpPort 則是一個整數。
  • EngineID 是代理程式的引擎 ID(字串)。
  • Timeout 是重新傳輸逾時(infinity | 整數)。

  • MaxMessageSize 是傳送給此代理程式的傳出訊息的最大訊息大小(整數)。
  • Version 是版本(v1 | v2 | v3)。

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

  • SecName 是安全名稱(字串)。
  • SecLevel 是安全級別(noAuthNoPriv | authNoPriv | authPriv)。

仍然可以使用不含 Domain 元素的元組以及包含所有 TDomainIpPort 元素的舊版配置。

USM 的安全數據

有關 USM 的安全數據的資訊應儲存在名為 usm.conf 的檔案中。如果管理器希望在使用 SNMPv3 與代理程式通信時使用,則必須存在此檔案。也可以通過在運行時調用 register_usm_user 來添加 usm 數據。

相應的表是 SNMP-USER-BASED-SM-MIB 中的 usmUserTable(根據 SNMP-USM-HMAC-SHA2-MIB 進行調整)。

每個條目都是一個項

{EngineID, UserName, AuthP, AuthKey, PrivP, PrivKey}.
{EngineID, UserName, SecName, AuthP, AuthKey, PrivP, PrivKey}.

第一種情況是當我們有身份函數時(SecName = UserName)。

  • EngineID 是一個字串。

  • UserName 是一個字串。

  • SecName 是一個字串。

  • AuthPusmNoAuthProtocolusmHMACMD5AuthProtocolusmHMACSHAAuthProtocolusmHMAC128SHA224AuthProtocolusmHMAC192SH256AuthProtocolusmHMAC256SHA384AuthProtocolusmHMAC384SHA512AuthProtocol

  • AuthKey 是一個列表(整數)。這是使用者秘密的本地身份驗證密鑰。它在 MIB 中不可見。此密鑰的長度(位元組數)需要為

    • 如果 usmHMACMD5AuthProtocol,則為 16。
    • 如果 usmHMACSHAAuthProtocol,則為 20。
    • 如果 usmHMAC128SHA224AuthProtocol,則為 28。
    • 如果 usmHMAC192SHA256AuthProtocol,則為 32。
    • 如果 usmHMAC256SHA384AuthProtocol,則為 48。
    • 如果 usmHMAC384SHA512AuthProtocol,則為 64。
  • PrivPusmNoPrivProtocolusmDESPrivProtocolusmAesCfb128Protocol

  • PrivKey 是一個列表(整數)。這是使用者秘密的本地加密密鑰。它在 MIB 中不可見。如果使用 usmDESPrivProtocolusmAesCfb128Protocol,則此密鑰的長度需要為 16。