snmp の練習
本エントリについて
Dynagen、Dynamips、rsyslogd を使って、syslog 設定を練習します。
Dynagen、Dynamips の利用環境はすでに整っているものとします。
環境について
監視サーバから r1 に対してポーリングします。
また r1 から監視サーバに向けてトラップをあげます。
[監視サーバ] .1 (10.2.0.0/24) .254 f0/0 [r1]
[[ETHSW sw1]]
1 = access 1
3 = access 1 nio_tap:tap0
[[ROUTER r1]]
model = 3725
f0/0 = sw1 1
関連パッケージインストール
監視サーバ側で、必要となるパッケージをインストールします。
snmpポーリングのテストのため snmp を、snmptrap の受信のテストのため snmptrapd を利用します。
$ sudo apt install -y snmp snmptrapd
SNMPv1
旧来のコミュニティ名による制限だけのものです。
SNMPv2c については(いまのところ)割愛します。
コミュニティ名設定
Cisco デバイス側でコミュニティ名を設定します。
r1(config)#snmp-server community cisco ro
監視サーバ側から snmpget で、設定したコミュニティ名を用いてポーリングしてみます。
$ snmpget -v 1 10.2.0.254 -c cisco 1.3.6.1.2.1.2.1.0
iso.3.6.1.2.1.2.1.0 = INTEGER: 3
$ snmpget -v 1 10.2.0.254 -c cisco 1.3.6.1.2.1.2.2.1.2.1
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "FastEthernet0/0"
同様に snmpwalk でポーリングしてみます。
$ snmpwalk -v 1 10.2.0.254 -c cisco 1.3.6.1.2.1.2.2.1.10
iso.3.6.1.2.1.2.2.1.10.1 = Counter32: 1609
iso.3.6.1.2.1.2.2.1.10.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.4 = Counter32: 0
$ snmpwalk -v 1 10.2.0.254 -c cisco 1.3.6.1.2.1.2.2.1.16
iso.3.6.1.2.1.2.2.1.16.1 = Counter32: 4091
iso.3.6.1.2.1.2.2.1.16.2 = Counter32: 2303
iso.3.6.1.2.1.2.2.1.16.4 = Counter32: 0
snmptrap
監視サーバ側でトラップを受信するため、snmptrapd の設定に、コミュニティ名を追加します。
設定変更したら、snmptrapd デーモンを再起動します。
$ sudo cp -pi /etc/snmp/snmptrapd.conf{,.000}
$ sudo vi /etc/snmp/snmptrapd.conf
$ diff -u /etc/snmp/snmptrapd.conf{,.000}
@@ -16,7 +16,6 @@
#
#authCommunity log,execute,net private
#authCommunity log,execute,net public
-authCommunity log cisco
#
## send mail when get any events
#traphandle default /usr/bin/traptoemail -s smtp.example.org foobar@example.org
$ sudo systemctl start snmptrapd.service
$ tail -f /var/log/syslog
Cisco デバイス側で snmptrap を送信する設定をします。
r1(config)#snmp-server host 10.2.0.1 traps version 1 cisco
r1(config)#snmp-server enable traps
% Cannot enable both sham-link state-change interface traps.
% New sham link interface trap not enabled.
設定時にメッセージがあがりますが、ここでは無視します。
Cisco デバイス側でトラップを上げてみます。
r1(config)#int fa0/1
r1(config-if)#shut
r1(config-if)#
Dec 24 05:11:29.139 JST: %LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down
Dec 24 05:11:30.139 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
監視サーバのシスログにトラップメッセージが上がることを確認します。
$ tail -f /var/log/syslog | grep snmptrapd
Dec 24 05:11:27 ip-10-0-0-73 snmptrapd[1828]: 2022-12-24 05:11:27 ip-10-2-0-254.ap-northeast-1.compute.internal [10.2.0.254] (via UDP: [10.2.0.254]:61086->[10.2.0.1]:162) TRAP, SNMP v1, community cisco#012#011iso.3.6.1.2.1.14.16.2 Enterprise Specific Trap (16) Uptime: 0:45:10.72#012#011iso.3.6.1.2.1.14.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.2 = INTEGER: 0#011iso.3.6.1.2.1.14.7.1.12 = INTEGER: 7
Dec 24 05:11:27 ip-10-0-0-73 snmptrapd[1828]: 2022-12-24 05:11:27 ip-10-2-0-254.ap-northeast-1.compute.internal [10.2.0.254] (via UDP: [10.2.0.254]:61086->[10.2.0.1]:162) TRAP, SNMP v1, community cisco#012#011iso.3.6.1.2.1.14.16.2 Enterprise Specific Trap (16) Uptime: 0:45:10.72#012#011iso.3.6.1.2.1.14.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.2 = INTEGER: 0#011iso.3.6.1.2.1.14.7.1.12 = INTEGER: 1
Dec 24 05:11:27 ip-10-0-0-73 snmptrapd[1828]: 2022-12-24 05:11:27 ip-10-2-0-254.ap-northeast-1.compute.internal [10.2.0.254] (via UDP: [10.2.0.254]:61086->[10.2.0.1]:162) TRAP, SNMP v1, community cisco#012#011iso.3.6.1.2.1.14.16.2 Enterprise Specific Trap (12) Uptime: 0:45:11.22#012#011iso.3.6.1.2.1.14.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.4.1.1 = IpAddress: 0.0.0.0#011iso.3.6.1.2.1.14.4.1.2 = INTEGER: 1#011iso.3.6.1.2.1.14.4.1.3 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.4.1.4 = IpAddress: 10.2.1.253
Dec 24 05:11:30 ip-10-0-0-73 snmptrapd[1828]: 2022-12-24 05:11:30 ip-10-2-0-254.ap-northeast-1.compute.internal [10.2.0.254] (via UDP: [10.2.0.254]:61086->[10.2.0.1]:162) TRAP, SNMP v1, community cisco#012#011iso.3.6.1.6.3.1.1.5 Link Down Trap (0) Uptime: 0:45:13.69#012#011iso.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2#011iso.3.6.1.2.1.2.2.1.2.2 = STRING: "FastEthernet0/1"#011iso.3.6.1.2.1.2.2.1.3.2 = INTEGER: 6#011iso.3.6.1.4.1.9.2.2.1.1.20.2 = STRING: "administratively down"
SNMPv3
認証と暗号化がサポートされ、セキュリティが向上しています。
noAuthNoPriv、authNoPriv、authPriv の3つのセキュリティレベルがあります。
noAuthNoPriv
ユーザ名を利用し、暗号化は利用しません。
r1(config)#snmp-server group manager v3 noauth
r1(config)#snmp-server user ccna manager v3
$ snmpget -v3 -l noAuthNoPriv -u ccna 10.2.0.254 1.3.6.1.2.1.2.2.1.2.1
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "FastEthernet0/0"
authNoPriv
ユーザ名とMD5による認証を利用しますが、暗号化は利用しません。
r1(config)#snmp-server group manager v3 auth
r1(config)#snmp-server user ccna manager v3 auth md5 ciscocisco
$ snmpget -v3 -l authNoPriv -u ccna -a md5 -A ciscocisco 10.2.0.254 1.3.6.1.2.1.2.2.1.2.1
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "FastEthernet0/0"
authPriv
ユーザ名とMD5による認証と、暗号化を利用します。
r1(config)#snmp-server group manager v3 priv
r1(config)#snmp-server user ccna manager v3 auth md5 ciscocisco priv des secretsecret
$ snmpget -v3 -l authPriv -u ccna -a md5 -A ciscocisco -x des -X secretsecret 10.2.0.254 1.3.6.1.2.1.2.2.1.2.1
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "FastEthernet0/0"
trap
ここでは authPriv レベルでトラップ送信する設定を実施します。
r1(config)#snmp-server group manager v3 priv
r1(config)#snmp-server user ccna manager v3 auth md5 ciscocisco priv des secretsecret
r1(config)#snmp-server host 10.2.0.1 version 3 priv ccna
r1(config)#snmp-server enable traps
% Cannot enable both sham-link state-change interface traps.
% New sham link interface trap not enabled.
監視サーバ側で必要となる engineID の情報を表示します。
r1(config)#do show snmp engineID
Local SNMP engineID: 800000090300C20004E40000
Remote Engine ID IP-addr Port
監視サーバ側で、ユーザ名、認証情報、暗号化情報、engineID を用いて設定変更します。
$ sudo cp -pi /etc/snmp/snmptrapd.conf{,.001}
$ sudo vi /etc/snmp/snmptrapd.conf
$ diff -u /etc/snmp/snmptrapd.conf{,.001}
@@ -16,8 +16,7 @@
#
#authCommunity log,execute,net private
#authCommunity log,execute,net public
-createUser -e 0x800000090300C20004E40000 ccna MD5 ciscocisco DES secretsecret
-authUser log,execute,net ccna
+authCommunity log cisco
#
## send mail when get any events
#traphandle default /usr/bin/traptoemail -s smtp.example.org foobar@example.org
設定変更したら snmptrapd を停止・起動します。
すると /var/lib/snmp/snmptrapd.conf ファイルに認証についての情報が保存されます。
$ sudo systemctl stop snmptrapd.service
$ sudo systemctl start snmptrapd.service
$ sudo grep ccna /var/lib/snmp/snmptrapd.conf
usmUser 1 3 0x800000090300c20004e40000 "ccna" "ccna" NULL .1.3.6.1.6.3.10.1.1.2 0x9b8abf9d03e7f97e81faa3dffd09ca09 .1.3.6.1.6.3.10.1.2.2 0xab3bdaedc45323a0de889b17f300b953 0x
インタフェース fa0/1 を shutdown すると下記のようにトラップが送信されます。
$ tail -f /var/log/syslog | grep trap
Dec 24 07:32:48 ip-10-0-0-73 snmptrapd[2537]: 2022-12-24 07:32:48 ip-10-2-0-254.ap-northeast-1.compute.internal [UDP: [10.2.0.254]:61086->[10.2.0.1]:162]:#012iso.3.6.1.2.1.1.3.0 = Timeticks: (1119167) 3:06:31.67#011iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.2.1.14.16.2.16#011iso.3.6.1.2.1.14.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.2 = INTEGER: 0#011iso.3.6.1.2.1.14.7.1.12 = INTEGER: 7
Dec 24 07:32:48 ip-10-0-0-73 snmptrapd[2537]: 2022-12-24 07:32:48 ip-10-2-0-254.ap-northeast-1.compute.internal [UDP: [10.2.0.254]:61086->[10.2.0.1]:162]:#012iso.3.6.1.2.1.1.3.0 = Timeticks: (1119168) 3:06:31.68#011iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.2.1.14.16.2.16#011iso.3.6.1.2.1.14.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.7.1.2 = INTEGER: 0#011iso.3.6.1.2.1.14.7.1.12 = INTEGER: 1
Dec 24 07:32:49 ip-10-0-0-73 snmptrapd[2537]: 2022-12-24 07:32:49 ip-10-2-0-254.ap-northeast-1.compute.internal [UDP: [10.2.0.254]:61086->[10.2.0.1]:162]:#012iso.3.6.1.2.1.1.3.0 = Timeticks: (1119218) 3:06:32.18#011iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.2.1.14.16.2.12#011iso.3.6.1.2.1.14.1.1 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.4.1.1 = IpAddress: 0.0.0.0#011iso.3.6.1.2.1.14.4.1.2 = INTEGER: 1#011iso.3.6.1.2.1.14.4.1.3 = IpAddress: 10.2.1.253#011iso.3.6.1.2.1.14.4.1.4 = IpAddress: 10.2.1.253
Dec 24 07:32:51 ip-10-0-0-73 snmptrapd[2537]: 2022-12-24 07:32:51 ip-10-2-0-254.ap-northeast-1.compute.internal [UDP: [10.2.0.254]:61086->[10.2.0.1]:162]:#012iso.3.6.1.2.1.1.3.0 = Timeticks: (1119464) 3:06:34.64#011iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.6.3.1.1.5.3#011iso.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2#011iso.3.6.1.2.1.2.2.1.2.2 = STRING: "FastEthernet0/1"#011iso.3.6.1.2.1.2.2.1.3.2 = INTEGER: 6#011iso.3.6.1.4.1.9.2.2.1.1.20.2 = STRING: "administratively down"
トラップの送信テストが成功したら /etc/snmp/snmptrapd.conf
から createUser
の行を削除することができます。
まとめ
snmp / snmptrapd を使って snmp の練習をしました。
実際に運用する際は各種統合監視ツールを利用した監視になると思いますが、役に立たない知識ではないはずです。
Discussion