LinuxでのSNMP設定:古参ながらも現役バリバリなシステム監視の極意

Network tutorial - IT technology blog
Network tutorial - IT technology blog

SNMP – なぜ「レガシー」な技術がいまだに監視の世界を支配しているのか?

gRPCやNetconfといった新しい技術が次々と登場する中で、SNMP (Simple Network Management Protocol) は依然として揺るぎない存在です。Ciscoのスイッチ、Juniper of ルーター、Dell PowerEdgeサーバーに至るまで、すべてがSNMPを共通言語として採用しています。もし500台のサーバーと50台のコアスイッチを管理しているなら、一台ずつにエージェントをインストールするのは不可能です。そんな時、SNMPを使えばZabbixやLibreNMSからシステム全体をわずか数秒で「診断」できます。

以前、毎日午前10時ちょうどに発生する断続的なネットワーク損失(intermittent loss)という、非常に厄介なデバッグに直面したことがあります。1分ごとの10Gbps帯域幅の履歴を記録したSNMPデータがなければ、原因特定に一週間はかかってたでしょう。SNMP経由で送られてくるCPUグラフとポートエラー(パケット破棄)のおかげで、システムを苦しめていたループバックをわずか20分で発見できました。

SNMP v2cかv3か:後悔する前に正しい選択を

コマンドを入力する前に、適切なバージョンを選択しましょう。間違った選択をして後で最初からやり直すことにならないようにしてください。

  • SNMP v2c: メリットはセットアップが非常に速く、30秒ほどで完了することです。「コミュニティ名(Community String)」を合言葉として使用します。ただし、この合言葉は平文(クリアテキスト)で送信されます。悪意のある者にパケットをスニッフィングされると、システムの全パラメータを明け渡すことになります。
  • SNMP v3: セキュリティにおける黄金基準です。ユーザー認証(Authentication)とデータ暗号化(Encryption)の両方をサポートしています。設定はやや煩雑ですが、その価値は十分にあります。

エンジニアへのヒント:隔離された内部LANでは、手間を省くためにv2cを使用しても良いでしょう。しかし、インターネットやパブリッククラウド経由でサーバーを監視する場合は、盗み見を防ぐためにv3の使用が必須です。

LinuxへのNet-SNMPの導入:ステップバイステップ解説

このガイドはUbuntuを使用して進めます。RHEL/CentOSをお使いの場合は、aptdnfに読み替えてください。

ステップ 1: ツールキットのインストール

# エージェント (snmpd) とテスト用のクライアント一式をインストール
sudo apt update && sudo apt install snmpd snmp libsnmp-dev -y

インストール後、次のコマンドでサービスが「生存」しているか確認します:systemctl status snmpd

ステップ 2: v2cの設定 – 迅速かつスマートに

設定ファイルは /etc/snmp/snmpd.conf にあります。変更を加える前に、必ず元のファイルをバックアップしてください。

sudo mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
sudo nano /etc/snmp/snmpd.conf

以下の最小限の設定を貼り付けます:

# 全IPに対してUDPポート161でリスンする
agentAddress  udp:161

# 'itfromzero_secret' を独自の文字列に変更してください
rocommunity itfromzero_secret default

# 識別情報
syslocation VietNam_DataCenter_Rack01
syscontact [email protected]

変更を適用するために再起動します:sudo systemctl restart snmpd

ステップ 3: v3の設定 – 最大限のセキュリティ

v3を設定する際は、構文エラーを避けるために設定ファイルを直接編集せず、ツールを使用しましょう。

# ユーザーを作成する前にサービスを停止する必要があります
sudo systemctl stop snmpd

# ユーザー 'monitoring_user' を作成、SHAアルゴリズムとAES暗号化を使用
sudo net-snmp-create-v3-user -a SHA -A AuthPass123 -x AES -X PrivPass123 monitoring_user

sudo systemctl start snmpd

実践的なデバッグ:データが届いているか確認する

設定後にテストを行わないのは大きな間違いです。snmpwalk コマンドを使ってサーバーに「問い合わせ」をしてみましょう。

v2cの場合: snmpwalk -v 2c -c itfromzero_secret localhost system

v3の場合: snmpwalk -v 3 -u monitoring_user -l authPriv -a SHA -A AuthPass123 -x AES -X PrivPass123 localhost system

画面に稼働時間(uptime)やカーネルバージョンなどがずらりと表示されれば、成功です。

トラブルを避けるための「痛い目を見て学んだ」経験則

ファイアウォールが最初の障壁

設定は正しいのにZabbixが「Down」と報告することがよくあります。原因の90%は UDP 161 ポートの開放忘れです。ufwiptables をよく確認してください。

sudo ufw allow 161/udp

OIDとMIBの秘密を解明する

SNMPは .1.3.6.1.2.1.1.3.0 (これはuptimeです)のような数字の羅列を返します。これらの数字を読みやすい文字に変換するには、MIBダウンローダーをインストールする必要があります。

sudo apt install snmp-mibs-downloader && sudo download-mibs

デフォルトのコミュニティ名は絶対に使用しない

publicprivate というキーワードは、自動IPスキャンツールにとって絶好の餌食です。12文字以上の長い文字列に変更し、監視サーバーのIPのみに制限してください。default の代わりに、設定ファイルの snmpd.conf に監視サーバーの正確なIPを入力してください。

SNMPをマスターすれば、システムの「血流」を掌握したも同然です。次のステップとして、これらの指標をGrafanaに取り込み、美しいダッシュボードを作成しましょう。v3について不明な点があれば、コメント欄でお知らせください。すぐにお答えします!

Share: