「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は標準設定で干渉しにくいが確認手順は押さえておく
・タイムアウトになったらポート疎通・コミュニティ名を順に確認する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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.
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"
コミュニティ名に
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))
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 の場合 $ 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. 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.
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 ← スペルミスの例
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 Master Pro Seminar 詳細・申込はこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:autofsでNFS共有を自動マウントする方法|auto.masterと間接マップの設定からトラブルシュートまで
- この記事の属するカテゴリ:Linuxサーバー構築(Rocky Linux/RHEL9)へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます