# RHEL8系
# dnf -y install net-snmp net-snmp-utils
# systemctl start snmpd
# systemctl enable snmpd
/etc/snmp/snmpd.conf には下記のような設定項目があります。
# public というコミュニティ名に notConfigureUser というセキュリティ名をつける com2sec notConfigUser default public # SNMPv1 に対しては notConfigureUser を notConfigGroup に所属させる group notConfigGroup v1 notConfigUser # systemview というビューに MIB の 1.3.6.1.2.1.1 を加える view systemview included .1.3.6.1.2.1.1 # notConfigGroup に systemview へのアクセス権を与える access notConfigGroup "" any noauth exact systemview none none
SNMPエージェントに対してMIB値を要求・取得するコマンドです。-v には SNMP のバージョン、-c にはコミュニティ名を指定します。snmpget では単一の MIB 値しか取得できません。
$ snmpget -v 2c -c public 192.168.100.101 1.3.6.1.2.1.1.1.0
SNMPエージェントに対してMIB値を取得・要求するコマンドです。指定した MIB 配下の値をすべて取得することができます。
$ snmpwalk -v 2c -c public 192.168.100.101 1.3.6.1.2.1.1
SNMPエージェントから SNMP-Trap を受け取り、ロギングします。161 番の UDP ポートで待ち受けし、デフォルトでは syslog に書き出します。
# RHEL8系
# dnf -y install rsyslog net-snmp net-snmp-utils
# echo "disableAuthorization yes" >> /etc/snmp/snmptrapd.conf
# systemctl start rsyslog
# systemctl enable rsyslog
# systemctl start snmptrapd
# systemctl enable snmptrapd
受信したトラップは /var/log/messages に出力されます。上記はすべてのコミュニティ名のトラップを受け付ける例です。特定のコミュニティ名(例:public)のみ受け付けるには /etc/snmp/snmptrapd.conf に下記の様に設定してください。
authCommunity log,execute,net public
SNMP Trapを疑似的に送信します。192.168.100.100 は送信先アドレス、'' は起動してからの経過時間ですが '' を指定すると自動的に補ってくれます。linkDown はネットワークインタフェースがダウンしたことを示すOID、ifIndex.3 は追加情報のOIDで、型はi(integer)、値は3(3番目のポート)がダウンしたことを示しています。
$ snmptrap -v 2c -c public 192.168.0.3 '' linkDown ifIndex.3 i 3 ifAdminStatus.3 i 1 ifOperStatus.3 i 2
MIB値を識別する識別子を OID(Object IDentifier) と呼びます。主な OID を下記に示します。
iso(1) org(3) dod(6) internet(1) mgmt(2) | mib-2(1) ... 標準MIB | system(1) ... システム情報 | sysDescr(1) | sysObjectID(2) | sysUpTime(3) ... 起動してからの時間 | sysContact(4) ... コンタクト先 | sysName(5) ... システム名 | sysLocation(6) ... 設置場所 | sysServices(7) | sysORLastChange(8) | sysORTable(9) | interfaces(2) ... ネットワークインタフェース情報 | ifTable(2) | ifEntry(1) | ifIndex(1) ... インタフェース番号 | ifAdminStatus(7) ... あるべき状態 | ifOperStatus(8) ... 現在の状態 | ifInOctets(10) ... 受信オクテット数 | ifOutOctets(16) ... 送信オクテット数 | at(3) ... ARPテーブル情報 | ip(4) ... IP情報 | icmp(5) ... ICMP情報 | tcp(6) ... TCP情報 | udp(7) ... UDP情報 | egp(8) ... EGP情報 | transmission(10) ... 送受信情報 | snmp(11) ... SNMP情報 | rmon(16) ... RMON情報 | host(25) ... ホスト情報 | ifMIB(31) ... インタフェースMIB experimental(3) ... 実験的なMIB private(4) | enterprise(1) ... ベンダ拡張MIB | ibm(2) | cisco(9) | hp(11) | hitach(116) | nec(119) | sony(120) | fujitsu(211) snmpV2(6) snmpModules(3) snmpMIB(1) snmpMIBObjects(1) snmpTrap(4) snmpTrapOID(1) snmpTraps(5) coldStart(1) warmStart(2) linkDown(3) linkUp(4) authenticationFailure(5)
OID の末尾には、定義された OID の後にインスタンス番号をつけます。例えば 3番目のネットワークインタフェースのMIB値は iso(1).org(3)...(略)...ifInOctets(10).3 となります。1つしか無い値の場合は sysDescr(1).0 の様に 0 をつけます。