LinuxサーバーにSNMPエージェントを設定する方法|snmpd.confのコミュニティ設定からsnmpwalkで疎通確認まで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Linuxサーバー構築(Rocky Linux/RHEL9) > LinuxサーバーにSNMPエージェントを設定する方法|snmpd.confのコミュニティ設定からsnmpwalkで疎通確認まで
「ZabbixにLinuxサーバーを登録したのにSNMPで疎通確認がタイムアウトになる」
「snmpdを起動したはずなのに、リモートからsnmpwalkが通らない」

SNMPの設定は「パッケージを入れて起動するだけ」と思われがちですが、実際にはsnmpd.confのコミュニティ設定、firewalldのUDPポート開放、SELinuxのポリシーが複合的に絡んでいます。どこか一つ抜けると繋がりません。

この記事では、RHEL 9.4 / Ubuntu 24.04 LTSを動作確認済み環境として、net-snmpのインストールからsnmpd.confの設定、firewall・SELinuxの対処、snmpwalkによる疎通確認まで一通りの手順を解説します。
後半にはタイムアウトが直らない場合のトラブルシュートも収録しています。

この記事のポイント

・snmpd.confのrocommunityでIPを制限するのが最初のステップ
・firewalldはサービス名「snmp」でUDP 161番をまとめて開放できる
・RHEL9系のSELinuxは標準設定で干渉しにくいが確認手順は押さえておく
・タイムアウトになったらポート疎通・コミュニティ名を順に確認する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

SNMPとnet-snmpの役割を先に把握する

SNMP(Simple Network Management Protocol)は、ネットワーク機器やサーバーを集中監視するために使われるプロトコルです。
ZabbixやNagiosなどの監視サーバーはSNMPでサーバーに問い合わせ、CPU使用率・メモリ空き・ディスク残量・インターフェースの転送量などを定期的に収集します。

Linuxではnet-snmpというパッケージがSNMPエージェントを担当します。エージェントとは「問い合わせを受け付けてデータを返すデーモン」のことで、snmpdというプロセス名で動きます。

SNMPのバージョンについて整理しておきます。
・SNMPv1 / v2c:コミュニティ名(パスワード相当の文字列)のみで認証する。暗号化なし。社内ネットワーク専用
・SNMPv3:ユーザー名+認証パスワード+暗号化パスワードの3要素。インターネット経由や厳格なセキュリティ環境向け

この記事では実務で最もよく使われるSNMPv2cを基本として設定します。

net-snmpのインストール

1. RHEL 9 / AlmaLinux 9 へのインストール

snmpdデーモンはnet-snmp、snmpwalkなどのクライアントツールはnet-snmp-utilsというパッケージに入っています。2つセットでインストールします。

# RHEL9 / AlmaLinux9 でのインストール $ sudo dnf install -y net-snmp net-snmp-utils Last metadata expiration check: 0:08:12 ago on Mon Oct 12 09:20:00 2026. Dependencies resolved. ======================================================================= Package Arch Version Repo Size ======================================================================= Installing: net-snmp x86_64 1:5.9.3-8.el9_4 baseos 332 k net-snmp-libs x86_64 1:5.9.3-8.el9_4 baseos 780 k net-snmp-utils x86_64 1:5.9.3-8.el9_4 baseos 208 k Installing dependencies: lm_sensors-libs x86_64 3.6.0-10.el9 baseos 42 k Complete!

2. Ubuntu 24.04 LTS へのインストール

Ubuntuではsnmpd(デーモン)とsnmp(クライアントツール)に分かれています。

# Ubuntu 24.04 LTS でのインストール $ sudo apt update && sudo apt install -y snmpd snmp Reading package lists... Done Building dependency tree... Done The following NEW packages will be installed: libsnmp40t64 snmp snmpd After this operation, 9,752 kB of disk space will be used. Setting up snmpd (5.9.3+dfsg-2ubuntu4) ... Created symlink /etc/systemd/system/multi-user.target.wants/snmpd.service -> /lib/systemd/system/snmpd.service.

Ubuntuはインストール時にsnmpdサービスが自動起動します。RHEL系は次のステップで手動起動します。

snmpd.confでアクセス元を制限する

snmpdの設定ファイルは/etc/snmp/snmpd.confです。デフォルト設定のままでは不特定のホストから読み取りができる状態になっているため、必ずコミュニティ名とアクセス元IPを制限してから起動してください。

