2010年8月4日 星期三

設定snmptrap + snmptt以及Client的設定

1. 啟動snmptrapd:
          * 在/etc/hosts.allow中加入准許接收的網段
            snmptrapd: 192.168.0.0/255.255.0.0 : Allow
          * 建立/etc/snmp/snmptrapd.conf
            disableAuthorization yes
            traphandle default /usr/sbin/snmptthandler
          
            disableAuthorization不做認證的動作
            traphandle告知traphandle的所在位置
            default則表示接受全部的OID而不是只接受特定的OID
          * 修改/etc/init.d/snmptrapd中的OPTIONS
            OPTIONS="-On -C -c /etc/snmp/snmptrapd.conf -Ls2 -p /var/run/snmptrapd.pid"
            -On意思是指以數字形式秀出OID
            -C是不讀其他的設定檔只讀-c後面指定的設定檔
            -c後面指定要讀入的設定檔
            -Ls2使指用syslog記錄LOG並且記錄在local2的facility
            -p將trap daemon的process ID記錄在檔案中
   2. 安裝snmptt
          * 安裝 Config::IniFiles perl module
            安裝後才能讓perl正常讀取ini檔
            wget http://search.cpan.org/CPAN/authors/id/W/WA/WADG/Config-IniFiles-2.38.tar.gz
            解壓縮
            perl Makefile.pl
            make
            make install
      * wget http://downloads.sourceforge.net/snmptt/snmptt_1.2.tgz?modtime=1181989825&big_mirror=0
        解壓縮snmptt
          * cp snmptt snmptthandler snmpttconvert snmpttconvertmib ./contrib/sendemail.sh 至/usr/sbin
          * cp snmptt.ini至/etc/snmp/
          * cp snmptt-init.d /etc/init.d/snmpttd
            chmod 755 /etc/init.d/snmpttd
            chmod 755 /usr/sbin/sendemail.sh
            chkconfig --level 345 snmptrapd on
            chkconfig --level 345 snmpttd on
          * useradd snmptt
            groupadd snmptt
          * mkdir /var/log/snmptt /var/spool/snmptt
            chown snmptt /var/log/snmptt
            chown snmptt /var/spool/snmptt
          * 修改snmptt.ini
            mode = daemon
            daemon_uid = snmptt
            spool_directory = /var/spool/snmptt/
            log_enable = 1
            log_file = /var/log/snmptt/snmptt.log
            unknown_trap_log_enable = 1
            unknown_trap_log_file = /var/log/snmptt/unknown.log

            snmptt_conf_files = <
            /etc/snmp/snmptt.conf
            END
            將想要讀入的conf檔寫在這裡
            snmpttd啟動時便會把這些檔讀入
            這些conf檔就是要用來比對OID以及所要進行的動作
          
          * cp examples/snmptt.conf.generic /etc/snmp/snmptt.conf
                o 基本上snmptt.conf裡面中的coldStart,warmStart,linkdown,linkup,authenticationFailure就已

達到基本Router所要的網管功能.
                o 如果需要如當linkdown時, 發mail或簡訊時, 可以修改如下:
                  EXEC /usr/sbin/sendemail.sh "FORMAT NIC switchover to slot $3 from slot $5"
   3. 修改/etc/syslog.conf
      local0.*                                                /var/log/snmptt.log
      local2.*                                                /var/log/snmptrapd.log
   4. 啟動service
      service syslog restart (如果有裝syslog-ng 則重啟syslog-ng)
      service snmptrapd start
      service snmpttd start
   5. Trouble Shooting:
          * check /var/log/snmptrapd.log
   6. check /var/log/snmptt/snmptt.log
      check /var/log/snmptt/unknown.log

snmptt有更很棒的好處, 就是你不用自己一個個去study每個Device的MIB, 再轉成有用的rule, 你可以直接用

snmpttconvertmib.

   1. snmpttconvertmib --in=/usr/share/snmp/mibs/XXX.txt --out=/etc/snmp/XXX.conf
   2. vi /etc/snmp/snmptt.ini
      snmptt_conf_files = <
      /etc/snmp/snmptt.conf
      /etc/snmp/XXX.conf
      END
   3. service snmpttd reload

就可以開始接收XXX的Trap了.

不時看看/var/log/snmptt/unknown.log, 再把無法translate的mib給加入. 以Cisco為例, 有幾個好用tool:

   1. http://www.cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml
   2. http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&step=2
   3. http://tools.cisco.com/Support/SNMP/do/MIBSupport.do?local=en&step=3
   4. 不過最好用的是這個http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en
      把在unkown.log中的cisco mib, 截取一部份貼入, 就會告訴你要load那個mib, 再用snmpttconvertmib加入至
snmp_cisco.conf.

===============================================
SNMP Client 的設定
只要在/etc/snmp/snmpd.conf的最後加上下面兩行即可
trapsink 192.168.187.133 public
trap2sink 192.168.187.133 public
中間的IP是snmptrapd主機的IP
改完後重新啟動snmp
service snmpd restart