SNMP
久しぶりにSNMPを扱う機会があり、テスト環境を探していたところ、GNS3上のルーターにSNMPエージェントを動作させ、snmpwalkによりMIB取得するのがイージーであることがわかったので、ここに記録。
環境
ルーターR1にSNMPエージェントを動作させ、VMであるxubuntu-1にて、SNMPマネージャーであるsnmpwalkを実行する。xubuntu-1はDHCPによりIPアドレスを取得。
ルーターR1の設定
関連するところのみ記載。
ip dhcp excluded-address 192.168.1.1 192.168.1.11
ip dhcp pool P1
network 192.168.1.0 255.255.255.0
default-router 192.168.1.1
interface FastEthernet0
ip address 192.168.1.1 255.255.255.0
snmp-server community public RO
IPアドレス設定、DHCPサーバー設定、SNMPエージェント(snmp-server)設定である。SNMP設定に関しては、コミュニティ名は「public」、読み取りのみ「RO」とした。本設定については、検索すれば、多数の情報が見つかる。
xubuntu-1でのsnmpwalkのインストール
$ sudo apt install snmp
検証(snmpwalk実行)
$ snmpwalk -c public -v 2c 192.168.1.1
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco IOS Software, C1700 Software (C1700-ADVIPSE
RVICESK9-M), Version 12.4(23), RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2008 by Cisco Systems, Inc.
Compiled Sat 08-Nov-08 18:56 by prod_rel_team"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.9.1.201
iso.3.6.1.2.1.1.3.0 = Timeticks: (43094) 0:07:10.94
iso.3.6.1.2.1.1.4.0 = ""
iso.3.6.1.2.1.1.5.0 = STRING: "R1"
iso.3.6.1.2.1.1.6.0 = ""
iso.3.6.1.2.1.1.7.0 = INTEGER: 78
(多数続く)
このときのWiresharkデータ。
snmpwalkにOID(MIB)を指定しないと、MIB-2「1.3.6.1.2.1」ツリーから、get-next-requestにより検索するようだ。
例えば、特定ツリーを指定する。
$ snmpwalk -c public -v 2c 192.168.1.1 1.3.6.1.2.1.3
iso.3.6.1.2.1.3.1.1.1.2.1.192.168.1.1 = INTEGER: 2
iso.3.6.1.2.1.3.1.1.1.2.1.192.168.1.12 = INTEGER: 2
iso.3.6.1.2.1.3.1.1.2.2.1.192.168.1.1 = Hex-STRING: D0 01 04 80 00 00
iso.3.6.1.2.1.3.1.1.2.2.1.192.168.1.12 = Hex-STRING: 00 0C 29 D4 53 93
iso.3.6.1.2.1.3.1.1.3.2.1.192.168.1.1 = IpAddress: 192.168.1.1
iso.3.6.1.2.1.3.1.1.3.2.1.192.168.1.12 = IpAddress: 192.168.1.12
「1.3.6.1.2.1.3」は「atサブツリー」と定義されており、IPアドレスとMacアドレスとの関係が記述される。上記の「192.168.1.12」は、xubuntu-1のIPであり、「00 0C 29 D4 53 93」はそのMacアドレスである。xubuntu-1でのifconfigの結果は下記のとおり。
$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::d6f7:f199:b697:802f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d4:53:93 txqueuelen 1000 (イーサネット)
最後に
snmpwalkには多数のオプションがあるが、基本的な使い方は上記であろう。