1. コミュニティ名とアクセス元の設定

$ sudo vi /etc/snmp/snmpd.conf

変更・追加するのは以下の箇所です。

# --- /etc/snmp/snmpd.conf の設定例 --- # デフォルトのrocommunity行をコメントアウトまたは削除して書き直す # rocommunity public default ← この行があれば先頭に # を付けて無効化 # コミュニティ名と監視元サブネットを指定 # 書式: rocommunity コミュニティ名 アクセス許可IP rocommunity mon_community 192.168.10.0/24 # ローカルホストからの確認も許可しておく rocommunity mon_community 127.0.0.1 # サーバーの管理情報(監視ツールのホスト一覧に表示される) syscontact admin@example.com syslocation "Tokyo-DC-Rack12"

rocommunityの第1引数がコミュニティ名、第2引数がアクセスを許可するIPまたはサブネットです。
コミュニティ名にpublicをそのまま使うのは避けましょう。デフォルト値はポートスキャンで最初に試される文字列です。

2. systemdでsnmpdを起動・自動起動に設定する

# 起動と自動起動をまとめて設定 $ sudo systemctl enable --now snmpd Created symlink /etc/systemd/system/multi-user.target.wants/snmpd.service -> /usr/lib/systemd/system/snmpd.service. # 起動状態の確認 $ sudo 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 2026-10-12 09:30:15 JST; 22s ago Main PID: 2847 (snmpd) Tasks: 1 (limit: 23034) Memory: 3.6M CPU: 28ms CGroup: /system.slice/snmpd.service └─2847 /usr/sbin/snmpd -LS0-6d -f

Active: active (running)になっていれば正常です。
snmpdがUDP 161番でリスニングしているかも確認してください(Linux ポート確認の全コマンド)。

$ ss -unlp | grep 161 UNCONN 0 0 0.0.0.0:161 0.0.0.0:* users:(("snmpd",pid=2847,fd=6)) UNCONN 0 0 [::]:161 [::]:* users:(("snmpd",pid=2847,fd=7))

IPv4・IPv6の両方で161番がリスニング状態になっていれば問題ありません。

firewalldでUDP 161番ポートを開放する(RHEL9系)

RHEL9 / AlmaLinux9ではfirewalldが有効なため、SNMPのUDPポートを明示的に開放する必要があります。
snmpというサービス名がfirewalldに定義済みのため、ポート番号を直接指定せずに設定できます。

# snmpサービスを永続的に許可 $ sudo firewall-cmd --add-service=snmp --permanent success # 設定を反映 $ sudo firewall-cmd --reload success # 確認:snmpが一覧に含まれていれば成功 $ sudo firewall-cmd --list-services cockpit dhcpv6-client snmp ssh

Ubuntuでufwを使っている場合はポート番号を直接指定します。

# Ubuntu / ufw の場合 $ sudo ufw allow 161/udp Rule added Rule added (v6) $ sudo ufw status | grep 161 161/udp ALLOW Anywhere 161/udp (v6) ALLOW Anywhere (v6)

SELinuxが有効な環境での確認(RHEL9系のみ)

RHEL9 / AlmaLinux9ではSELinuxがデフォルトでEnforcingです。
net-snmpはRHELの推奨パッケージのため、標準的な設定であればSELinuxが干渉するケースは少ないですが、念のため確認しておきます。

# snmpd関連のSELinuxブール値を確認 $ sudo getsebool -a | grep snmp snmpd_disable_trans --> off snmpd_run_as_root --> off snmpd_unified --> on snmpd_use_namespaces --> off

snmpd_unified --> onはRHEL9のデフォルト値で、snmpdが参照できる情報の範囲を制御するものです。変更しなくて問題ありません。

snmpd起動後にAVCエラーが出る場合(ausearch -c snmpd --raw | audit2allow -M snmpd_localで確認)は、semoduleでカスタムポリシーを追加する方法もありますが、標準構成では発生しません。

snmpwalkで疎通確認する手順

1. ローカルで動作確認する

監視サーバーから確認する前に、まず対象サーバー自身でローカル疎通を確認します。

# ローカルで system グループの情報を取得 $ snmpwalk -v2c -c mon_community localhost system SNMPv2-MIB::sysDescr.0 = STRING: Linux web01.example.com 5.14.0-427.13.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 28 01:02:01 EDT 2026 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (125800) 0:20:58.00 SNMPv2-MIB::sysContact.0 = STRING: admin@example.com SNMPv2-MIB::sysName.0 = STRING: web01.example.com SNMPv2-MIB::sysLocation.0 = STRING: Tokyo-DC-Rack12 SNMPv2-MIB::sysServices.0 = INTEGER: 76

