こんにちは!運用の沼……もとい、奥深くエキサイティングな「オブザーバビリティ(可視性)」の世界へようこそ。
インフラエンジニアとしてキャリアをスタートしたばかりのあなたにとって、ネットワーク機器の監視は最初の大きな壁に見えるかもしれません。「Zabbixの画面でエラーが出ているけれど、原因がわからない」「SNMPv2cとv3って何が違うの?」と戸惑うこともありますよね。
でも、安心してください。この記事を読み終える頃には、あなたは「暗号化された安全なSNMPv3通信を使って、CiscoやYAMAHAといった主要ルーター・スイッチの死活やトラフィックを完璧に手中に収めるスキル」を手に入れています。
これをマスターすれば、日々のネットワーク監視作業が劇的に楽になり、トラブル時にも「どこで何が起きているか」を即座に特定できる頼もしいエンジニアになれますよ。一緒に一歩ずつ進めていきましょう!
—
1. なぜ今「SNMPv3」なのか?(v2cの恐怖とv3の仕組み)
まずは、「なぜ手間をかけてSNMPv3を設定しなければならないのか」という本質から理解しましょう。
SNMPv2cの致命的なリスク:プレーンテキスト(平文)通信
長年使われてきたSNMPv2cは、設定が非常に簡単です。「コミュニティ名(例: `public`)」という合い言葉さえ合致すれば、誰でも機器の情報を読み取ることができます。
しかし、ここには巨大な落とし穴があります。SNMPv2cのパケットは完全に暗号化されていません(平文通信)。
もしネットワーク上に悪意のある第三者が潜んでいた場合、Wiresharkなどのパケットキャプチャツールを使えば、コミュニティ名は一瞬で暴露されます。そればかりか、ネットワークの構成情報やインターフェースのトラフィック状況、最悪の場合は機器の再起動コマンドまでもが盗聴・改ざんされるリスクを孕んでいるのです。
SNMPv3がもたらす「3つのセキュリティ層」
そこで登場するのがSNMPv3です。SNMPv3は単なるバージョンアップではなく、根本的なセキュリティ機構(USM: User-based Security Model)が導入されました。
SNMPv3には3つの動作モード(Security Level)が存在します。
| セキュリティレベル | 認証 (Authentication) | 暗号化 (Privacy) | 説明 |
| :— | :— | :— | :— |
| noAuthNoPriv | なし | なし | ユーザー名のみ。v2cと同等に危険(ほぼ使わない) |
| authNoPriv | あり (SHA/MD5) | なし | 改ざんは防げるが、通信内容は見えてしまう |
| authPriv ★推奨 | あり (SHA-256等) | あり (AES-128等) | 最高レベル。通信内容も完全に暗号化される |
現場で構築する際は、迷わず`authPriv`(認証あり+暗号化あり)を選択するのがグローバルスタンダードであり、プロの流儀です。
—
2. 実践!ネットワーク機器側のSNMPv3設定
それでは、実際に機器側の設定から進めていきましょう。今回は現場で最もよく遭遇するCisco IOSとYAMAHA RTXシリーズの2パターンを解説します。
パラメータの設計(共通)
今回は以下のセキュアな設計で統一します。
- ユーザー名: `zabbix-sec-user`
- 認証プロトコル: SHA-256(パスワード: `AuthPass#2026!Zbx`)
- 暗号化プロトコル: AES-128(パスワード: `PrivPass#2026!Zbx`)
—
① Cisco IOS の設定コマンド
Cisco機器では、グループを作成してからユーザーを割り当てる2ステップで設定します。
! 1. 閲覧範囲(ビュー)の定義:ISO全配下のOIDアクセスを許可
snmp-server view V3READ iso included
! 2. SNMPv3グループの作成(authPrivレベルを設定、V3READビューを割り当て)
snmp-server group ZABBIX_GRP v3 priv read V3READ
! 3. ユーザーの作成(認証パスワードと暗号化パスワードの設定)
! 認証: SHA-256 / 暗号化: AES 128bit
snmp-server user zabbix-sec-user ZABBIX_GRP v3 auth sha AuthPass#2026!Zbx priv aes 128 PrivPass#2026!Zbx
—
② YAMAHA (RTX) の設定コマンド
YAMAHAルーターでも基本的な考え方は同じです。コンソールから以下を入力します。
SNMPv3 機能を有効化
snmpv3 enable
コンテキストの作成(デフォルト)
snmpv3 context name default
アクセス権限(ビュー)の定義
snmpv3 access v3group default any authpriv read-view all-view write-view none notify-view none
snmpv3 view all-view 1.3.6.1.2.1 included
USMユーザーの作成(認証: SHA256 / 暗号化: AES128)
snmpv3 usm user 1 zabbix-sec-user v3group sha AuthPass#2026!Zbx aes PrivPass#2026!Zbx
—
3. Zabbix Serverからの「HelloWorld」導通確認
ZabbixのWeb GUIで設定をいじる前に、「ZabbixサーバーのCLI(コマンドライン)からSNMPv3でデータが引けるか」を確認するのが、障害トラブルを劇的に減らすプロの黄金手順です。
Zabbix Serverのターミナルを開き、以下の `snmpget` コマンドを実行してみましょう。これは、ネットワーク機器の「稼働時間(sysUpTime)」を取得する、いわばSNMP界のHelloWorldです。
snmpget -v 3 \
-l authPriv \
-u zabbix-sec-user \
-a SHA-256 -A “AuthPass#2026!Zbx” \
-x AES-128 -X “PrivPass#2026!Zbx” \
192.168.1.1 1.3.6.1.2.1.1.3.0
実行結果(成功例):
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (12345678) 1 day, 10:17:36.78
このようにタイムスタンプが返ってくれば、物理ネットワーク、認証、暗号化のすべてが正しく疎通している証拠です!もしタイムアウト(`Timeout: No Response from…`)になる場合は、IPアドレスの打ち間違い、アクセスリスト(ACL)、ファイアウォール(UDP 161番ポート)を再確認してください。
—
4. Zabbix GUIでのホスト&マクロ設定
ZabbixのWebインターフェースで設定を行いましょう。ここではパスワード類を直接アイテムに書き込まず、「マクロ」を使って安全に一元管理します。
ステップ1: ホストの登録
1. [設定] -> [ホスト] -> [ホストの作成] をクリック。
2. ホスト名: `Core-Switch-01` など識別しやすい名称。
3. インターフェース: 「追加」をクリックして [SNMP] を選択。
- IPアドレス: `192.168.1.1`
- ポート: `161`
- SNMPバージョン: SNMPv3 を選択。
ステップ2: ホストマクロの設定(認証情報の共通化)
[マクロ] タブを開き、「継承されたマクロとホストマクロ」 または 「ホストマクロ」 に以下を設定します。
| マクロ名 | 値 | 説明 |
| :— | :— | :— |
| `{$SNMP_SECNAME}` | `zabbix-sec-user` | ユーザー名 |
| `{$SNMP_AUTHPROTOCOL}` | `SHA256` | 認証プロトコル |
| `{$SNMP_AUTHPASSPHRASE}` | `AuthPass#2026!Zbx` | 認証パスワード(テキスト型/シークレットテキスト型) |
| `{$SNMP_PRIVPROTOCOL}` | `AES128` | 暗号化プロトコル |
| `{$SNMP_PRIVPASSPHRASE}` | `PrivPass#2026!Zbx` | 暗号化パスワード(テキスト型/シークレットテキスト型) |
このようにマクロ化しておけば、将来パスワード変更があった際もマクロの値を1箇所変えるだけで全アイテムに反映されます。
—
5. 死活・トラフィック監視の実装(アイテムとトリガー)
それでは、実際に運用で最も重要な「ICMP/SNMP死活監視」と「インターフェースのトラフィック監視」を構築しましょう。
① 機器の死活監視(SysUpTime)
機器が再起動したことを検知するアイテムとトリガーを作成します。
【アイテム設定】
- 名前: Device Uptime
- タイプ: SNMPエージェント
- キー: `system.uptime[sysUpTime.0]`
- SNMP OID: `1.3.6.1.2.1.1.3.0`
- セキュリティ氏名: `{$SNMP_SECNAME}`
- セキュリティレベル: `authPriv`
- 認証プロトコル: `{$SNMP_AUTHPROTOCOL}`
- 認証パスフレーズ: `{$SNMP_AUTHPASSPHRASE}`
- 暗号化プロトコル: `{$SNMP_PRIVPROTOCOL}`
- 暗号化パスフレーズ: `{$SNMP_PRIVPASSPHRASE}`
- 更新間隔: `1m`(1分)
【トリガー設定(機器再起動の検知)】
- 名前: `{HOST.NAME} has been restarted`
- 深刻度: 警告 (Warning)
- 条件式:
last(/Core-Switch-01/system.uptime[sysUpTime.0]) < 10m (意味: 稼働時間が10分未満になったら「再起動された」とみなしてアラートを出す) ---
② 64bitカウンタを使ったトラフィック監視(最も重要なプロのノウハウ)
ネットワークトラフィック(帯域使用量)を監視する際、初心者が必ずハマる巨大な罠があります。それは「32bitカウンタ (`ifInOctets`) を使ってしまうこと」です。
1Gbpsや10Gbpsの高速回線で32bitカウンタを使うと、数分で数値が上限(約4.2GB)に達し、ゼロにリセット(カウンタオーバーフロー)されてしまいます。その結果、Zabbixのグラフに巨大なスパイク(異常値)が発生したり、計算が狂ったりします。
【鉄則】トラフィック監視には必ず 64bitカウンタ (`ifHCInOctets` / `ifHCOutOctets`) を使用すること!
【アイテム設定:Gi0/1 受信トラフィック】
- 名前: Interface GigabitEthernet0/1: Inbound Traffic
- タイプ: SNMPエージェント
- キー: `net.if.in[ifHCInOctets.1]` (最後の数字はポートのIndex)
- SNMP OID: `1.3.6.1.2.1.31.1.1.1.6.1` (※これがifHCInOctetsのOID)
- データ型: 数値 (整数)
- 単位: `bps`
- 保存前処理 (Preprocessing):
1. 名前: `1秒あたりの変更` (Change per second)
2. 名前: `カスタム乗算` (Custom multiplier) -> 値: `8`
(※Byte単位をbit単位に変換するため8を掛けます)
—
6. 先輩エンジニアからの「極限のノウハウ」アドバイス
設定、お疲れ様でした!最後に、現場で「差がつく」運用ノウハウを2つプレゼントします。
ノイズ(誤検知)を消し去る「トリガーフラッピング防止」
リンクアップ/ダウンの監視で、ケーブルの接触不良や瞬断が起きると、アラートメールが何百通も飛んできて運用者が疲弊します(アラート疲れ)。
これを防ぐために、トリガーには `周期的なデータが継続して閾値を超えたか` を評価するロジック(`max()` や `min()`)を組み込みましょう。
! 1回でもダウンしたら即アラートではなく、過去3回の計測がすべてダウン(2)の場合に発火
min(/Core-Switch-01/net.if.status[ifOperStatus.1], #3) = 2
公式テンプレート(LLD: 低レベルディスカバリ)を活用しよう
今回は仕組みを深く理解するために手動設定を解説しましたが、ポートが48個あるスイッチで1つずつアイテムを作るのは大変ですよね。
Zabbixには `Cisco IOS by SNMP` や `Generic Network Devices by SNMP` といった高性能な公式テンプレートが標準で用意されています。これらをホストに適用するだけで、全ポートのトラフィック、CPU使用率、メモリ、ファン状態が自動的(LLD)にSNMPv3で収集されます。
「仕組みは手動設定で完璧に理解し、本番運用はテンプレートでスマートに自動化する」——これが最高峰のエンジニアへの近道です。
—
まとめ
今日の学びを振り返ってみましょう。
1. SNMPv2cは危険。暗号化された SNMPv3 (`authPriv`) が現代の標準。
2. CLIからの `snmpget` で、Zabbix設定前に「HelloWorld(疎通)」を確認する。
3. パスワード類は マクロ で安全&スマートに一元管理する。
4. トラフィック監視は必ず 64bitカウンタ (`ifHCIn`) と 1秒あたりの変更 (8) を使う。
これで、あなたの監視サーバーは単なる「死活チェックツール」から、「安全かつ正確にネットワークの鼓動を刻む最強の砦」へと進化しました。
1つひとつ設定を紐解いていけば、決して難しいことはありません。ぜひ、社内の検証環境や実機でコマンドを叩いてみてくださいね。あなたのオブザーバビリティの旅を、心から応援しています!