ネットワーク機器の状態監視をしたいと考えたとき、もっともシンプルな方法のひとつが SNMP(Simple Network Management Protocol) を使った監視になる。
この記事では、RHEL9を使ってSNMPサーバを構築し、Cisco Catalyst C2960Lスイッチの状態を取得する方法を記載する。
1. SNMPとは?
SNMP(Simple Network Management Protocol)は、ネットワーク機器の情報(インターフェース状態、CPU使用率、システム名など)を取得・管理するためのプロトコル。
Ciscoスイッチを監視するには、SNMPでデータを取得する「サーバ(監視側)」と、情報を提供する「スイッチ(被監視側)」が必要になる。
2. 構成の概要
| 役割 | 内容 |
|---|---|
| SNMPサーバ | Red Hat Enterprise Linux 9 |
| 被監視機器 | Cisco Catalyst C2960L |
| SNMPバージョン | v2c(シンプルで学習向け) |
| コミュニティ名 | public(※実運用では変更推奨) |
graph TD
Client["管理者PC(snmpwalk使用)"]
SNMPServer["Red Hat Enterprise Linux 9 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 memorypublicは読み取り専用のコミュニティ名(共通のパスワードのようなもの)。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
<中略>
end4. RHEL9にSNMPサーバをインストール
続いて、監視サーバ側(Red Hat Enterprise Linux 9)で 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.baksnmpd.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 enable snmpd
# systemctl start 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 -f5. 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画面で視覚的に状態を監視することも可能となる。
(関連記事)
【RHEL9】Zabbixサーバを構築する(MariaDB + Apache + PHP)
【Zabbix】ZabbixでCiscoスイッチを監視する

