SNMP Trapを勉強しようと思い、VyOSでTrapが飛ぶようなイベントを発生させて、Trapの内容を見ていた。
Link up/downはRFCで定義されたMIBを使用しているので問題なく読めた。 しかし、BGP peer up/downはVyOS独自(正確に言うとGNU Zebra独自)のMIBを使用しているため、プライベートMIBを拾ってきてNet-SNMPに読み込ませなければならない。
本記事では、VyOSのプライベートMIBをNet-SNMPに読み込ませる手順を紹介する。
環境
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
VyOS
vyos@vyos-1:~$ show version Version: VyOS 1.1.8 Description: VyOS 1.1.8 (helium) Copyright: 2017 VyOS maintainers and contributors Built by: maintainers@vyos.net Built on: Sat Nov 11 13:44:36 UTC 2017 Build ID: 1711111344-b483efc System type: x86 64-bit Boot via: image Hypervisor: VMware HW model: VMware Virtual Platform HW S/N: VMware-56 4d f6 1e a9 ac 47 15-e3 d1 44 0e 99 66 ac fe HW UUID: 564DF61E-A9AC-4715-E3D1-440E9966ACFE Uptime: 15:03:57 up 10:46, 2 users, load average: 0.00, 0.01, 0.05
手順
Ubuntuでsnmptrapdや標準MIBが使えるようにする。
$ sudo apt install snmp snmp-mibs-downloader
VyOSのソースコードをダウンロードする。
$ wget https://github.com/vyos/vyos-frr/archive/current.tar.gz $ tar xvzf current.tar.gz
以下のように、VyOSのプライベートMIBファイルがソースコードに含まれている。
$ find vyos-frr-current -type f | grep -i smi vyos-frr-current/zebra/GNOME-SMI $ find vyos-frr-current -type f | grep -i mib vyos-frr-current/zebra/GNOME-PRODUCT-ZEBRA-MIB vyos-frr-current/ospf6d/OSPFv3-MIB.txt vyos-frr-current/bgpd/BGP4-MIB.txt vyos-frr-current/ripd/RIPv2-MIB.txt vyos-frr-current/ospfd/OSPF-TRAP-MIB.txt vyos-frr-current/ospfd/OSPF-MIB.txt
上記のMIBファイルを /usr/share/snmp/mibs-vyos/
ディレクトリにコピーする。
$ sudo mkdir /usr/share/snmp/mibs-vyos/ $ find vyos-frr-current -type f | grep -i mib | xargs -I% sudo cp % /usr/share/snmp/mibs-vyos/ $ find vyos-frr-current -type f | grep -i smi | xargs -I% sudo cp % /usr/share/snmp/mibs-vyos/
/usr/share/snmp/mibs-vyos/
の中身はこのようになる。
$ ls /usr/share/snmp/mibs-vyos/ BGP4-MIB.txt GNOME-PRODUCT-ZEBRA-MIB GNOME-SMI OSPF-MIB.txt OSPF-TRAP-MIB.txt OSPFv3-MIB.txt RIPv2-MIB.txt
snmpcmdが /usr/share/snmp/mibs-vyos/
を読み込むようにするために、 /etc/snmp/snmp.conf
の内容を次の通りにする。
MIBDIRS +/usr/share/snmp/mibs-vyos MIBS all
結果
設定前後で、snmptrapdの出力は以下のように変化する。
特に、 iso.3.6.1.4.1.3317.1.2.2.0.2
が GNOME-PRODUCT-ZEBRA-MIB::bgpd.0.2
に変換されている点に注目したい。
Before:
vyos-1 UDP: [172.16.178.130]:33031->[172.16.178.131]:162 iso.3.6.1.2.1.1.3.0 0:7:59:04.73 iso.3.6.1.6.3.1.1.4.1.0 iso.3.6.1.4.1.3317.1.2.2.0.2 iso.3.6.1.2.1.15.3.1.14.192.168.47.2 "00 00 " iso.3.6.1.2.1.15.3.1.2.192.168.47.2 6 iso.3.6.1.6.3.1.1.4.3.0 iso.3.6.1.4.1.3317.1.2.2
After:
vyos-1 UDP: [172.16.178.130]:33031->[172.16.178.131]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:7:59:04.73 SNMPv2-MIB::snmpTrapOID.0 GNOME-PRODUCT-ZEBRA-MIB::bgpd.0.2 BGP4-MIB::bgpPeerLastError.192.168.47.2 "00 00 " BGP4-MIB::bgpPeerState.192.168.47.2 established SNMPv2-MIB::snmpTrapEnterprise.0 GNOME-PRODUCT-ZEBRA-MIB::bgpd
余談
勉強用に取得したVyOSのSNMP TrapのパケットキャプチャをGitHubに置いておいた。