Linux
 Computer >> コンピューター >  >> システム >> Linux

RHEL/CentOS/FedoraにSNMPをインストールして設定する方法【SNMPv3対応】

SNMP(Simple Network Management Protocol)は、サーバーやネットワーク機器、プリンターなどのIPデバイスの現在の状態に関する情報を取得するために使われるプロトコルです。SNMP経由では、CPU使用率、プロセス数、サービスの状態など、さまざまなメトリクスを取得できます。SNMPの最大のメリットは、ほぼすべてのデバイスでサポートされており、監視システム専用のエージェントを別途インストールする必要がない点です。本記事では、CentOS、RHEL、Fedoraが稼働するLinuxホストにSNMPエージェント(およびSNMPv3)をインストールして設定する手順を解説します。

LinuxへのSNMPエージェントと診断ツールのインストール

SNMPパッケージをインストールする前に、dnf(yum)を使ってサーバーに最新のアップデートを適用しておきましょう。

# dnf update -y

続いて、ベースリポジトリからSNMPエージェントと追加ツールをインストールします。

# dnf install net-snmp net-snmp-utils -y

LinuxでSNMPエージェントを有効化・設定する方法

SNMPの設定作業に入る前に、元の設定ファイルのバックアップコピーを作成しておきます。

# mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig

次に、SNMPエージェントの設定ファイルを編集します。

# nano /etc/snmp/snmpd.conf

以下の行を追加してください。

rocommunity public
syslocation GE-DC2
syscontact gedc2-admins@example.com

これらはSNMPの3つの基本パラメータです。Net-SNMPエージェントには他にも多数の設定オプションがありますが、ここでは最低限必要な項目のみを紹介します。

ファイルを保存したら(設置場所には実際の場所、連絡先には有効なメールアドレスを入力することをおすすめします)、snmpdサービスを有効化して起動します。

# systemctl enable snmpd.service
# systemctl start snmpd

サービスが正常に実行されていることを確認しましょう。

# systemctl status snmpd

サーバーでファイアウォールを運用している場合は、TCP/UDPポート161と162への接続を許可する必要があります。firewalldでSNMP用ポートを開放するには、以下のコマンドを実行します。

# firewall-cmd --zone=public --add-port=161/udp --permanent
# firewall-cmd --zone=public --add-port=161/tcp --permanent
# firewall-cmd --zone=public --add-port=162/udp --permanent
# firewall-cmd --zone=public --add-port=162/tcp --permanent
# firewall-cmd --reload

snmpwalkを使ってSNMPエージェントをポーリングする

snmpwalkツールを使えば、SNMPエージェントの動作を確認できます。SNMPv2プロトコルでローカルのサービスをテストするには、次のコマンドを実行します。

# snmpwalk -v 2c -c public -O e 127.0.0.1

SNMPが正しく設定されていれば、エージェントから一連のSNMPデータが返されます。

なお、設定ファイルを編集してテストコマンドを実行した際に、以下のようなエラーが発生するケースがあります。

Timeout: No Response from localhost

この問題は、設定ファイルを一度空にして、上記で紹介した行だけを追加し直すことで解決できました。独自の設定を追加する場合は、サービス自体は問題なく起動していても実際には動作していないことがあるため、設定内容を必ず入念に見直してください。

次のコマンドでも、systemサブツリーに限定してローカルのサーバー情報を照会できます。

# snmpwalk -v2c -c public localhost system

SNMPv2-MIB::sysDescr.0 = STRING: Linux server1.test.com 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (106564) 0:17:45.64
SNMPv2-MIB::sysContact.0 = STRING: gedc2-admins@example.com
SNMPv2-MIB::sysName.0 = STRING: server1.test.com
SNMPv2-MIB::sysLocation.0 = STRING: GE-DC2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (0) 0:00:00.00

さらに、SNMPエージェントにリモートからアクセスできることも確認しておきましょう。別のサーバーから次のコマンドを実行します(事前にsnmpツールをインストールしておいてください)。

# snmpwalk -v2c -c public 192.168.21.205 system

ご覧のとおり、リモートサーバーがSNMP経由で対象サーバーから情報を取得できました。これで、ZabbixやCactiなど、任意のSNMP対応監視システムにこのサーバーを登録できるようになります。

Linux CentOS/RHEL/FedoraでSNMPv3を設定する

記事の前半では、SNMP v1/v2を使用するエージェントの設定方法を紹介しました。SNMPv3は、認証と暗号化をサポートする、より新しいセキュアなプロトコルバージョンです。SNMPv3を設定するには、パスワード付きのユーザーを作成し、暗号化パスワード、アクセス権限、暗号化アルゴリズム(MD5またはSHA)を指定します。

SNMPv3用のユーザーを作成する前に、まずsnmpdデーモンを停止します。

# systemctl stop snmpd

続いて、ユーザーを作成します。

# net-snmp-create-v3-user -ro -A o2ps2w0dD -a SHA -X r30svV33 -x AES snmpuser

net-snmp-create-v3-userコマンドの構文は以下のとおりです。

net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA] [-X privpass] [-x DES|AES] [username]

  • -ro:ユーザーに読み取り専用権限を付与するオプション
  • -A(authpass):認証用パスワード
  • -X(privpass):暗号化用パスフレーズ(秘密鍵)

コマンドを実行すると、指定したパスワードとキーを持つユーザーが自動的に作成されます。

その後、サービスを再び起動します。

# systemctl start snmpd

最後に、snmpwalkでSNMPエージェントをポーリングして動作を確認しましょう。SNMPv3で照会する場合は、ユーザー名、認証パスワード、暗号化キーをすべて指定する必要がある点に注意してください。

# snmpwalk -v3 -a SHA -A o2ps2w0dD -x AES -X r30svV33 -l authPriv -u snmpuser 192.168.21.205 | head

  1. CentOS/RHELでBashの自動補完(タブ補完)をインストールして有効化する方法

    Bash(Bourne Again Shell)は、間違いなく最も広く使われているLinuxシェルです。多くのLinuxディストリビューションでデフォルトシェルとして採用されているのも納得でしょう。Bashの魅力的な機能の一つが、組み込みの「自動補完(オートコンプリート)」機能です。 この機能は「TAB補完」とも呼ばれ、コマンドの入力を簡単に完成させることができます。コマンドの一部を入力した状態で[Tab]キーを押すと、残りのコマンドや引数が自動的に補完されます。候補が複数ある場合は、すべての候補が一覧表示されます。 Bashだけでなく、近年のほぼすべてのモダンなLinuxシェルにはコマンド補

  2. Windows 10にXAMPPをインストールして設定する方法【初心者向け完全ガイド】

    Windows 10へのXAMPPのインストールと設定:PHPでWebサイトを開発する際には、PHPの開発環境を提供し、バックエンドとフロントエンドを接続するためのツールが必要になります。ローカル環境でWebサイトをテストできるソフトウェアはXAMPPやMongoDBなど多数存在しますが、それぞれに長所と短所があります。このガイドでは、Windows 10向けのXAMPPに焦点を当て、インストールから設定までの手順を詳しく解説します。 XAMPPとは? XAMPPは、Apache Friendsによって開発されたオープンソースのクロスプラットフォーム対応Webサーバーです。PHPを使ってWeb