Vyatta(VyOS)にsnmptrapを設定し監視可能な状態にする方法を説明します。
設定まとめ
コマンドまとめ
以下コマンドでsnmptrapの送信先とコミュニティ名を定義します。
set service snmp trap-target <snmptrapdサーバ> community <コミュニティ名>
以下コマンドでsnmptrapを送付する時のUDPポートを指定します。well-known portsであるUDP162を使用する場合でも、設定省略不可です。
set service snmp trap-target <snmptrapdサーバ> port <ポート番号>
設定の追跡
VyOSはDebianを元にしたOSです。ですので、上記のsetコマンドを実行すると、内部的にはsnmpdの設定が生成されます。想定外の挙動をした場合は、snmpdの設定を追跡してみましょう。/etc/snmp/snmpd.confにsetコマンドで指定した設定が格納されています。
vyos@vy001:~$ show configuration commands | grep snmp set service snmp trap-target 192.168.10.10 community 'public' set service snmp trap-target 192.168.10.10 port '162' vyos@vy001:~$ vyos@vy001:~$ vyos@vy001:~$ cat /etc/snmp/snmpd.conf <omitted> # if there is a problem - tell someone! trap2sink 192.168.10.10:162 public <omitted>
動作確認
動作確認の構成
以下の環境で動作確認を行います。社内端末向けの環境を想定し、クライアント端末からプロキシサーバ(squid)を経由してWeb(apache)へ通信する要件を想定します。
+-----------------------+ | host010 | | | +-----------+-----------+ ens224 | .10 | | 192.168.10.0/24 | eth0 | .1 +-----------+-----------+ | vy001 | | | +-----------+-----------+ eth1 | .1 | | 192.168.20.0/24 |
初期設定
初期設定はIPアドレスのみとします。
動作確認 snmptrapの有効化
以下のコマンドでsnmptrapを定義します。ポート番号162はwell-known portsですが、省略不可の設定です。
[vy001:VyOS1.4] set service snmp trap-target 192.168.10.10 community 'public' set service snmp trap-target 192.168.10.10 port '162'
snmptrapの動作確認のためにinterfaceの1つをdisableにします。
[vy001:VyOS1.4] set interfaces ethernet eth1 disable
設定反映と同時にsnmptrapが送信される事を確認します。確認方法は、snmptrapdサーバを構築したりパケットキャプチャなどで確認する事ができます。
[host030:RockyLinux8.4] [root@host010 ~]# tail -n1 -f /var/log/messages Aug 31 20:55:32 host010 snmptrapd[2572]: 2021-08-31 20:55:32 <UNKNOWN> [UDP: [192.168.10.1]:39998->[192.168.10.10]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (32) 0:00:00.32#011SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkUp#011IF-MIB::ifIndex.3 = INTEGER: 3#011IF-MIB::ifDescr.3 = STRING: VMware VMXNET3 Ethernet Controller#011IF-MIB::ifType.3 = INTEGER: ethernetCsmacd(6)#011IF-MIB::ifAdminStatus.3 = INTEGER: up(1)#011IF-MIB::ifOperStatus.3 = INTEGER: up(1)#011SNMPv2-MIB::snmpTrapEnterprise.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 Aug 31 20:58:42 host010 snmptrapd[2572]: 2021-08-31 20:58:42 <UNKNOWN> [UDP: [192.168.10.1]:39998->[192.168.10.10]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (19031) 0:03:10.31#011SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkDown#011IF-MIB::ifIndex.3 = INTEGER: 3#011IF-MIB::ifDescr.3 = STRING: VMware VMXNET3 Ethernet Controller#011IF-MIB::ifType.3 = INTEGER: ethernetCsmacd(6)#011IF-MIB::ifAdminStatus.3 = INTEGER: down(2)#011IF-MIB::ifOperStatus.3 = INTEGER: down(2)#011SNMPv2-MIB::snmpTrapEnterprise.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 [root@host010 ~]# tcpdump -i ens224 udp port 162 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens224, link-type EN10MB (Ethernet), capture size 262144 bytes 21:00:42.028760 IP 192.168.10.1.39998 > host010.gokatei.go.snmptrap: V2Trap(200) system.sysUpTime.0=31031 S:1.1.4.1.0=S:1.1.5.4 interfaces.ifTable.ifEntry.ifIndex.3=3 interfaces.ifTable.ifEntry.ifDescr.3="VMware VMXNET3 Ethernet Controller" interfaces.ifTable.ifEntry.ifType.3=6 interfaces.ifTable.ifEntry.ifAdminStatus.3=1 interfaces.ifTable.ifEntry.ifOperStatus.3=1 S:1.1.4.3.0=E:8072.3.2.10 ^C 1 packet captured 1 packet received by filter 0 packets dropped by kernel [root@host010 ~]#