このドキュメントでは、MAC アドレスが判明している Cisco Catalyst スイッチのポート番号を取得するために、Simple Network Management Protocol(SNMP)を使用する方法について説明します。
このドキュメントの読者は次のトピックについての専門知識を有している必要があります。
SNMP を使用して Catalyst スイッチから VLAN を取得する方法
SNMP でのコミュニティ ストリング インデックスを使用する方法
SNMP の get コマンドと walk コマンドの一般的な使用法
このドキュメントは、標準の Catalyst OS(CatOS)または Cisco IOS ® ソフトウェアを実行する Catalyst スイッチに適用されます。ソフトウェアは BRIDGE-MIB および IF-MIB をサポートします。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
Cisco IOS ソフトウェア リリース 12.0(5)WC5a が稼働する Catalyst 3524XL
Net-SNMP バージョン 5.0.6
注:このソフトウェアを入手するには、Net-SNMPを参照してください 。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ドキュメント表記の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
連想メモリ(CAM)テーブル、VLAN、および関連するすべての MIB(CISCO-VTP-MIB、BRIDGE-MIB など)のクエリー方法の詳細については、『SNMP を使った、Catalyst スイッチのダイナミック CAM エントリ(CAM テーブル)の取得方法』の「背景説明」の項を参照してください。
.1.3.6.1.2.1.17.4.3.1.1 dot1dTpFdbAddress OBJECT-TYPE -- FROM BRIDGE-MIB -- TEXTUAL CONVENTION MacAddress SYNTAX OCTET STRING (6) MAX-ACCESS read-only STATUS Mandatory DESCRIPTION "A unicast MAC address for which the bridge has forwarding and/or filtering information." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3) dot1dTpFdbEntry(1) 1 } .1.3.6.1.2.1.17.4.3.1.2 dot1dTpFdbPort OBJECT-TYPE -- FROM BRIDGE-MIB SYNTAX Integer MAX-ACCESS read-only STATUS Mandatory DESCRIPTION "Either the value "0", or the port number of the port on which a frame having a source address equal to the value of the corresponding instance of dot1dTpFdbAddress has been seen. A value of "0" indicates that the port number has not been learned, but that the bridge does have some forwarding/filtering information about this address (that is, in the StaticTable). Implementors are encouraged to assign the port value to this object whenever it is learned, even for addresses for which the corresponding value of dot1dTpFdbStatus is not learned(3)." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3) dot1dTpFdbEntry(1) 2 } .1.3.6.1.2.1.2.2.1.1 ifIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS read-only STATUS current DESCRIPTION "A unique value, greater than zero, for each interface. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re- initialization." ::= { ifEntry 1 } .1.3.6.1.2.1.17.1.4.1.2 dot1dBasePortIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The value of the instance of the ifIndex object, defined in MIB-II, for the interface corresponding to this port." ::= { dot1dBasePortEntry 2 } .1.3.6.1.2.1.31.1.1.1.1 ifName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The textual name of the interface. The value of this object should be the name of the interface as assigned by the local device and should be suitable for use in commands entered at the device's `console'. This might be a text name, such as `le0' or a simple port number, such as `1', depending on the interface naming syntax of the device. If several entries in the ifTable together represent a single interface as named by the device, then each will have the same value of ifName. Note that for an agent which responds to SNMP queries concerning an interface on some other (proxied) device, then the value of ifName for such an interface is the proxied device's local name for it. If there is no local name, or this object is otherwise not applicable, then this object contains a zero-length string." ::= { ifXEntry 1 }
SNMP を使用して、MAC アドレスが判明しているポート番号を取得するには、この項の手順を実行します。ポート番号は VLAN1 内にあると考えます。
注:このセクションのコマンドでは、次の手順を実行します。
public は、読み取り用コミュニティ ストリングです。
@1は、readコミュニティストリングのVLAN 1部分です。
crumpy は、デバイスのホスト名です。
注:このホスト名にはIPアドレスを使用することもできます。
注:「結果」セクションでは、コマンド出力の中で斜体で表示される値を使用します。
VLAN を取得します。vtpVlanState オブジェクトに対して snmpwalk コマンドを使用します(.1.3.6.1.4.1.9.9.46.1.3.1.1.2):
%snmpwalk -c public crumpy .1.3.6.1.4.1.9.9.46.1.3.1.1.2 CISCO-VTP-MIB::vtpVlanState.1.1 = INTEGER: operational(1) CISCO-VTP-MIB::vtpVlanState.1.3 = INTEGER: operational(1) CISCO-VTP-MIB::vtpVlanState.1.7 = INTEGER: operational(1) CISCO-VTP-MIB::vtpVlanState.1.10 = INTEGER: operational(1) ...
注:このコマンドはコミュニティストリックスを使用します。このコマンドでは、vtpVlanStateも使用されます。OIDはOID.1.3.1.4.1.9.9.46.1.3.1.1.2です。MIBをネットワーク管理システム(NMS)にロードしている場合は、OIDの代のオブジェクト名を使用使用します。代わりに、次のコマンドを発行します。
%snmpwalk -c public@1 crumpy vtpVlanState
注:ステップ2 ~ 6でオブジェクト名を使用することもできます。
ポートが VLAN1 に属すると考えた場合、MAC アドレス テーブルを取得するには、次のコマンドを発行します。
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.4.3.1.1 17.4.3.1.1.0.0.12.7.172.8 = Hex: 00 00 0C 07 AC 08 17.4.3.1.1.0.1.2.27.80.145 = Hex: 00 01 02 1B 50 91 17.4.3.1.1.0.1.3.72.77.90 = Hex: 00 01 03 48 4D 5A 17.4.3.1.1.0.1.3.72.221.191 = Hex: 00 01 03 48 DD BF ...
注:コミュニティ文字列の後に適切なVLAN番号を指定します。この例では、VLAN1 です。
このコマンドにより、VLAN 1 に属するすべてのポートで判明したすべての MAC アドレスがリストされます。
VLAN 1 のブリッジ ポート番号を設定するために、次のコマンドを発行します。
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.4.3.1.2 17.4.3.1.2.0.0.12.7.172.8 = 13 17.4.3.1.2.0.1.2.27.80.128 = 13 17.4.3.1.2.0.1.2.27.80.145 = 13 17.4.3.1.2.0.1.2.163.145.225 = 13 ...
注:VLAN 1はdot1dTpFdbPort、.1.3.6.1.2.1.17.4.3.1.2です。
ブリッジ ポートを ifIndex、OID .1.3.6.1.2.1.2.2.1.1 にマップするために、次のコマンドを発行します。
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.1.4.1.2 17.1.4.1.2.13 = 2 17.1.4.1.2.14 = 3 17.1.4.1.2.15 = 4 17.1.4.1.2.16 = 5
このコマンドは、OID が .1.3.6.1.2.1.17.1.4.1.2 である dot1dBasePortIfIndex を照会します。
ifIndex 値を正しいポート名に関連付けるには、ifName を指定して walk コマンドを使用します。
次のコマンドを実行します。
注:ifNameにはOID.1.3.6.1.2.1.31.1.1.1.1が含まれています。
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.31.1.1.1.1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.1 = VL1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = Fa0/1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.3 = Fa0/2 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.4 = Fa0/3 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.5 = Fa0/4 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.6 = Fa0/5 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.7 = Fa0/6 ...
アドレスが判明したポートに MAC アドレスをリンクします。
ステップ 1 から、MAC アドレスが次のように判明します。
17.4.3.1.1.0.0.12.7.172.8 = Hex: 00 00 0C 07 AC 08
ステップ 2 から、ブリッジ ポートにより、MAC アドレスがブリッジ ポート番号 13 に属することがわかります。
17.4.3.1.2.0.0.12.7.172.8 = 13
ステップ 3 から、ブリッジ ポート番号 13 の ifIndex 番号が 2 であることが判明します。
17.1.4.1.2.13 = 2
ステップ 4 から、ifIndex 2 はファースト イーサネット 0/1 ポートに対応していることがわかります。
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = Fa0/1
MAC アドレス 00 00 0 C 07 AC 08 が、ポート Fa0/1 で判明しています。
この結論を、以下の出力と比較します。
CatOS スイッチの show cam dynamic コマンド
Cisco IOS ソフトウェア スイッチの show mac コマンド
次に出力例を示します。
crumpy# show mac Dynamic Address Count: 58 Secure Address Count: 2 Static Address (User-defined) Count: 0 System Self Address Count: 51 Total MAC addresses: 111 Maximum MAC addresses: 8192 Non-static Address Table: Destination Address Address Type VLAN Destination Port ------------------- ------------ ---- ------------------- 0000.0c07.ac08 Dynamic 1 FastEthernet0/1 0001.021b.5091 Dynamic 1 FastEthernet0/1 0001.0348.4d5a Dynamic 1 FastEthernet0/1 0001.0348.ddbf Dynamic 1 FastEthernet0/1 0001.972d.dfae Dynamic 1 FastEthernet0/1 0002.55c6.cfe7 Dynamic 1 FastEthernet0/1 0002.7d61.d400 Dynamic 1 FastEthernet0/1 …