システムパラメータを検索するために、CentOS 7の最小インストールにsnmpdをインストールしました。次に例を示します。
snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.2.2.1.2
上記のコマンドの場合、次の結果が得られます。
IF-MIB::ifDescr = No Such Object available on this agent at this OID
私が実行するとき:
snmpwalk -v 2c -c public 127.0.0.1
iF-MIBがsnmpdによってロードされているかどうかを確認するには、次の結果を取得します。
SNMPv2-MIB::sysDescr.0 = STRING: Linux vm_test.whatever.com 3.10.0-862.6.3.el7.x86_64 #1 SMP Tue Jun 26 16:32:21 UTC 2018 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (90641) 0:15:06.41
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: vm_test.whatever.com
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK- MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (4) 0:00:00.04
Host-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (872972) 2:25:29.72
Host-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
出力から、IF-MIBがチェックされていないことがわかりますが、次のコマンドを実行すると、
snmptranslate -Dinit_mib .1.3.2>&1 | grep MIBDIR
mibdirs(ディレクトリ)と見つかったMIB(Seen MIBS)を確認するには、次の結果を取得します。
registered debug token init_mib, 1
init_mib: Seen MIBDIRS: Looking in '/root/.snmp/mibs:/usr/share/snmp/mibs' for mib dirs ...
init_mib: Seen MIBS: Looking in ':Host-RESOURCES-MIB:Host-RESOURCES-
TYPES:UCD-DISKIO-MIB:TCP-MIB:UDP-MIB:MTA-MIB:NETWORK-SERVICES-MIB:SCTP-
MIB:RMON-MIB:EtherLike-MIB:LM-SENSORS-MIB:SNMPv2-MIB:IF-MIB:IP-
MIB:NOTIFICATION-LOG-MIB:DISMAN-EVENT-MIB:DISMAN-SCHEDULE-MIB:UCD-SNMP-
MIB:UCD-DEMO-MIB:SNMP-TARGET-MIB:NET-SNMP-AGENT-MIB:SNMP-MPD-MIB:SNMP-
USER-BASED-SM-MIB:SNMP-FRAMEWORK-MIB:SNMP-VIEW-BASED-ACM-MIB:SNMP-
COMMUNITY-MIB:IPV6-ICMP-MIB:IPV6-MIB:IPV6-TCP-MIB:IPV6-UDP-MIB:IP-FORWARD-
MIB:NET-SNMP-PASS-MIB:NET-SNMP-EXTEND-MIB:UCD-DLMOD-MIB:SNMP-NOTIFICATION-
MIB:SNMPv2-TM:NET-SNMP-VACM-MIB' for mib files ...
init_mib: Seen PREFIX: Looking in '.1.3.6.1.2.1' for prefix ..
注意深く見ると、IF-MIBはSeen Mibsとしてタグ付けされています。 snmpwalkコマンドに表示されないのはなぜですか?また、IF = MIBに関連するOIDがこのエージェントに存在しないのはなぜですか?これは何か権限関連ですか?OS関連ですか?
CentOSへのインストール時のSNMPデーモンは、セキュリティ上の理由から、デフォルトで、「パブリック」コミュニティを使用して制限付きMIBツリービューのクエリに応答するように構成されています。
デフォルトで構成されているように、デフォルトの「パブリック」MIB(サブ)ツリーで許可されるビューは、.1.3.6.1.2.1.1および.1.3.6.1.2.1.25.1.1のみです。よく見ると、IF-MIBアドレス空間は.1.3.6.1.2.1.2です。そのため、そのMIBアドレススペースでオブジェクトをクエリすることは、デフォルトでは許可されていません。また、あなたのsnmpwalk
コマンドが非常に制限されたビューしか表示しない理由についても説明します。
したがって、SNMPデーモン/サービスがクエリに応答するようにするには、最初に、構成ファイル/etc/snmp/snmpd.conf
に新しいビューを構成する必要があります(セキュリティ上の理由から、新しいコミュニティも適しています)。
次に、セキュリティ上の理由から「プライベート」コミュニティを構成し、照会できるMIBツリースペースを広げます。
そのため、/etc/snmp/snmpd.conf
に追加します
rocommunity private 127.0.0.1 .1
ここで、127.0.0.1はクエリを実行できるIPアドレス、.1はMIBツリー全体です。 ro communityは、より安全な読み取りクエリしか作成できないことも証明しています。
snmpd.conf
ファイルを構成した後、次のようにSNMPサービスを再起動する必要があります。
Sudo service snmpd restart
または
Sudo systemctl restart snmpd
さて、クエリについて。 MIBリーフノードを要求しない場合は、snmpget
を使用できません。次のようにMIBツリーをウォークするには、snmpwalk
を使用する必要があります。
$ snmpwalk -v 2c -c private 127.0.0.1 .1.3.6.1.2.1.2.2.1.2
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: eth2
一方、MIBツリーのリーフノード、たとえばシステムの2番目のインターフェースを照会する必要がある場合は、次のようにします。
$ snmpget -v 2c -c private 127.0.0.1 .1.3.6.1.2.1.2.2.1.2.2
IF-MIB::ifDescr.2 = STRING: eth0
PS明らかに本番システムでは、コミュニティ名をプライベート以外の名前で呼びます。
PS2。 MIBファイルをインストールするという事実は、数字を人間やスクリプト/ネットワーク監視ソフトウェアなどの読み取り可能なテキストに変換する辞書をインストールすることです。 MIBがインストールされていなくても、数値形式で特定のMIBサブツリーをクエリすることはできますそのSNMPコミュニティにアクセスするためのセキュリティコンテキストで許可されている場合
以下を試してsnmpwalk、
snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.2.2.1.2
以下のような結果が得られます
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth2
IF-MIB::ifDescr.3 = STRING: eth3
IF-MIB::ifDescr.4 = STRING: eth4
IF-MIB::ifDescr.5 = STRING: eth5
IF-MIB::ifDescr.6 = STRING: eth0
IF-MIB::ifDescr.7 = STRING: eth1
IF-MIB::ifDescr.8 = STRING: eth6
IF-MIB::ifDescr.9 = STRING: eth7
IF-MIB::ifDescr.10 = STRING: bond0
したがって、結果を取得するには別のノードを追加する必要があります。
snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.2.2.1.2.1