技術部ネットワーク課の二之宮です。
はじめに
サービス運用の効率化を目的とした監視ソフトの入れ替えを検討するにあたり、Zabbix を試すことになりました。
その中で、SNMPトラップの受信テストを行いました。
これまで使用してきた商用ソフトとは異なり、Zabbix では、SNMPトラップを受信し、Zabbix に渡す仕組みを、別で準備する必要があります。
まずは、CentOS で SNMPトラップを受信する最低限の環境を構築し、テストしました。
が、外部からの SNMPトラップを受信できませんでした。
やったこと
環境
項目 | 内容 |
---|---|
ディストリビューション | CentOS Linux release 7.7.1908 (Core) |
snmptrapd | Version 5.7.2 |
必要なパッケージをインストール
# yum install net-snmp-perl perl-Sys-Syslog
サービスを起動
# systemctl start snmptrapd
ローカルからの SNMPトラップ受信テスト
ローカルから SNMPトラップを送信
# snmptrap -v 2c -c public 127.0.0.1 '' .1.3.6.1.4.1.8072.9999 .1.3.6.1.4.1.8072.9999 s 'TEST'
SNMPトラップの受信を確認
# tail -f /var/log/messages Oct 20 12:20:48 dev20 snmptrapd[16484]: 2020-10-20 12:20:48 localhost [UDP: [127.0.0.1]:47069->[127.0.0.1]:162]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (2996878906) 346 days, 20:39:49.06#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.4.1.8072.9999#011.1.3.6.1.4.1.8072.9999 = STRING: "TEST"
ローカルからの SNMPトラップは受信できました。
外部からの SNMPトラップ受信テスト
外部から SNMPトラップを送信
# snmptrap -v 2c -c public 192.168.174.20 '' .1.3.6.1.4.1.8072.9999 .1.3.6.1.4.1.8072.9999 s 'TEST'
SNMPトラップの受信を確認
# tail -f /var/log/messages ≪ログ無し≫
外部からの SNMPトラップは受信できていません。
やってなかったこと
TCP Wrapper で、全ての接続を不許可にしている状態で、SNMPトラップ送信元からの snmptrapd へのアクセスを許可していませんでした。
/etc/hosts.deny の設定確認
# cat /etc/hosts.deny ALL: ALL
全てのホストからの接続を許可していない状態。
snmptrapd へのアクセスを許可
トラップ送信元からの snmptrapd へのアクセスを許可する。
# vi /etc/hosts.allow
追加した設定
snmptrapd: 192.168.182.144
外部からの Trap 受信テスト
外部サーバーから SNMPトラップを送信
# snmptrap -v 2c -c public 192.168.174.20 '' .1.3.6.1.4.1.8072.9999 .1.3.6.1.4.1.8072.9999 s 'TEST'
SNMPトラップの受信を確認
# tail -f /var/log/messages Oct 20 12:22:20 dev20 snmptrapd[16484]: 2020-10-20 12:22:20 tes144.synapse.ne.jp [UDP: [192.168.182.144]:52376->[192.168.174.20]:162]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (2471855047) 286 days, 2:15:50.47#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.4.1.8072.9999#011.1.3.6.1.4.1.8072.9999 = STRING: "TEST"
外部からの SNMPトラップを受信できました!
おわりに
気づけば簡単なことなのですが、忘れがちなので、気を付けたいところです。