Ce document décrit comment employer le protocole de gestion de réseau simple (SNMP) pour obtenir le numéro de port sur un commutateur Cisco Catalyst duquel vous connaissez l'adresse MAC.
Les lecteurs de ce document devraient avoir connaissance des sujets suivants :
Comment obtenir des VLAN à partir d'un commutateur Catalyst avec l'utilisation de SNMP
Comment utiliser l'indexation des chaînes de communauté avec SNMP
Utilisation générale de la commande get SNMP et de la commande walk
Ce document s'applique aux commutateurs Catalyst qui exécutent un système d'exploitation Catalyst (CatOS) ou le logiciel Cisco IOS®. Le logiciel prend en charge le BRIDGE-MIB et le IF-MIB.
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
Catalyst 3524XL qui exécute le logiciel Cisco IOS Version 12.0(5)WC5a
Net-SNMP version 5.0.6
Remarque : Pour obtenir ce logiciel, reportez-vous à Net-SNMP .
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Pour plus d'informations sur la façon d'interroger la table CAM (Content-Addressable Memory), les VLAN et toutes les MIB associées, telles que CISCO-VTP-MIB et BRIDGE-MIB, reportez-vous à la section Background du document How To Get Dynamic CAM Entries (CAM Table) for Catalyst Switches Using SNMP.
.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 }
Complétez les étapes de cette section afin d'utiliser SNMP pour obtenir le numéro de port sur lequel une adresse MAC a été apprise. Considérez que le numéro de port se trouve dans VLAN1.
Remarque : dans les commandes de cette section :
public est la chaîne de communauté de lecture.
@1 est la partie VLAN 1 de la chaîne de communauté de lecture.
crumpy est le nom d'hôte du périphérique.
Remarque : Vous pouvez également utiliser l'adresse IP pour ce nom d'hôte.
Remarque : La section Conclusion utilise les valeurs qui apparaissent en italique dans le résultat de la commande.
Récupérez les VLAN. Utilisez la commande snmpwalk sur l'objet vtpVlanState (.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) ...
Note : Cette commande utilise l'indexation des chaînes de communauté. La commande utilise également vtpVlanState, qui a OID .1.3.6.1.4.1.9.9.46.1.3.1.1.2. Si vous avez chargé les MIB dans votre système de gestion de réseau (NMS), vous pouvez utiliser le nom de l'objet au lieu de l'OID. Émettez plutôt cette commande :
%snmpwalk -c public@1 crumpy vtpVlanState
Remarque : Vous pouvez également utiliser les noms d'objet des étapes 2 à 6.
Émettez cette commande afin d'obtenir la table d'adresses MAC en considérant que le port appartient à VLAN1 :
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 ...
Remarque : indiquez le numéro de VLAN approprié après la chaîne de communauté. Dans cet exemple, il s’agit de VLAN1.
La commande répertorie toutes les adresses MAC apprises sur tous les ports appartenant au VLAN 1.
Exécutez cette commande pour déterminer le numéro de port de pont pour 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 ...
Remarque : VLAN 1 est dot1dTpFdbPort , ou .1.3.6.1.2.1.17.4.3.1.2.
Exécutez cette commande pour mapper le port de pont sur le 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
Cette commande interroge le dot1dBasePortIfIndex, qui a OID .1.3.6.1.2.1.17.1.4.1.2.
Utilisez la commande walk avec ifName afin de corréler la valeur ifIndex avec un nom de port correct.
Émettez la commande suivante :
Remarque : Le ifName a l'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 ...
Liez une adresse MAC au port sur lequel l'adresse a été apprise.
À l’étape 1, l’adresse MAC est :
17.4.3.1.1.0.0.12.7.172.8 = Hex: 00 00 0C 07 AC 08
À l’étape 2, le port de pont indique que l’adresse MAC appartient au port de pont numéro 13 :
17.4.3.1.2.0.0.12.7.172.8 = 13
À partir de l'étape 3, le port de pont numéro 13 a ifIndex numéro 2 :
17.1.4.1.2.13 = 2
À l’étape 4, ifIndex 2 correspond au port Fast Ethernet 0/1 :
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = Fa0/1
L'adresse MAC 00 00 0C 07 AC 08 est apprise sur le port Fa0/1.
Comparez cette conclusion avec la sortie de :
La commande show cam dynamic pour les commutateurs CatOS
La commande show mac pour les commutateurs du logiciel Cisco IOS
Voici l'exemple de sortie :
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 …