概要
SNMPを使用して、データを取得しようとしても、以下のように表示されうまくいかない事がある。
ここでは、snmpで監視情報を取得される対象を192.168.160.10とする。
SNMP情報を取得するサーバを、監視サーバと故障する。(Zabbixで使用していたため。)
snmpwalk -v 2c -c public 192.168.160.10 .1
Timeout: No Response from 192.168.160.10
上記の時の場合に、主に確認すべき項目を記載します。
確認項目
疎通確認
まずは、監視サーバから、snmpの対象まで、pingが通るかを確認する。ルーティング、経路情報に間違いないかを確認する
ping 192.168.160.10
これで疎通ができなければ、snmpも通らない。通るなら次。
サービス起動確認
監視サーバと、snmpの対象の両方で、snmpdが起動している事を確認する。
【監視サーバとsnmp対象の両方で実施】
systemctl status snmpd.service
Activeになっている事を確認する。
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2023-02-24 17:26:51 JST; 1 weeks 6 days ago
Main PID: 950 (snmpd)
firewallの確認
firewalldとか、iptablesを確認。【監視サーバとsnmp対象の両方で実施】
経路の途中でFW機器が挟まっているのであればそこも確認
service snmp
もしくは、161ポートが空いている事を確認する事。
以下のコマンドで、trustedなどに入っているかを確認
sudo firewall-cmd --get-active-zones
また、zoneを適応させているなら以下のコマンドで。
sudo firewall-cmd --list-all --zone=Zone名
iptablesなら、以下コマンドで確認する。
sudo iptables -L
/etc/snmp/snmpd.confの確認
第一の候補で、全体を見て、community名
が合っているかを確認する。ここではpublic
という名前で設定している。以下のcom2Secなどの確認をするときに、タイポしていないかを確認する。
次に、監視サーバと、snmp対象が同じセグメントにいる場合、
snmp対象サーバの/etc/snmp/snmpd.confを、以下の項目を変更or追加する必要がある
変更前
rocommunity public 127.0.0.1
変更後
#rocommunity public 127.0.0.1 <-- コメントアウト
rocommunity public 192.168.160.0/24 <--- 追加
また、com2secにて、許可しているセグメントを確認する。
notConfigUserと、defaultは、全てのアドレスを指す。そのためこの場合は、コミュニティ名の全てのユーザがアクセスできるという事になる。
com2sec notConfigUser(セキュリティ名) default コミュニティ名
アドレス帯で指定するなら、以下のような形式で設定する。セキュリティ名は今回は適当にmynetとした。これにより、192.168.162.0/24のネットワークからのみsnmpの接続が可能となった。
com2sec mynet 192.168.162.0/24 public
もし修正を行ったら、snmpをリスタートさせる。
sudo systemctl restart snmpd.service
そして、監視サーバから、snmp対象にsnmpwalkを実行してみる。snmpの情報が大量に出てくれば問題ない。
snmpwalk -v 2c -c public 192.168.162.10 .1
参考サイト