sysDescrにLinuxカーネルバージョン、sysNameにホスト名が返ってくれば成功です。
sysContactとsysLocationには、snmpd.confで設定した値が反映されます。

2. 監視サーバーからリモートで確認する

次に、ZabbixなどがインストールされたPCから対象サーバーへ疎通確認します。
Linuxサーバーのネットワーク管理スキルをさらに深めたい方は、Linux Master Pro Seminarのカリキュラムも参考になります。

# 監視サーバー(192.168.10.50)から対象サーバー(192.168.10.101)へ疎通確認 $ snmpwalk -v2c -c mon_community 192.168.10.101 sysDescr.0 SNMPv2-MIB::sysDescr.0 = STRING: Linux web01.example.com 5.14.0-427.13.1.el9_4.x86_64 ...

この1行が返れば、ZabbixやNagiosのホスト登録でSNMP項目を追加できます。

タイムアウトになる場合のトラブルシュート

1. firewalldのルールを確認する

「ローカルは通るがリモートが通らない」場合は、ほぼfirewalldの設定漏れです。

# 許可サービスの一覧を確認 $ sudo firewall-cmd --list-services cockpit dhcpv6-client ssh ← snmp が無い場合は開放し忘れ # 追加して再読み込み $ sudo firewall-cmd --add-service=snmp --permanent && sudo firewall-cmd --reload

2. コミュニティ名の不一致

コミュニティ名が一致しない場合はエラーメッセージなしでTimeout: No Responseが返ります。

# 誤ったコミュニティ名で試した場合 $ snmpwalk -v2c -c wrongname 192.168.10.101 sysDescr.0 Timeout: No Response from 192.168.10.101.

監視ツール(Zabbix等)側のコミュニティ設定と、snmpd.confのrocommunityに設定した文字列が一字一句一致しているかを確認します。全角文字や末尾のスペースが混入するケースが実務では多いです。

3. snmpdが起動していない・設定ファイルに構文エラーがある

# プロセスの状態確認 $ sudo systemctl status snmpd * snmpd.service - Simple Network Management Protocol (SNMP) Daemon Active: inactive (dead) ← 停止中の場合 # journalctlでエラー内容を確認する $ sudo journalctl -u snmpd -n 30 Oct 12 09:40:01 web01 snmpd[3012]: /etc/snmp/snmpd.conf: line 18: Unknown token: rocomunity ← スペルミスの例

snmpd.confにスペルミス・全角スペース・不正な文字が含まれると起動に失敗します。journalctl -u snmpdで行番号が指摘されるので、該当箇所を修正してから再起動します。

4. アクセス元IPがrocommunityの制限外にある

監視サーバーのIPがsnmpd.confで許可したサブネットの外にある場合、snmpd側でパケットを黙って捨てるため、クライアントからは「Timeout」に見えます。

# snmpd.conf での設定例 # 監視サーバーが 10.0.0.50 の場合: rocommunity mon_community 10.0.0.0/24 # 変更後はsnmpdを再起動して設定を反映 $ sudo systemctl restart snmpd

本記事のまとめ

やりたいこと コマンド・ファイル
net-snmpをインストール(RHEL9) dnf install -y net-snmp net-snmp-utils
net-snmpをインストール(Ubuntu 24.04) apt install -y snmpd snmp
コミュニティ名とアクセス元を設定 /etc/snmp/snmpd.conf の rocommunity 行
snmpdを起動・自動起動に設定 systemctl enable --now snmpd
UDP 161番を開放(RHEL9) firewall-cmd --add-service=snmp --permanent
UDP 161番を開放(Ubuntu) ufw allow 161/udp
ローカルで疎通確認 snmpwalk -v2c -c コミュニティ名 localhost system
リモートから疎通確認 snmpwalk -v2c -c コミュニティ名 IPアドレス sysDescr.0
ポートリスニング確認 ss -unlp | grep 161
エラーログ確認 journalctl -u snmpd -n 30
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、SNMPによる監視設定からfirewalld・SELinuxの設定管理まで、実機でハンズオン体験できるセミナーを開催しています。
>> Linux Master Pro Seminar 詳細・申込はこちら

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。