対象機器:
192.168.0.70SNMP バージョン:
コミュニティ:
public目的:
snmpwalk を使って Furukawa F70 の SNMP 情報を取得するsnmpwalk -v2c -c public 192.168.0.70 furukawa のように名前付きで WALK できるようにするsnmpwalk のインストールUbuntu / Debian 系では snmpwalk は snmp パッケージに含まれる。
sudo apt update
sudo apt install snmp
確認:
snmpwalk --version
snmpwalk 実行方法snmpwalk -v2c -c public 192.168.0.70
これは標準 MIB 領域から WALK を開始するため、主に次のような情報が見える。
sysDescrsysObjectIDsysUpTimeifNumberifTablesnmpwalk -v2c -c public 192.168.0.70 .1.3.6.1.4.1.246
または、MIB 解決できる状態なら:
snmpwalk -v2c -c public 192.168.0.70 furukawa
furukawa は Furukawa の enterprise OID に対応する。
今回は以下の ZIP を利用した。
f70_f71_f310asn1.zip展開例:
mkdir -p ~/mibs/furukawa
cd ~/mibs/furukawa
unzip f70_f71_f310asn1.zip
展開後の主な構成:
f70_f71_f310asn1/
├── furukawa/
│ ├── furukawa-smi-v1.my
│ ├── furukawa.my
│ ├── infbase.my
│ ├── infonetProductID.my
│ └── ...
└── standards/
├── SNMPv2-SMI-rfc2578.my
├── SNMPv2-TC-rfc2579.my
├── IF-MIB-rfc2863.my
└── ...
一般的な配置先:
/usr/share/snmp/mibs/
今回は Furukawa 用にサブディレクトリを作る。
sudo mkdir -p /usr/share/snmp/mibs/furukawa
sudo cp ~/mibs/furukawa/f70_f71_f310asn1/furukawa/* /usr/share/snmp/mibs/furukawa/
sudo cp ~/mibs/furukawa/f70_f71_f310asn1/standards/* /usr/share/snmp/mibs/furukawa/
snmp.conf の設定ユーザー単位:
~/.snmp/snmp.conf
システム全体:
/etc/snmp/snmp.conf
通常はまずユーザー単位が安全。
mkdir -p ~/.snmp
nano ~/.snmp/snmp.conf
snmp.conf の正しい書き方snmp.conf ではシェルのように MIBDIRS= MIBS= とは書かない。
MIBDIRS=/usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs
MIBS=INFONET-PRODUCTID-MIB:FURUKAWA-MIB
mibdirs /usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs
mibs INFONET-PRODUCTID-MIB:FURUKAWA-MIB:FURUKAWA-INFONETBASE-MIB:SNMPv2-MIB:IF-MIB
mibs : の存在Debian / Ubuntu 系では snmp.conf に次の行があることがある。
mibs :
これは MIB 自動読込を抑止する設定。
必要に応じてコメントアウトするか、必要な MIB を明示指定する。
例:
# mibs :
mibdirs /usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs
mibs INFONET-PRODUCTID-MIB:FURUKAWA-MIB:FURUKAWA-INFONETBASE-MIB:SNMPv2-MIB:IF-MIB
切り分け時は環境変数でも指定できる。
MIBDIRS=/usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs \
MIBS=INFONET-PRODUCTID-MIB:FURUKAWA-MIB:FURUKAWA-INFONETBASE-MIB:SNMPv2-MIB:IF-MIB \
snmpwalk -v2c -c public 192.168.0.70 .1.3.6.1.4.1.246
この方法は一時的な確認向け。
恒久運用は snmp.conf に書く。
MIBS= に書くのは MIB モジュール名 である。
オブジェクト名やディレクトリ名は書けない。
MIBS=+infonetProductID:+furukawa
infonetProductID はオブジェクト名furukawa は枝名 / ラベル名MIBS=INFONET-PRODUCTID-MIB:FURUKAWA-MIB:FURUKAWA-INFONETBASE-MIB:SNMPv2-MIB:IF-MIB
snmptranslate による確認snmptranslate -IR -On infonetProductID
FURUKAWA-SMI-v1 の定義一覧を見るsnmptranslate -m FURUKAWA-SMI-v1 -M /usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs -Tz
出力例:
"furukawa" "1.3.6.1.4.1.246"
"products" "1.3.6.1.4.1.246.1"
"infonet" "1.3.6.1.4.1.246.1.1"
"infonetBase" "1.3.6.1.4.1.246.1.1.1"
これは FURUKAWA-SMI-v1 が「枝の定義」を持つ土台 MIB であることを示す。
snmptranslate -m FURUKAWA-SMI-v1 -M /usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs -Tp
FURUKAWA-SMI-v1 とは何かFURUKAWA-SMI-v1 は主に以下を定義する。
furukawaproductsinfonetinfonetBaseinfonetMgtこれは 親ノード / OID ツリーの土台 であり、通常は実データを持たない。
そのため、普通の snmpwalk では FURUKAWA-SMI-v1::... のような値が大量に見えるわけではない。
実際に値を持つのは、その下位にぶら下がる MIB である。
例:
FURUKAWA-INFONETBASE-MIBINFONET-PRODUCTID-MIBsnmpwalk host furukawa と snmpwalk host の違いsnmpwalk -v2c -c public 192.168.0.70 furukawa
これは実質:
snmpwalk -v2c -c public 192.168.0.70 .1.3.6.1.4.1.246
Furukawa 独自 OID 配下だけを WALK する。
snmpwalk -v2c -c public 192.168.0.70
これは標準 MIB 側から歩くため、先頭には主に以下が出る。
sysDescr.0sysObjectID.0sysUpTime.0ifNumber.0ifIndex.*Furukawa 独自情報が取れていないのではなく、起点が標準 MIB 領域である という違い。
sysObjectID.0 の .0 とは何か.0 は scalar object の唯一のインスタンス識別子。
例:
sysDescr.0sysObjectID.0sysUpTime.0ifNumber.0これらは 1 台につき 1 個しかない scalar であり、実際に参照するときは .0 を付ける。
対してテーブルはインデックスが付く。
例:
ifDescr.100000000ifOperStatus.300000001標準 WALK から確認できた内容:
sysDescr.0 = "F70 Version ..."
sysObjectID.0 = INFONET-PRODUCTID-MIB::infProdF70
sysUpTime.0 = ...
ifNumber.0 = 14
確認できた事実:
sysObjectID.0 は Furukawa 製品識別 OID を返しているsnmpwalk -v2c -c public 192.168.0.70 furukawa
取得例:
FURUKAWA-INFONETBASE-MIB::infonetEvent.1.1.0 = INTEGER: 6
FURUKAWA-INFONETBASE-MIB::infonetEvent.1.2.0 = INTEGER: 1
FURUKAWA-INFONETBASE-MIB::infonetEvent.1.3.1.1.1 = INTEGER: 1
...
これにより、Furukawa 独自イベントテーブルが参照できていることが確認できた。
| 項目 | オブジェクト |
|---|---|
| 機器説明 | sysDescr.0 |
| 製品識別 | sysObjectID.0 |
| 稼働時間 | sysUpTime.0 |
| インターフェース数 | ifNumber.0 |
| IF 名 | ifDescr |
| IF 状態 | ifOperStatus |
| IF 速度 | ifSpeed |
| 受信バイト | ifInOctets |
| 送信バイト | ifOutOctets |
| 項目 | オブジェクト |
|---|---|
| イベント情報 | infonetEvent... |
| 製品 ID | infonetProductID 系 |
snmpwalk -v2c -c public 192.168.0.70 sysDescr
snmpwalk -v2c -c public 192.168.0.70 sysObjectID
snmpwalk -v2c -c public 192.168.0.70 sysUpTime
snmpwalk -v2c -c public 192.168.0.70 ifDescr
snmpwalk -v2c -c public 192.168.0.70 ifOperStatus
snmpwalk -v2c -c public 192.168.0.70 ifAlias
snmpwalk -v2c -c public 192.168.0.70 furukawa
snmpwalk -v2c -c public 192.168.0.70 .1.3.6.1.4.1.246
snmptranslate -IR -On infonetProductID
snmptranslate -m FURUKAWA-SMI-v1 -M /usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs -Tz
~/.snmp/snmp.conf 例# Furukawa F70 用 MIB 設定
mibdirs /usr/share/snmp/mibs/furukawa:/usr/share/snmp/mibs
mibs INFONET-PRODUCTID-MIB:FURUKAWA-MIB:FURUKAWA-INFONETBASE-MIB:SNMPv2-MIB:IF-MIB
この設定を入れた後は、次のように簡単に実行できる。
snmpwalk -v2c -c public 192.168.0.70
snmpwalk -v2c -c public 192.168.0.70 furukawa
snmpwalk -v2c -c public 192.168.0.70 ifDescr
MIBS=+ALL は不要な MIB まで読み込み、警告が増えやすいFURUKAWA-SMI-v1 は土台 MIB であり、通常は値そのものの主役ではないfurukawa という枝名を使って WALK できるようになれば、Furukawa MIB の読込は概ね成功しているsysObjectID.0 = INFONET-PRODUCTID-MIB::infProdF70 が見えていれば、製品識別系 MIB も機能しているsnmpwalk -v2c -c public 192.168.0.70
snmpwalk -v2c -c public 192.168.0.70 furukawa
FURUKAWA-SMI-v1
FURUKAWA-INFONETBASE-MIB
INFONET-PRODUCTID-MIB