NET-SNMPのインストール

SNMPでは管理する対象となるネットワーク機器やホストで動作するプログラムをエージェントとよび、エージェントからの情報を一括管理するためのアプリケーションをマネージャと呼びます。ここでは、エージェントとマネージャの機能をもつNET-SNMPのインストール方法を説明します。

ソースの入手

以下のURLから最新のソースを入手してください。
http://net-snmp.sourceforge.net/
今回はnet-snmp-5.1.1.tar.gzをダウロードしました。
http://optusnet.dl.sourceforge.net/sourceforge/net-snmp/net-snmp-5.1.1.tar.gz

インストール

ここではnet-snmp-5.1.1tar.gzをダウンロードしたものとして説明します。

# tar xvfz net-snmp-5.1.1.tar.gz
# cd net-snmp-5.1.1
# ./configure
※このあといくつかの質問がありますが全てエンターで問題ないでしょう
$ make
$ make test
--------------------------------------------------
Summary: 44 / 44 succeeded.
--------------------------------------------------
$ su
# make install

これでインストールは完了です。
/usr/local/bin/以下にインストールされます。

エージェントの設定

設定ファイルを作成します。展開したディレクトリにテンプレート(EXAMPLE.conf)がありますのでこれを/usr/local/share/snmp/snmpd.confとして利用します。

# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf
# chmod 600 /usr/local/share/snmp/snmpd.conf

設定は
com2sec : セキュリティ名
group : グループ名
view : 取得を許可する情報の範囲
access : グループに対するアクセス
から構成されています。

それでは、設定ファイル/usr/local/share/snmp/snmpd.confの編集をしましょう。

(1) com2sec
ネットワークの範囲とコミュニティ名という2つの値を定義します。

com2sec local     localhost       hoge
com2sec mynetwork 192.168.0.0/24  huga

この設定はセキュリティ名local(127.0.0.1)でコミュニティ名をhogeにしもう1つの定義でセキュリティ名securenet(192.168.0.0/24)でコミュニティ名をhugaにしています。

(2) group
SNMPの各バージョンで採用するセキュリティモデルの定義をします。

group   local_group        v1              local
group   local_group        v2c             local
group   local_group        usm             local
group   secure_group       v1              mynetwork
group   secure_group       v2c             mynetwork
group   secure_group       usm             mynetwork

グループ名がlocal_groupでv1,v2,usmがlocal(127.0.0.1)で利用できる
グループ名がsecure_groupでv1,v2,usmがmynetwork(192.168.0.0/24)で利用できる

(3) view
SNMPで取得可能な情報の範囲を指定します。第4フィールドのMIBのオブジェクトIDと第5フィールドのマスクによって範囲を指定できます。

view    view_all          included        .1                      80
view    view_mib2         included        .1.3.6.1.2.1            fc
view    view_ucdavis      included        .1.3.6.1.4.1.2021       fe

(4) access
アクセス許可のための設定です。書式は以下の様になります。
access、グループ名、Context、モデル、認証設定、Contextマッチの方法、read権限、write権限、通知

access  local_group   ""  any   noauth   exact  view_all   none  none
access  secure_group  ""  any   noauth   exact  view_mib2  none  none

(5) その他の設定
syslocation 名称や住所を指定する
syscontact メールアドレスを指定する

syslocation hogehoge server
syscontact marron <marron@example.com>

起動方法

では、設定が完了したら、snmpを起動してみましょう。
起動方法は以下の通りです。

# /usr/local/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd -a

付加したオプションの意味は以下の通りです。
-Lsd : syslogを有効にする
-p : ファイル名 プロセスIDを保存するファイル名
-Lf : snmpdの出力を送るファイル名の指定
-a : 送信元IPアドレス(NMS)をログに記録する

起動スクリプトも用意しましたのでよかったら利用してください。
/etc/rc.d/init.d/snmpd として作成

#!/bin/bash

