[鯖缶] SNMP(4) MIB ファイルの追加

2017年12月17日

 標準でインストールされる MIB ファイルだけでは足らない場合 MIB ファイルを追加する必要があります。
 以下は ScreenOS 6.2 の MIB ファイルを追加する場合の例です。(CentOS 7, snmpwalk ver5.7.2 の例です)

  1. default の MIB の参照ディレクトリを確認する

     snmpwalk を引数なしで実行すると usage が表示されますが、その -M オプションの説明の下に default の MIB ファイルの参照ディレクトリが表示されます。

    USAGE: snmpwalk [OPTIONS] AGENT [OID]
    (中略)
    
    General options
      -m MIB[:...]          load given list of MIBs (ALL loads everything)
      -M DIR[:...]          look in given list of directories for MIBs
        (default: /usr/share/snmp/mibs/)
    (以下略)
    
  2. snmp.conf の場所を確認する

     snmpconf を実行すると、現在存在している conf が表示されます。

    [root@localhost ~]# snmpconf
    
    The following installed configuration files were found:
    
       1:  /etc/snmp/snmpd.conf
       2:  /etc/snmp/snmptrapd.conf
       3:  /root/.snmp/snmp.conf
    
    Would you like me to read them in?  Their content will be merged with the
    output files created by this session.
    
    Valid answer examples: "all", "none","3","1,2,5"
    
    Read in which (default = all): 
    

     既に作成されていればそのファイルを編集するか、削除して新しく作るのかを検討します。

     また今回は snmpconf で snmp.conf は作りませんが、snmpconf で作成すると最後に以下のようなメッセージがでます。

    The following files were created:
    
      snmp.conf
    
    These files should be moved to /usr/share/snmp if you
    want them used by everyone on the system.  In the future, if you add
    the -i option to the command line I'll copy them there automatically for you.
    
    Or, if you want them for your personal use only, copy them to
    /root/.snmp .  In the future, if you add the -p option to the
    command line I'll copy them there automatically for you.
    

    snmp.conf はみんなで使うなら /usr/share/snmp、ひとりで使うなら ~/.snmp に置きましょう、ということですね。

  3. MIB ファイルの配置

     ScreenOS 6.2 の MIB を配置します。
     今回は /tmp/6.2.0.mibs.zip の内容を /usr/share/snmp/mibs/screenos/ に展開します。

    wget https://www.juniper.net/techpubs/software/screenos/screenos6.2.0/6.2.0.mibs.zip -P /tmp
    unzip /tmp/6.2.0.mibs.zip -d /usr/share/snmp/mibs/screenos/
    
  4. snmp.conf の作成

     今回は空のファイルから直接テキストエディタを使って snmp.conf を作成します。
     mibdirs として上記の default の MIB の参照ディレクトリ(以下の緑マーキング部分)と今回新たに参照するディレクトリ(以下の赤のマーキング部分)を記述します。ディレクトリの区切り文字は : (コロン) です。
     次の行に mibs all を追記します。これは mibdirs で見つかったファイル全てを MIB ファイルとして評価するという意味 (らしい) です。

    mibdirs /usr/share/snmp/mibs:/usr/share/snmp/mibs/screenos/6.2.0.mibs/snmpv2
    mibs all
    
  5. MIB ファイルが参照されることを確認

     snmptranslate で配置した MIB ファイルが参照されることを確認します。
     追加配置した MIB ファイルの OID 番号を指定し -Of オプションを指定することで OID シンボルが表示されることを確認します。

    [root@localhost ~]# snmptranslate .1.3.6.1.4.1.3224.7.11.1 -Of
    (略)
    Unlinked OID in NETSCREEN-SET-ADMIN-USR-MIB: nsSetAdminUser ::= { netscreenSetting 11 }
    Undefined identifier: netscreenSetting near line 67 of /usr/share/snmp/mibs/NS/NS-SET-ADMIN-USR.mib
    .iso.org.dod.internet.private.enterprises.netscreen.netscreenSetting.nsSetAdminUser.nsSetAdminUserLocalTable
    

     上記ではなにかしらのエラーが出ていますが、変換自体はできているので OK です。(多分他の機器の MIB であればエラーは出ないんじゃないかな・・・?)

  6. MIB ファイルの修正

     不幸にして ScreenOS 6.2 の MIB ファイルはエラーが発生してしまったので、これを修正してみることにします。

     エラーメッセージ(前述の Unlinked OID ~)を読むと「9,49 行目は netscreenSettingMibModule だが、 67 行目は netscreenSetting であり MibModule がない」ということのようです。
     なので、9,49 行目の末尾の MibModule を削除し netscreenSetting に統一してみることにします。
     ・・・というのをエラーがでるすべての mib ファイルで実施します(汗

     9: netscreenSettingMibModule
    49: ::= { netscreenSettingMibModule 11 }
    67: nsSetAdminUser OBJECT IDENTIFIER ::= { netscreenSetting 11 }
    

     そんなのめんどくさい・・・と思う人はこちらで。

    cd /usr/share/snmp/mibs/screenos/6.2.0.mibs/snmpv2
    sed -e "s/MibModule//" NS-SET-*.mib -i
    sed -e "s/MibModule//" NS-VPN-*.mib -i
    

     MIB ファイルを修正後、再度 snmptranslate や snmpwalk を実行し、エラーが出なくなっていれば成功です。

    [root@localhost ~]# snmpwalk -c public -v 2c 192.168.0.1 .1.3.6.1.4.1.3224.7.11.1 -Of
    .iso.org.dod.internet.private.enterprises.netscreen.netscreenSetting.nsSetAdminUser.nsSetAdminUserLocalTable.nsSetAdminUserLocalEntry.nsAdminUserLocalIndex.0 = INTEGER: 0
    .iso.org.dod.internet.private.enterprises.netscreen.netscreenSetting.nsSetAdminUser.nsSetAdminUserLocalTable.nsSetAdminUserLocalEntry.nsAdminUserLocalName.0 = STRING: ns
    .iso.org.dod.internet.private.enterprises.netscreen.netscreenSetting.nsSetAdminUser.nsSetAdminUserLocalTable.nsSetAdminUserLocalEntry.nsAdminUserLocalPriv.0 = INTEGER: 250
    .iso.org.dod.internet.private.enterprises.netscreen.netscreenSetting.nsSetAdminUser.nsSetAdminUserLocalTable.nsSetAdminUserLocalEntry.nsAdminUserLocalRole.0 = INTEGER: not-assigned(0)
    





タグ:
カテゴリー: SNMP, サーバー管理

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org