![見出し画像](https://assets.st-note.com/production/uploads/images/125520566/rectangle_large_type_2_0a694cb9c63717c72d201fcc60373ba3.png?width=1200)
MIB-IIによるネットワーク管理(TCP,UDP,EGP,SNMP編)
MIB--IIによるネットワーク管理の続きです。
TCPグループ
TCPグループは、TCP層の管理情報を提供するグループです。
+--tcp(6)
|
+-- -R-- EnumVal tcpRtoAlgorithm(1)
| Values: other(1), constant(2), rsre(3), vanj(4)
+-- -R-- INTEGER tcpRtoMin(2)
+-- -R-- INTEGER tcpRtoMax(3)
+-- -R-- INTEGER tcpMaxConn(4)
+-- -R-- Counter tcpActiveOpens(5)
+-- -R-- Counter tcpPassiveOpens(6)
+-- -R-- Counter tcpAttemptFails(7)
+-- -R-- Counter tcpEstabResets(8)
+-- -R-- Gauge tcpCurrEstab(9)
+-- -R-- Counter tcpInSegs(10)
+-- -R-- Counter tcpOutSegs(11)
+-- -R-- Counter tcpRetransSegs(12)
|
+--tcpConnTable(13)
| |
| +--tcpConnEntry(1)
| | Index: tcpConnLocalAddress, tcpConnLocalPort, tcpConnRemAddress,
| | tcpConnRemPort
| |
| +-- -RW- EnumVal tcpConnState(1)
| | Values: closed(1), listen(2), synSent(3), synReceived(4),
| | established(5), finWait1(6), finWait2(7),
| | closeWait(8), lastAck(9), closing(10), timeWait(11),
| | deleteTCB(12)
| +-- -R-- IpAddr tcpConnLocalAddress(2)
| +-- -R-- INTEGER tcpConnLocalPort(3)
| | Range: 0..65535
| +-- -R-- IpAddr tcpConnRemAddress(4)
| +-- -R-- INTEGER tcpConnRemPort(5)
| Range: 0..65535
|
+-- -R-- Counter tcpInErrs(14)
+-- -R-- Counter tcpOutRsts(15)
|
+--ipv6TcpConnTable(16)
|
+--ipv6TcpConnEntry(1)
| Index: ipv6TcpConnLocalAddress, ipv6TcpConnLocalPort,
| ipv6TcpConnRemAddress, ipv6TcpConnRemPort,
| ipv6TcpConnIfIndex
|
+-- ---- String ipv6TcpConnLocalAddress(1)
| Textual Convention: Ipv6Address
| Size: 16
+-- ---- INTEGER ipv6TcpConnLocalPort(2)
| Range: 0..65535
+-- ---- String ipv6TcpConnRemAddress(3)
| Textual Convention: Ipv6Address
| Size: 16
+-- ---- INTEGER ipv6TcpConnRemPort(4)
| Range: 0..65535
+-- ---- Integer32 ipv6TcpConnIfIndex(5)
| Textual Convention: Ipv6IfIndexOrZero
| Range: 0..2147483647
+-- -RW- EnumVal ipv6TcpConnState(6)
Values: closed(1), listen(2), synSent(3), synReceived(4),
established(5), finWait1(6), finWait2(7),
closeWait(8), lastAck(9), closing(10), timeWait(11),
deleteTCB(12)
TCPグループのMIBは、以下のように分類できます。
①TCP層の設定値
TCP層の再送アルゴリズムや再送回数、最大コネクション数などを取得することができます。
②TCP層の通信統計情報
TCP層のコネクションの開設数や、送受信セグメント数、再送セグメント数などの通信統計情報を取得できます。
![](https://assets.st-note.com/img/1703453035878-nh8GJP7Us9.png)
![](https://assets.st-note.com/img/1703453274986-TXs6cinwse.png?width=1200)
また、TWSNMP FCのバグを見つけました。tcpMacConn.0は-1と表示するべきです。
NET-SNMPでは
RFC1213-MIB::tcpRtoAlgorithm.0 = INTEGER: other(1)
RFC1213-MIB::tcpRtoMin.0 = INTEGER: 200
RFC1213-MIB::tcpRtoMax.0 = INTEGER: 120000
RFC1213-MIB::tcpMaxConn.0 = INTEGER: -1
RFC1213-MIB::tcpActiveOpens.0 = Counter32: 536589
RFC1213-MIB::tcpPassiveOpens.0 = Counter32: 1367649
RFC1213-MIB::tcpAttemptFails.0 = Counter32: 4
RFC1213-MIB::tcpEstabResets.0 = Counter32: 1230735
RFC1213-MIB::tcpCurrEstab.0 = Gauge32: 13
RFC1213-MIB::tcpInSegs.0 = Counter32: 16945153
RFC1213-MIB::tcpOutSegs.0 = Counter32: 13869413
RFC1213-MIB::tcpRetransSegs.0 = Counter32: 502
です。
③TCPコネクションテーブルの情報
管理対象ノードにおいてnestatコマンドで表示可能な、TCPのコネクションテーブルは、tcpConnTableから取得することができます。最近では、IPv6対応のipv6TcpConnTableが実装されている場合もあります。
tcpConnTableには、接続されたTCPコネクションの他、サーバとして接続を受け付けるためにオープンしているポートも一覧されます。この情報により、サーバ機能の動作検出も可能です。例えば、WEBサーバノードでは、tcpConnTableに80番のポートがLISTEN状態で登録されているはずです。登録されていなければ、WEBサーバが停止していることがわかります。
![](https://assets.st-note.com/img/1703453500786-xwR6TyvGVp.png?width=1200)
![](https://assets.st-note.com/img/1703453597675-BettaalcJ3.png?width=1200)
コラム:IPv6対応
SNMPのPDUやメッセージのレベルで、IPv6対応の変更は、必要ありません。トランスポート層へのマッピングで、宛先のアドレスをIPv6アドレスに対応する点と、tcpConnTableやudpTableなどのように、IpAddress型のデータタイプを使用しているMIBをIPv6対応に変更する点が必要です。
このコラムの話は、その後どうなったかというと、IPv6用のコネクションテーブルのMIBは定義されています。
![](https://assets.st-note.com/img/1703454032866-snnY1D9bis.png?width=1200)
しかし、NET-SNMPには実装されていません。
そのかわり、IPv4とIPv6の両方に対応したTCPのコネクションテーブルのMIBに対応しています。
![](https://assets.st-note.com/img/1703454251984-BjSkmzdYoa.png?width=1200)
![](https://assets.st-note.com/img/1703454258796-tssqYqBN8Q.png?width=1200)
接続したいるノードのIPアドレスがインデックスになっています。
接続待ち(Listen)状態だけのテーブルも定義されています。
![](https://assets.st-note.com/img/1703454411322-rob12gajAl.png?width=1200)
UDPグループ
UDPグループは、UDP層の管理情報を提供します。
+--udp(7)
|
+-- -R-- Counter udpInDatagrams(1)
+-- -R-- Counter udpNoPorts(2)
+-- -R-- Counter udpInErrors(3)
+-- -R-- Counter udpOutDatagrams(4)
|
+--udpTable(5)
| |
| +--udpEntry(1)
| | Index: udpLocalAddress, udpLocalPort
| |
| +-- -R-- IpAddr udpLocalAddress(1)
| +-- -R-- INTEGER udpLocalPort(2)
| Range: 0..65535
|
+--ipv6UdpTable(6)
|
+--ipv6UdpEntry(1)
| Index: ipv6UdpLocalAddress, ipv6UdpLocalPort, ipv6UdpIfIndex
|
+-- ---- String ipv6UdpLocalAddress(1)
| Textual Convention: Ipv6Address
| Size: 16
+-- ---- INTEGER ipv6UdpLocalPort(2)
| Range: 0..65535
+-- -R-- Integer32 ipv6UdpIfIndex(3)
Textual Convention: Ipv6IfIndexOrZero
Range: 0..2147483647
UDPグループのMIBは、以下のように分類できます。
①UDP層の通信統計情報
UDPパケットの送受信量や、エラーパケットの受信量を取得するためのMIBです。
![](https://assets.st-note.com/img/1703454721112-BlZfDSbr9t.png?width=1200)
![](https://assets.st-note.com/img/1703454788785-ktLGALL4eQ.png?width=1200)
②UDPのポート管理テーブル
UDPパケットを受け付けるためにオープンしているポートの一覧を取得できます。従来からあるIPv4用のudpTableと新しいIPv6用のipv6UdpTableがあります。
![](https://assets.st-note.com/img/1703454876424-D1rN0wAe3o.png?width=1200)
![](https://assets.st-note.com/img/1703454945084-w9g9STNDo3.png?width=1200)
udpの場合もIPv6は、専用のテーブルは実装されていません。両方に対応したudpEndpointTableが利用できます。
![](https://assets.st-note.com/img/1703455092267-uDlTQL0riR.png?width=1200)
EGPグループ
EGPグループは、ルーティングプロトコルのEGPをサポートしたルータのみが実装するMIBです。サーバやクライアントPC、ローカルに設置されたルータでは、必要ないため、標準MIBとして定義されていますが、実装していないエージェントが多いです。
SNMPグループ
SNMPグループは、SNMPプロトコル自身の管理のためのMIBです。SNMPマネージャからの監視では使用されることはほとんどありません。主に、SNMPエージェントの試験時にSNMPの通信量を測定するために使用されます。snmpEnableAuthenTrapsの設定によって、不正なマネージャからのアクセスをTRAPで正当なマネージャに伝える機能のON/OFFができます。
![](https://assets.st-note.com/img/1703455312412-9r8rffIIRo.png?width=1200)
ここから先は
![](https://assets.st-note.com/production/uploads/images/14333815/profile_ee1accba5615957e5029db85d57fdb0a.jpg?fit=bounds&format=jpeg&quality=85&width=330)
実践SNMP教科書 復刻版
20年近く前に書いた「実践SNMP教科書」を現在でも通用する部分だけ書き直して復刻するマガジンです。最近MIBの設計で困っている人に遭遇し…
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。