ネットワーク機器の状態監視をしたいと考えたとき、もっともシンプルな方法のひとつが SNMP(Simple Network Management Protocol) を使った監視になる。
この記事では、Oracle Linux9を使ってSNMPサーバを構築し、Cisco Catalyst C2960Lスイッチの状態を取得する方法を記載する。
1. SNMPとは?
SNMP(Simple Network Management Protocol)は、ネットワーク機器の情報(インターフェース状態、CPU使用率、システム名など)を取得・管理するためのプロトコル。
Ciscoスイッチを監視するには、SNMPでデータを取得する「サーバ(監視側)」と、情報を提供する「スイッチ(被監視側)」が必要になる。
2. 構成の概要
役割 | 内容 |
---|---|
SNMPサーバ | Oracle Linux 9 |
被監視機器 | Cisco Catalyst C2960L |
SNMPバージョン | v2c(シンプルで学習向け) |
コミュニティ名 | public (※実運用では変更推奨) |
graph TD Client["管理者PC(snmpwalk使用)"] SNMPServer["Oracle Linux SNMPサーバ (snmpd)"] Switch["Cisco Catalyst C2960L スイッチ"] Client -->|"snmpwalkで確認"| SNMPServer SNMPServer -->|"UDP 161(SNMP v2c)"| Switch Switch -->|"SNMPデータ提供 (MIB/OID)"| SNMPServer
3. Cisco C2960LのSNMP設定
まずはスイッチ側の設定を行う。以下のコマンドをCiscoスイッチのコンソールやSSH経由で実行する。
switch> enable
switch# configure terminal
switch(config)# snmp-server community public RO
switch(config)# snmp-server host 192.168.1.100 version 2c public
switch(config)# end
switch# write memory
public
は読み取り専用のコミュニティ名(共通のパスワードのようなもの)。192.168.1.100
はOracle LinuxサーバのIPアドレスに読み替える。
設定の反映を確認する。switch# show running-config
switch#show running-config
Building configuration...
<中略>
snmp-server community public RO
snmp-server host 192.168.1.100 version 2c public
<中略>
end
4. Oracle LinuxにSNMPサーバをインストール
続いて、監視サーバ側(Oracle Linux)で net-snmp
パッケージをインストールし、設定を行う。
4-1. パッケージのインストール
net-snmp
パッケージをインストール。# dnf install net-snmp net-snmp-utils -y
4-2. 設定ファイルの編集
snmpd.conf
のバックアップを作成する。# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
snmpd.conf
を編集する。# vi /etc/snmp/snmpd.conf
コンフィグ末尾に以下を追記する:
# community名とアクセス許可
rocommunity public
# すべてのIPからのSNMP要求を受け付ける
agentAddress udp:161
※ 実運用では rocommunity public 192.168.1.1
のように、アクセス元IPを制限すると安全。
4-3. SNMPサービスの起動と有効化
SNMPサービスの起動と有効化を行う。# systemctl is-enabled snmpd
# systemctl enable snmpd
# systemctl is-enabled snmpd
# systemctl status snmpd
# systemctl start snmpd
# systemctl status snmpd
起動と有効化ができていれば下記表示になる
[root@localhost ~]# systemctl is-enabled snmpd
enabled
[root@localhost ~]# systemctl status snmpd
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; preset: disabled)
Active: active (running) since Mon 2025-05-12 00:44:43 JST; 1min 59s ago
Main PID: 52892 (snmpd)
Tasks: 1 (limit: 9393)
Memory: 4.1M
CPU: 42ms
CGroup: /system.slice/snmpd.service
mq52892 /usr/sbin/snmpd -LS0-6d -f
5. SNMPでスイッチの状態を確認する
snmpwalk
コマンドを使って、実際にCiscoスイッチから情報を取得する。
5-1. システム名(ホスト名)を取得
# snmpwalk -v2c -c public 192.168.1.1 SNMPv2-MIB::sysName.0
結果例:
SNMPv2-MIB::sysName.0 = STRING: "Switch-C2960L"
5-2. インターフェース一覧を取得
# snmpwalk -v2c -c public 192.168.1.1 IF-MIB::ifDescr
結果例:
IF-MIB::ifDescr.1 = STRING: Vlan1
IF-MIB::ifDescr.2 = STRING: GigabitEthernet0/1
...
6. MIBファイルとは?
SNMPでは「MIB(Management Information Base)」という辞書ファイルを使って、情報の中身を人間が読める形(sysName
など)で表示する。
MIBファイルがないと、.1.3.6.1.2.1.1.5.0
のような数値(OID)だけが表示されてしまう。
今回はsnmp標準の標準MIBで対応できたが、Cisco機器専用のCPU、メモリ、電源、ファン、PoE、VLAN情報などは別途Cisco独自のMIB(CISCO MIB)を使わないと取得できない。
必要な場合は /usr/share/snmp/mibs/
に Cisco公式サイトからダウンロードした .my
ファイルを追加する。
7. まとめ
作業 | 内容 |
---|---|
スイッチ設定 | snmp-server community などの設定で監視を許可 |
Linuxサーバ設定 | net-snmp の導入と設定ファイル編集 |
動作確認 | snmpwalk で情報が取得できるかチェック |
補足 | MIBを使えばOIDを名前で表示可能 |
8. 次のステップ
CLIでの確認ができたら、LibreNMS や Zabbix といった監視ツールを使って、Web画面で視覚的に状態を監視することも可能となる。