Aug 05, 2006
Zebra snmp bug
SNMP SMUX 経由で Zebra ospfd の OSPF-MIB にアクセスしようとしたら, できなくなっていた. 前回やったときは動いており,何も変えていないはずだったのだが.
バージョンあげたら snmpd がパスワードを受け付けなくなったという報告を見つけた.
snmpd 5.3.0.1 stopped accepting smux peer's password
2005/08/05 現在,follow は無い.以下自分の環境でも確かめてみた.
snmpd.conf は以下のとおり.
# cat /etc/snmp/snmpd.conf com2sec readonlyuser default public group readonlygroup v1 readonlyuser group readonlygroup v2c readonlyuser view all included .1 80 access readonlygroup "" any noauth exact all none none smuxpeer .1.3.6.1.2.1.14 zebraospf syslocation Here syscontact yasu[at]sfc.wide.ad.jp
snmpd のバージョン.
# /usr/local/sbin/snmpd -vNET-SNMP version: 5.3.0.1
smux モジュールをデバッグしながら snmpd を起動.
# /usr/local/sbin/snmpd -Dsmux -c /etc/snmp/snmpd.conf > & /dev/null
ospfd.conf に smux peer 行を入れて,ospfd を起動.
# grep smux /usr/local/etc/ospfd.conf smux peer .1.3.6.1.2.1.14 zebraospf # /usr/local/sbin/ospfd -d
/var/log/snmpd.log にログが出る.passwd はあっているのに failed authentication.
# cat /var/log/snmpd.log smux_conf: parsing registration for: .1.3.6.1.2.1.14 zebraospf smux_conf: password is: zebraospf smux_init: [smux_init] done; smux listen sd is 6, smux port is 199 NET-SNMP version 5.3.0.1 smux: [smux_accept] Calling accept() [smux_accept] accepted fd 8 from 127.0.0.1:49833 smux: [smux_open_process] version 0, len 32, type 2 smux: [smux_open_process] smux peer: SNMPv2-SMI::mib-2.14 smux: [smux_open_process] len 24, type 6 smux: [smux_open_process] smux peer descr: zebra-0.95b smux: [smux_open_process] len 11, type 4 smux: [smux_open_process] smux peer passwd: zebraospf smux: [smux_open_process] len 0, type 4 refused smux peer: oid SNMPv2-SMI::mib-2.14, descr zebra-0.95b smux: [smux_close] sending close to fd 8, reason 5 smux: [smux_accept] peer on 8 failed authentication smux: [smux_accept] Calling accept() [smux_accept] accepted fd 8 from 127.0.0.1:49834
net-snmp-5.3.1.tar.gz でも同様になった.net-snmp-5.1.3.1.tar.gz に ダウングレードしたら直った!
# less /var/log/snmpd.log smux_conf: parsing registration for: 1.3.6.1.2.1.14 zebraospf smux_init: [smux_init] done; smux listen sd is 8, smux port is 199 NET-SNMP version 5.1.3.1 smux: [smux_accept] Calling accept() [smux_accept] accepted fd 10 from 127.0.0.1:57228 smux: [smux_open_process] version 0, len 32, type 2 smux: [smux_open_process] smux peer: SNMPv2-SMI::mib-2.14 smux: [smux_open_process] len 24, type 6 smux: [smux_open_process] smux peer descr: zebra-0.95b smux: [smux_open_process] len 11, type 4 smux: [smux_open_process] smux peer passwd: zebraospf smux: [smux_open_process] len 0, type 4 accepted smux peer: oid SNMPv2-SMI::mib-2.14, descr zebra-0.95b smux: [smux_accept] fd 10 smux: [smux_pdu_process] Processing 0 bytes smux: [smux_pdu_process] Processing 16 bytes smux: [smux_pdu_process] type is 98 smux: [smux_rreq_process] smux subtree: SNMPv2-SMI::mib-2.14 smux: [smux_rreq_process] priority -1 smux: [smux_rreq_process] operation 2
# snmpwalk -v 2c -c public localhost OSPF-MIB::ospf | head OSPF-MIB::ospfRouterId.0 = IpAddress: 203.178.143.91 OSPF-MIB::ospfAdminStat.0 = INTEGER: enabled(1) OSPF-MIB::ospfVersionNumber.0 = INTEGER: version2(2) OSPF-MIB::ospfAreaBdrRtrStatus.0 = INTEGER: false(2) OSPF-MIB::ospfASBdrRtrStatus.0 = INTEGER: false(2) OSPF-MIB::ospfExternLsaCount.0 = Gauge32: 115 OSPF-MIB::ospfExternLsaCksumSum.0 = INTEGER: 0 OSPF-MIB::ospfTOSSupport.0 = INTEGER: false(2) OSPF-MIB::ospfOriginateNewLsas.0 = Counter32: 1 OSPF-MIB::ospfRxNewLsas.0 = Counter32: 290
うーんこういうの嫌だ.
追記:libsnmp を使ってアプリケーションを書いていたのだが,この ダウングレードにより MIB モジュール OSPF-MIB が見つからないと 言うようになった.API側で明示的に OSPF-MIB を読み込まないと いけないのだろうが,ドキュメントが無い・少なくて,やり方がわからない. snmp_parse_args() の中とか見ればわかるのだろうが…. ダウングレードで飛び越えた中に, 指定された MIB モジュールがあるかどうか デフォルトディレクトリ(/usr/local/share/snmp/mibs/)だけは探す, という変更があったのだろう. このMIBモジュールの読み込みは,5.1.3.1, 5.2 ではダメで, 結局 5.3.0.1 に戻した.
つまり,zebra で使う library や snmpd は 5.3.0.1 未満でなくてはダメ(5.2 は調べてない)で,アプリケーションでリンクするのは 5.3.0.1 以上でなくては ダメ,というややこしいことに…….
writeback message: Ready to post a comment.