Home Raspberry Pi を SNMP マネージャとして利用する
Post
Cancel

Raspberry Pi を SNMP マネージャとして利用する

動機

別記事 で Wi-Fi 打刻について調べていたとき、この事例 を通して snmpwalk を用いた接続機器の情報取得に興味を持ったため。

環境構築

今回、自宅ネットワーク上にある Raspberry Pi を SNMP マネージャとして稼働させ、MIB を受信する方針とする。download-mibs もしておく。

1
2
3
4
sudo apt-get install snmpd
sudo apt-get install snmp
sudo apt install snmp-mibs-downloader
sudo download-mibs

ufw を用いて、SNMP に用いられるポート 161, 162 を開けておく。SSH で作業をしているので、22 番ポートも開ける。

1
2
3
4
5
sudo ufw default deny
sudo ufw allow 22
sudo ufw allow 161
sudo ufw allow 162
sudo ufw enable

また、デフォルトの設定に記載されている public では .1.3.6.1.2.1.1.1.3.6.1.2.1.25.1.1 以下しか閲覧できないようになっている (こちら を参照) ため、全てのサブツリーを閲覧できるように private という community を用意しておく。具体的には、/etc/snmp/snmpd.conf を編集し、以下の一行を追加する。

1
rocommunity private 127.0.0.1 .1 

上記の設定後、snmpd を再起動。

1
sudo service snmpd restart

接続されている機器の private IP や Mac Address を取得する

MIB の OID は階層構造になっている (こちら を参照)。ここでは、試しに Table ipNetToPhysicalTable を取得してみることにする。

1
snmpwalk -v 2c -c private 127.0.0.1 .1.3.6.1.2.1.4.35.1

これにより、以下のような出力を得ることができる。

1
2
3
4
5
6
7
IP-MIB::ipNetToPhysicalPhysAddress.2.ipv4."192.168.11.1" = STRING: xx:xx:xx:xx:xx:xx
IP-MIB::ipNetToPhysicalPhysAddress.2.ipv4."192.168.11.8" = STRING: xx:xx:xx:xx:xx:xx
IP-MIB::ipNetToPhysicalPhysAddress.3.ipv4."192.168.11.12" = STRING: xx:xx:xx:xx:xx:xx
...(中略)...
IP-MIB::ipNetToPhysicalState.2.ipv4."192.168.11.1" = INTEGER: reachable(1)
IP-MIB::ipNetToPhysicalState.2.ipv4."192.168.11.8" = INTEGER: stale(2)
IP-MIB::ipNetToPhysicalState.2.ipv4."192.168.11.12" = INTEGER: delay(3)
This post is licensed under CC BY 4.0 by the author.

名字の五十音分布を可視化してみる

IoT を使って毎朝体重を測らざるを得ないようにする