# ucd-snmp init file for snmpd
#
# chkconfig: 345 50 50
# description: Simple Network Management Protocol (SNMP) Daemon
#
# processname: /usr/local/sbin/snmpd
# config: /usr/local/share/snmp/snmpd.conf
# pidfile: /var/run/snmpd
# securlevel: 10

# source function library
. /etc/rc.d/init.d/functions

OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd -a"
RETVAL=0
prog="snmpd"

start() {
        echo -n $"Starting $prog: "
        daemon /usr/local/sbin/snmpd $OPTIONS
        RETVAL=$?
        echo
        touch /var/lock/subsys/snmpd
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc /usr/local/sbin/snmpd
        RETVAL=$?
        echo
        rm -f /var/lock/subsys/snmpd
        return $RETVAL
}

reload(){
        stop
        start
}

restart(){
        stop
        start
}

condrestart(){
    [ -e /var/lock/subsys/snmpd ] && restart
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  reload)
        reload
        ;;
  condrestart)
        condrestart
        ;;
  status)
        status snmpd
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
        RETVAL=1
esac

exit $RETVAL

マネージャの利用

では、snmpデーモンを動かしたら早速、マネージャーの利用をしてみましょう。

(1) snmpwalkコマンド
指定したOID以下のMIB情報を取得します。

(書式)
snmpwalk -c <コミュニティ名> <ホスト名> [ 検索範囲 ]
-Os : 出力結果のOIDの最後の拡張子のみ表示
-c : コミュニティ名の指定
-v : SNMPバージョンの指定

(利用例)

# snmpwalk -v1 -c hoge localhost
SNMPv2-MIB::sysDescr.0 = STRING: Linux hoge 2.4.18-17 #1 Fri Feb 20 16:15:57
 JST 2004 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (23518) 0:03:55.18
SNMPv2-MIB::sysContact.0 = STRING: marron 
SNMPv2-MIB::sysName.0 = STRING: hoge
SNMPv2-MIB::sysLocation.0 = STRING: hogehoge server
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB

(2) snmpgetコマンド
指定したOIDのMIBの情報を取得します。

(使用例)

# snmpget -v1 -c hoge localhost system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux huga 2.4.18-17 #1 Fri Feb 20 16:15:57
 JST 2004 i686 

(3) snmpgetnextコマンド
snpgetの実行と同じようにオプションを指定すると指定したODIのツリーの次のMIB情報を取得します。

# snmpgetnext -v1 -c hoge localhost ********** 

(4) snmptranslateコマンド
MIBの名前解決を行うことが出来ます。

i) オブジェクトIDをMIBシンボル名に変換する場合
(使用例)

# snmptranslate 1.3.6.1.2.1.25.3

ii) MIBシンボル名を数値(オブジェクトID)に変換する場合
(使用例)

# snmptranslate -On HOST-RESOURCES-MIB::hrDevice

iii) オブジェクトIDの全体パスを表示せずにオブジェクトIDを表示
(使用例)

# snmptranslate -On -IR hrDevice

iv) 指定したMIBシンボル名/オブジェクトIDの詳細を表示
(使用例)

# snmptranslate -Td .1.3.6.1.2.1.1.1

v) 指定したMIBシンボル名/オブジェクトID以下のツリー構造を表示
(使用例)

# snmptranslate -Tp

marronおすすめの参考書 by Amazon
ディーリンクジャパン SNMP マネージメントモジュール(DMC-1000専用) DMC-1002 ディーリンクジャパン SNMP マネージメントモジュール(DMC-1000専用) DMC-1002
ディーリンクジャパン /
¥ 32,710
アライドテレシス AT-WDM03 SNMPマネージメントモジュール 59559 アライドテレシス AT-WDM03 SNMPマネージメントモジュール 59559
アライドテレシス /
¥ 66,698
SC20G SNMP/WebカードオムロンSC20G9760009268931 SC20G SNMP/WebカードオムロンSC20G9760009268931
オムロン(株) /

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.