MIB-IIによるネットワーク管理(at,ip,icmp編)
MIB-IIによるネットワーク管理の続きです。
at(アドレス変換)グループ
2023年においてもatTableは実装されています。TCP/IP以外のプロトコルが使われなくなったのとローカルネットワークではIPv4が未だに主流であるということだと思います。
atTableをTWSNMP FCで取得してみて、TWSNMP FCのバグを見つけました。赤い矢印のところです。atNetAddressが0になってしまいます。NET-SNMPのsnmpwalkコマンドで取得すると
RFC1213-MIB::atNetAddress.2.1.192.168.1.1 = Network Address: C0:A8:01:01
RFC1213-MIB::atNetAddress.2.1.192.168.1.4 = Network Address: C0:A8:01:04
RFC1213-MIB::atNetAddress.2.1.192.168.1.5 = Network Address: C0:A8:01:05
RFC1213-MIB::atNetAddress.2.1.192.168.1.7 = Network Address: C0:A8:01:07
RFC1213-MIB::atNetAddress.2.1.192.168.1.12 = Network Address: C0:A8:01:0C
RFC1213-MIB::atNetAddress.2.1.192.168.1.13 = Network Address: C0:A8:01:0D
RFC1213-MIB::atNetAddress.2.1.192.168.1.17 = Network Address: C0:A8:01:11
RFC1213-MIB::atNetAddress.2.1.192.168.1.21 = Network Address: C0:A8:01:15
のようになります。最初の行は、192.168.1.1と表示したほうが良さそうです。今度対応しておきます。シン・TWSNMPも同じバグがあります。
IPグループ
IPグループのツリー構造
+--ip(4)
|
+-- -RW- EnumVal ipForwarding(1)
| Values: forwarding(1), not-forwarding(2)
+-- -RW- INTEGER ipDefaultTTL(2)
+-- -R-- Counter ipInReceives(3)
+-- -R-- Counter ipInHdrErrors(4)
+-- -R-- Counter ipInAddrErrors(5)
+-- -R-- Counter ipForwDatagrams(6)
+-- -R-- Counter ipInUnknownProtos(7)
+-- -R-- Counter ipInDiscards(8)
+-- -R-- Counter ipInDelivers(9)
+-- -R-- Counter ipOutRequests(10)
+-- -R-- Counter ipOutDiscards(11)
+-- -R-- Counter ipOutNoRoutes(12)
+-- -R-- INTEGER ipReasmTimeout(13)
+-- -R-- Counter ipReasmReqds(14)
+-- -R-- Counter ipReasmOKs(15)
+-- -R-- Counter ipReasmFails(16)
+-- -R-- Counter ipFragOKs(17)
+-- -R-- Counter ipFragFails(18)
+-- -R-- Counter ipFragCreates(19)
|
+--ipAddrTable(20)
| |
| +--ipAddrEntry(1)
| | Index: ipAdEntAddr
| |
| +-- -R-- IpAddr ipAdEntAddr(1)
| +-- -R-- INTEGER ipAdEntIfIndex(2)
| +-- -R-- IpAddr ipAdEntNetMask(3)
| +-- -R-- INTEGER ipAdEntBcastAddr(4)
| +-- -R-- INTEGER ipAdEntReasmMaxSize(5)
| Range: 0..65535
|
+--ipRouteTable(21)
| |
| +--ipRouteEntry(1)
| | Index: ipRouteDest
| |
| +-- -RW- IpAddr ipRouteDest(1)
| +-- -RW- INTEGER ipRouteIfIndex(2)
| +-- -RW- INTEGER ipRouteMetric1(3)
| +-- -RW- INTEGER ipRouteMetric2(4)
| +-- -RW- INTEGER ipRouteMetric3(5)
| +-- -RW- INTEGER ipRouteMetric4(6)
| +-- -RW- IpAddr ipRouteNextHop(7)
| +-- -RW- EnumVal ipRouteType(8)
| | Values: other(1), invalid(2), direct(3), indirect(4)
| +-- -R-- EnumVal ipRouteProto(9)
| | Values: other(1), local(2), netmgmt(3), icmp(4), egp(5),
| | ggp(6), hello(7), rip(8), is-is(9), es-is(10),
| | ciscoIgrp(11), bbnSpfIgp(12), ospf(13), bgp(14)
| +-- -RW- INTEGER ipRouteAge(10)
| +-- -RW- IpAddr ipRouteMask(11)
| +-- -RW- INTEGER ipRouteMetric5(12)
| +-- -R-- ObjID ipRouteInfo(13)
|
+--ipNetToMediaTable(22)
| |
| +--ipNetToMediaEntry(1)
| | Index: ipNetToMediaIfIndex, ipNetToMediaNetAddress
| |
| +-- -RW- INTEGER ipNetToMediaIfIndex(1)
| +-- -RW- String ipNetToMediaPhysAddress(2)
| | Textual Convention: PhysAddress
| +-- -RW- IpAddr ipNetToMediaNetAddress(3)
| +-- -RW- EnumVal ipNetToMediaType(4)
| Values: other(1), invalid(2), dynamic(3), static(4)
|
+-- -R-- Counter ipRoutingDiscards(23)
+--ipForward(24)
+-- -R-- Gauge ipForwardNumber(1)
|
+--ipForwardTable(2)
| |
| +--ipForwardEntry(1)
| | Index: ipForwardDest, ipForwardProto, ipForwardPolicy,
| | ipForwardNextHop
| |
| +-- -R-- IpAddr ipForwardDest(1)
| +-- CR-- IpAddr ipForwardMask(2)
| +-- -R-- Integer32 ipForwardPolicy(3)
| +-- -R-- IpAddr ipForwardNextHop(4)
| +-- CR-- Integer32 ipForwardIfIndex(5)
| +-- CR-- EnumVal ipForwardType(6)
| | Values: other(1), invalid(2), local(3), remote(4)
| +-- -R-- EnumVal ipForwardProto(7)
| | Values: other(1), local(2), netmgmt(3), icmp(4), egp(5),
| | ggp(6), hello(7), rip(8), is-is(9), es-is(10),
| | ciscoIgrp(11), bbnSpfIgp(12), ospf(13), bgp(14),
| | idpr(15)
| +-- -R-- Integer32 ipForwardAge(8)
| +-- CR-- ObjID ipForwardInfo(9)
| +-- CR-- Integer32 ipForwardNextHopAS(10)
| +-- CR-- Integer32 ipForwardMetric1(11)
| +-- CR-- Integer32 ipForwardMetric2(12)
| +-- CR-- Integer32 ipForwardMetric3(13)
| +-- CR-- Integer32 ipForwardMetric4(14)
| +-- CR-- Integer32 ipForwardMetric5(15)
|
+-- -R-- Gauge ipCidrRouteNumber(3)
|
+--ipCidrRouteTable(4)
| |
| +--ipCidrRouteEntry(1)
| | Index: ipCidrRouteDest, ipCidrRouteMask, ipCidrRouteTos,
| | ipCidrRouteNextHop
| |
| +-- -R-- IpAddr ipCidrRouteDest(1)
| +-- -R-- IpAddr ipCidrRouteMask(2)
| +-- -R-- Integer32 ipCidrRouteTos(3)
| +-- -R-- IpAddr ipCidrRouteNextHop(4)
| +-- CR-- Integer32 ipCidrRouteIfIndex(5)
| +-- CR-- EnumVal ipCidrRouteType(6)
| | Values: other(1), reject(2), local(3), remote(4)
| +-- -R-- EnumVal ipCidrRouteProto(7)
| | Values: other(1), local(2), netmgmt(3), icmp(4), egp(5),
| | ggp(6), hello(7), rip(8), isIs(9), esIs(10),
| | ciscoIgrp(11), bbnSpfIgp(12), ospf(13), bgp(14),
| | idpr(15), ciscoEigrp(16)
| +-- -R-- Integer32 ipCidrRouteAge(8)
| +-- CR-- ObjID ipCidrRouteInfo(9)
| +-- CR-- Integer32 ipCidrRouteNextHopAS(10)
| +-- CR-- Integer32 ipCidrRouteMetric1(11)
| +-- CR-- Integer32 ipCidrRouteMetric2(12)
| +-- CR-- Integer32 ipCidrRouteMetric3(13)
| +-- CR-- Integer32 ipCidrRouteMetric4(14)
| +-- CR-- Integer32 ipCidrRouteMetric5(15)
| +-- CR-- EnumVal ipCidrRouteStatus(16)
| Textual Convention: RowStatus
| Values: active(1), notInService(2), notReady(3),
| createAndGo(4), createAndWait(5), destroy(6)
|
+--ipForwardConformance(5)
|
+--ipForwardGroups(1)
| |
| +--ipForwardMultiPathGroup(2)
| +--ipForwardCidrRouteGroup(3)
|
+--ipForwardCompliances(2)
|
+--ipForwardCompliance(1)
+--ipForwardOldCompliance(2)
NET-SNMPで取得すると
RFC1213-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1
RFC1213-MIB::ipAdEntAddr.172.17.0.1 = IpAddress: 172.17.0.1
RFC1213-MIB::ipAdEntAddr.192.168.1.210 = IpAddress: 192.168.1.210
RFC1213-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
RFC1213-MIB::ipAdEntIfIndex.172.17.0.1 = INTEGER: 5
RFC1213-MIB::ipAdEntIfIndex.192.168.1.210 = INTEGER: 2
RFC1213-MIB::ipAdEntNetMask.127.0.0.1 = IpAddress: 255.0.0.0
RFC1213-MIB::ipAdEntNetMask.172.17.0.1 = IpAddress: 255.255.0.0
RFC1213-MIB::ipAdEntNetMask.192.168.1.210 = IpAddress: 255.255.255.0
RFC1213-MIB::ipAdEntBcastAddr.127.0.0.1 = INTEGER: 0
RFC1213-MIB::ipAdEntBcastAddr.172.17.0.1 = INTEGER: 1
RFC1213-MIB::ipAdEntBcastAddr.192.168.1.210 = INTEGER: 1
TWSNMP FCの場合には、IpAddressタイプの表示が正しくないバグがあるようです。今度修正しておきます。
ipAdEntReasmMaxSizeは無くなったようです。たぶん、最大値以外設定しないので必要ないのかもしれません。詳しくは調べてません。
NET-SNMPで取得すると
RFC1213-MIB::ipNetToMediaPhysAddress.2.192.168.1.250 = Hex-STRING: 14 9D 99 7B 2A D3
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.1 = IpAddress: 192.168.1.1
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.4 = IpAddress: 192.168.1.4
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.5 = IpAddress: 192.168.1.5
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.7 = IpAddress: 192.168.1.7
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.12 = IpAddress: 192.168.1.12
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.13 = IpAddress: 192.168.1.13
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.17 = IpAddress: 192.168.1.17
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.21 = IpAddress: 192.168.1.21
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.23 = IpAddress: 192.168.1.23
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.24 = IpAddress: 192.168.1.24
RFC1213-MIB::ipNetToMediaNetAddress.2.192.168.1.250 = IpAddress: 192.168.1.250
RFC1213-MIB::ipNetToMediaType.2.192.168.1.1 = INTEGER: dynamic(3)
です。これもTWSNMP FCではIpAddressタイプが表示できないバグがあるようです。
NET-SNMPで取得すると
RFC1213-MIB::ipRouteDest.0.0.0.0 = IpAddress: 0.0.0.0
RFC1213-MIB::ipRouteDest.172.17.0.0 = IpAddress: 172.17.0.0
RFC1213-MIB::ipRouteDest.192.168.1.0 = IpAddress: 192.168.1.0
RFC1213-MIB::ipRouteIfIndex.0.0.0.0 = INTEGER: 2
RFC1213-MIB::ipRouteIfIndex.172.17.0.0 = INTEGER: 5
RFC1213-MIB::ipRouteIfIndex.192.168.1.0 = INTEGER: 2
RFC1213-MIB::ipRouteMetric1.0.0.0.0 = INTEGER: 1
RFC1213-MIB::ipRouteMetric1.172.17.0.0 = INTEGER: 0
RFC1213-MIB::ipRouteMetric1.192.168.1.0 = INTEGER: 0
RFC1213-MIB::ipRouteNextHop.0.0.0.0 = IpAddress: 192.168.1.1
RFC1213-MIB::ipRouteNextHop.172.17.0.0 = IpAddress: 0.0.0.0
RFC1213-MIB::ipRouteNextHop.192.168.1.0 = IpAddress: 0.0.0.0
RFC1213-MIB::ipRouteType.0.0.0.0 = INTEGER: indirect(4)
RFC1213-MIB::ipRouteType.172.17.0.0 = INTEGER: direct(3)
RFC1213-MIB::ipRouteType.192.168.1.0 = INTEGER: direct(3)
RFC1213-MIB::ipRouteProto.0.0.0.0 = INTEGER: local(2)
RFC1213-MIB::ipRouteProto.172.17.0.0 = INTEGER: local(2)
RFC1213-MIB::ipRouteProto.192.168.1.0 = INTEGER: local(2)
RFC1213-MIB::ipRouteMask.0.0.0.0 = IpAddress: 0.0.0.0
RFC1213-MIB::ipRouteMask.172.17.0.0 = IpAddress: 255.255.0.0
RFC1213-MIB::ipRouteMask.192.168.1.0 = IpAddress: 255.255.255.0
RFC1213-MIB::ipRouteInfo.0.0.0.0 = OID: SNMPv2-SMI::zeroDotZero
RFC1213-MIB::ipRouteInfo.172.17.0.0 = OID: SNMPv2-SMI::zeroDotZero
RFC1213-MIB::ipRouteInfo.192.168.1.0 = OID: SNMPv2-SMI::zeroDotZero
です。これもTWSNMP FCでIpAddressタイプの表示ができない問題の影響を受けています。
ipCidrRouteTableは2023年の現在ではNET_SNMPに実装されています。
ipForwardTableは2023年の現在でもNET-SNMPのエージェントでは取得できません。
他にIPv6に関連したMIBも取得できますが、この話は別の記事に書ます。
ICMPグループ
+--icmp(5)
|
+-- -R-- Counter icmpInMsgs(1)
+-- -R-- Counter icmpInErrors(2)
+-- -R-- Counter icmpInDestUnreachs(3)
+-- -R-- Counter icmpInTimeExcds(4)
+-- -R-- Counter icmpInParmProbs(5)
+-- -R-- Counter icmpInSrcQuenchs(6)
+-- -R-- Counter icmpInRedirects(7)
+-- -R-- Counter icmpInEchos(8)
+-- -R-- Counter icmpInEchoReps(9)
+-- -R-- Counter icmpInTimestamps(10)
+-- -R-- Counter icmpInTimestampReps(11)
+-- -R-- Counter icmpInAddrMasks(12)
+-- -R-- Counter icmpInAddrMaskReps(13)
+-- -R-- Counter icmpOutMsgs(14)
+-- -R-- Counter icmpOutErrors(15)
+-- -R-- Counter icmpOutDestUnreachs(16)
+-- -R-- Counter icmpOutTimeExcds(17)
+-- -R-- Counter icmpOutParmProbs(18)
+-- -R-- Counter icmpOutSrcQuenchs(19)
+-- -R-- Counter icmpOutRedirects(20)
+-- -R-- Counter icmpOutEchos(21)
+-- -R-- Counter icmpOutEchoReps(22)
+-- -R-- Counter icmpOutTimestamps(23)
+-- -R-- Counter icmpOutTimestampReps(24)
+-- -R-- Counter icmpOutAddrMasks(25)
+-- -R-- Counter icmpOutAddrMaskReps(26)
icmpのグループには2つテーブルが増えていました。
icmpのバージョン毎のメッセージ送受信数
と、バージョンとメッセージ毎の送受信数です。
ICMPv4でDestination Unreachable(宛先到達不能)の送信数と受信数などがわかります。
このMIBはかなり便利かもしれません。
ここから先は
実践SNMP教科書 復刻版
20年近く前に書いた「実践SNMP教科書」を現在でも通用する部分だけ書き直して復刻するマガジンです。最近MIBの設計で困っている人に遭遇し…
Amazonギフトカード5,000円分が当たる
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。