Rocky Linux(CentOS系)を使ったSNMP設定の検証方法

Linux

CentOS(Rocky Linux)を使った、ネットワーク機器のSNMP設定の検証を行う方法の備忘録です。

中規模以上のネットワークシステムでは、SNMPを用いた監視システムが導入されているため、機器出荷前に動作検証を行う必要がありますので、その方法について記載します。

環境条件の確認

本記事は、以下の環境でL2スイッチの設定を確認する場合について記載しています。

下図では現地にリモート監視サーバーzabbixが設置されているのですが、zabbixを模擬するのはコストがかかるため、Rocky Linuxを代用サーバーとして活用します。

  • SNMPマネージャ(リモート監視サーバーzabbix):10.10.10.200 →今回Rocky Linuxで代用
  • SNMPエージェント(検証対象のL2スイッチ3台):10.10.10.118 , 10.10.10.119, 10.10.10.120
  • コミュニティ名:zabbix(L2/L3スイッチに設定されるコミュニティ名)

SNMPマネージャのインストール

Rocky LinuxはCentOS系ですのでインターネットとの接続状態から、以下コマンドでsnmpをインストールします。

検証ツール類は、snmp-utilsに入っているので同時にインストールしておきます。

# yum -y install net-snmp
# yum -y install net-snmp-utils

SNMPマネージャの設定

SNMPマネージャの設定ファイルは、/etc/snmp/snmpd.conf です。

snmpd.confはインストール時に生成されていますが、そのままでは何も動作しないため、検証環境に合わせてOIDとipアドレスの記述が必要です。

以下はコミュニティ名"zabbix"に接続した例です。OID(後述説明)はとりあえず「.1.3.6.1.2.1.1」を含むように設定しておきます。

# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1

# sec.name source community
com2sec local localhost private
com2sec mynet 10.10.10.200/16 zabbix
com2sec public default zabbix

# incl/excl subtree mask
view all included .1 80
#view system included system fe
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

設定を反映するためには、snmpdを再起動します。

# systemctl restart snmpd

snmpdの動作状態は、以下でプロセスの有無を確認できます。

# ps aux | grep snmpd

MIBとOIDについて

MIB (Management Information Base) とは、SNMPエージェントが持っている機器情報の集合体です。

MIBはオブジェクトID(OID)という単位で区切られており、OID=「1.3.6.1.2.1.1.5.0」のような表記がなされてます。

SNMPは、このOIDの番号をもとに機器からレスポンスを得る仕組みですので、OIDを正しく記載しないとレスポンスが無しとなります。

検証用途のみであるときは、標準OIDである機器名「1.3.6.1.2.1.1.5.0」が取得できれば必要十分ですので、snmpd.confには「.1.3.6.1.2.1.1」を記載して、SNMPの監視対象に入れておきます。

またMIBには、標準MIBと拡張MIBがあり、拡張MIBはベンダ固有の番号体系となります。

OIDの詳細は以下ページを参照すると理解が深まると思います。

ネットワーク機器のSNMP MIB/OIDまとめ - Qiita
NetOpsCoding Advent Clender 12/20の記事になります。SNMPのOID情報って、案外まとめられてそうで纏められてないので、ここに私が知っている範囲の情報をまとめていき…

ファイアウォールの解除

Linuxシステムのファイアウォール(firewalld)は、デフォルトで自動起動となっているため、解除は必須です。

ネットワーク機器の検証でLinuxを使う場合は、Firewallはまず不要ですので、systemctlでdisableにしておくとよいでしょう。

ファイアウォールの一時停止

# systemctl stop firewalld

ファイアウォールの自動起動を停止

# systemctl disable firewalld

pingで疎通確認

SNMPマネージャ側からL2スイッチへpingを行い、疎通確認をします。

# ping 10.10.10.118
# ping 10.10.10.119
# ping 10.10.10.120

snmpwalkによる応答確認

SNMPは、snmpwalkコマンドでレスポンスが確認できます。

SNMPマネージャ(Rocky Linux)からL2スイッチ対して、コミュニティ名とHOST名のOIDを付して問い合わせると、ホスト名がレスポンスされ、適切に設定できていることが確認出来ます。

[root@localhost snmp]# snmpwalk -v1 -c zabbix 10.10.10.118 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: SW-1FB-03
[root@localhost snmp]# snmpwalk -v1 -c zabbix 10.10.10.119 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: SW-1FE-01
[root@localhost snmp]# snmpwalk -v1 -c zabbix 10.10.10.126 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: SW-2FA-03

snmpgetコマンドでもいいのですが、snmpwalkのほうがMIBのツリー配下全体を取ってくれるのでおすすめです。(「.1」で指定すると.1配下のMIDが全部レスポンスされます。)

応答がno responseとなる場合は以下の要因が考えられますので、一つずつ切り分けしてください。

  • L2/L3スイッチにpingが通っていない
  • Linux側でfirewalldが動作している
  • snmpマネージャが起動していない、または、再起動していない
  • コミュニティ名、または、OIDの指定が間違っている
  • L2スイッチ側でsnmpの設定が出来ていない

OIDを変更すると様々な情報がとれる

OIDは機器の情報を番号に変えたもので、OIDを変更すると機器から様々な応答を取ることが出来ます。

OIDの番号体系は機器のメーカーごとに異なりますが、機器情報、インタフェース情報、IP通信情報などの基本的な部分は各メーカ共通です。

例えば、OIDを"1.3.6.1.2.1.1.1.0"(機器に関する情報)に変更すると以下のような情報がとれます。

  • 機種:ApresiaNP2100-48T4X
  • ファームバージョン:Ver.1.11.01
[root@localhost snmp]# snmpwalk -v1 -c rts-zabbix 10.10.10.118 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: ApresiaNP2100-48T4X Gigabit Ethernet Switch Ver.1.11.01