FreeBSD初心者運用日記 このページをアンテナに追加

 | 

2008-06-10

[][]snmpインストール手順 00:25 snmpインストール手順 - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - snmpインストール手順 - FreeBSD初心者運用日記 snmpインストール手順 - FreeBSD初心者運用日記 のブックマークコメント

まず、サーバ側(snmp的にはエージェントというらしい)の設定です。

最初にnet-snmpをインストールします。

以下のコマンド実行します。2~3分かかります。

# cd /usr/pors/net-mgmt/net-snmp
# make install clean

最初失敗しました。

でその後、make deinstallの後にmake install(reinstallだったかも)をやればうまくいった

インストール時の最後のほうのメッセージ。

**** This port installs snmp daemon, header files and libraries but don't
     invokes snmpd by default.
     If you want to invoke snmpd and/or snmptrapd at startup, put these
     lines into /etc/rc.conf.

        snmpd_enable="YES"
        snmpd_flags="-a -p /var/run/snmpd.pid"
        snmptrapd_enable="YES"
        snmptrapd_flags="-a -p /var/run/snmptrapd.pid"

**** You may specify the following make variables:

        NET_SNMP_SYS_CONTACT="kuriyama@FreeBSD.org"
        NET_SNMP_SYS_LOCATION="Tokyo, Japan"
        DEFAULT_SNMP_VERSION=3
        NET_SNMP_MIB_MODULES="host smux mibII/mta_sendmail ucd-snmp/diskio"
        NET_SNMP_LOGFILE=/var/log/snmpd.log
        NET_SNMP_PERSISTENTDIR=/var/net-snmp

     to define default values (or overwriting defaults).  At least
     setting first two variables, you will not be prompted during
     configuration process.  You may also set

        BATCH="yes"

     to avoid interactive configuration.
===>   Compressing manual pages for net-snmp-5.2.1_1
===>   Running ldconfig
/sbin/ldconfig -m /usr/local/lib
===>   Registering installation for net-snmp-5.2.1_1
===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/lib/libnetsnmp.so.7
/usr/local/lib/libnetsnmpmibs.so.7

      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/snmptrapd.sh
/usr/local/etc/rc.d/snmpd.sh

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage:
http://net-snmp.sourceforge.net/
===>  Cleaning for libiconv-1.9.2_1
===>  Cleaning for autoconf-2.59_2
===>  Cleaning for gettext-0.14.1
===>  Cleaning for gmake-3.80_2
===>  Cleaning for libtool-1.5.10_1
===>  Cleaning for m4-1.4.1
===>  Cleaning for p5-gettext-1.03
===>  Cleaning for perl-5.8.6_2
===>  Cleaning for help2man-1.35.1
===>  Cleaning for net-snmp-5.2.1_

上記メッセージにしたがって/etc/rc.confを修正

/usr/local/share/snmp/snmpd.confを編集(snmpd.confのパーミットは600。communityはパスワードに当たるものなので、適宜編集)

$ cd /usr/local/share/snmp
$ cp snmpd.conf.sample snmpd.conf
$ sudo chmod 600 snmpd.conf
$ sudo vi snmpd.conf
・・・省略・・・
#       sec.name  source          community
com2sec local     localhost       private
com2sec mynetwork NETWORK/24      private
com2sec mynetwork 192.168.0.11    public

※ communityはパスワードに相当するものなので、普通は公開しちゃいけません。。

snmpdを起動

$ sudo /usr/local/sbin/snmpd

snmpd.confを編集した場合は、シグナルHUPを送信すれば、反映してくれる。

クライアント(snmp的にはマネージャというらしい)で、以下のコマンドを実行

$ snmpwalk -v 1 -c public 192.168.0.12 . | head
SNMPv2-MIB::sysDescr.0 = STRING: FreeBSD NewYork.Earth 5.4-RELEASE-p6 FreeBSD 5.4-RELEASE-p6 #0: Sun Aug 14 08:52:11 UTC 2005     root@freebsd.ongs.co.jp:/usr/obj/usr/src/sys/GENERIC i386
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (105404) 0:17:34.04
SNMPv2-MIB::sysContact.0 = STRING: Me <me@somewhere.org>
SNMPv2-MIB::sysName.0 = STRING: NewYork.Earth
SNMPv2-MIB::sysLocation.0 = STRING: Right here, right now.
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
$ 

正常に動いているようです。


以下、失敗例です。

snmpwalkを実行

$ snmpwalk -v 1 -c hoge localhost .
Timeout: No Response from localhost

うむむ、、

ポートあいてるかみてみよう。

$ netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  *.199                  *.*                    LISTEN
tcp4       0      0  192.168.0.12.22        192.168.0.2.2263       ESTABLISHED
tcp4       0      0  *.23                   *.*                    LISTEN
tcp4       0      0  *.22                   *.*                    LISTEN
tcp6       0      0  *.22                   *.*                    LISTEN
udp4       0      0  *.161                  *.*
udp4       0      0  *.514                  *.*
udp6       0      0  *.514                  *.*
Active UNIX domain sockets
Address  Type   Recv-Q Send-Q    Inode     Conn     Refs  Nextref Addr
c1dea460 stream      0      0        0 c1dea4ec        0        0
c1dea4ec stream      0      0        0 c1dea460        0        0
c1deb000 stream      0      0 c1de3000        0        0        0 /var/run/devd.pipe
c1deae38 dgram       0      0 c1de4420        0        0        0 /var/run/logpriv
c1deaec4 dgram       0      0 c1de4528        0        0        0 /var/run/log

以下の出力がsnmpdに関係あるらしい(本当かどうかわからないけど、、)

tcp4 0 0 *.199 *.* LISTEN

8d6

udp4 0 0 *.161 *.*

よく考えたら、ローカルでやってるのだからポートは関係ないか、、

lddしてみる。うむむ、libwrapみてるのか。。ということは/etc/hosts.allowが原因かな。。

$ ldd /usr/local/sbin/snmpd
/usr/local/sbin/snmpd:
        libnetsnmpmibs.so.7 => /usr/local/lib/libnetsnmpmibs.so.7 (0x2807c000)
        libnetsnmpagent.so.7 => /usr/local/lib/libnetsnmpagent.so.7 (0x2812e000)
        libnetsnmphelpers.so.7 => /usr/local/lib/libnetsnmphelpers.so.7 (0x28160000)
        libwrap.so.3 => /usr/lib/libwrap.so.3 (0x28177000)
        libnetsnmp.so.7 => /usr/local/lib/libnetsnmp.so.7 (0x2817f000)
        libcrypto.so.3 => /lib/libcrypto.so.3 (0x28216000)
        libz.so.2 => /lib/libz.so.2 (0x2830d000)
        libkvm.so.2 => /lib/libkvm.so.2 (0x2831d000)
        libdevstat.so.4 => /lib/libdevstat.so.4 (0x28323000)
        libperl.so => /usr/local/lib/perl5/5.8.6/mach/CORE/libperl.so (0x28328000)
        libm.so.4 => /lib/libm.so.4 (0x28424000)
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x2843f000)
        libutil.so.4 => /lib/libutil.so.4 (0x28457000)
        libc.so.6 => /lib/libc.so.6 (0x28463000)
        libm.so.3 => /lib/libm.so.3 (0x2853d000)
        libcrypt.so.2 => /lib/libcrypt.so.2 (0x28558000)

/etc/hosts.allowの、"All : ALL : deny"を一時的にコメントしてみた。

$ sudo vi /etc/hosts.allow
All : 192.168.0.2 : allow
All : 192.168.0.11 : allow
All : 192.168.0.12 : allow
#All : ALL : deny

できた

$ snmpwalk -v 1 -c private localhost | head
SNMPv2-MIB::sysDescr.0 = STRING: FreeBSD black 5.4-RELEASE-p6 FreeBSD 5.4-RELEASE-p6 #0: Sun Aug 14 08:52:11 UTC 2005     root@freebsd.ongs.co.jp:/usr/obj/usr/src/sys/GENERIC i386
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (517283) 1:26:12.83
SNMPv2-MIB::sysContact.0 = STRING: Me <me@somewhere.org>
SNMPv2-MIB::sysName.0 = STRING: black
SNMPv2-MIB::sysLocation.0 = STRING: Right here, right now.
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB

ToDo:/etc/hosts.allowでsnmpdだけを許可する方法を調べてみる。

[]snmpwalkコマンドについて 00:29 snmpwalkコマンドについて - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - snmpwalkコマンドについて - FreeBSD初心者運用日記 snmpwalkコマンドについて - FreeBSD初心者運用日記 のブックマークコメント

以下の形式でパラメタを指定する。

snmpwalk -v 1 {サーバ名} {コミュニティ名}

以下のようにして、MIBの範囲を指定することもできる。

snmpwalk -v 1 {サーバ名} {コミュニティ名} 1.3.9.9.9

以下のようにOnオプションつけると、数字で出力してくれる。

snmpwalk -On -v 1 {サーバ名} {コミュニティ名}

※ Onじゃなかったかも。。Oなんとか、なのは覚えてるけど、記憶があいまい。


サーバがフリーズしているか否かの監視チェックツールを作成するときはpingでなくsnmpwalk使う。pingだとサーバがフリーズしてても応答を返してくることがあるため、snmpwalkのほうが確実らしい。

 |