Este documento descreve como usar o Simple Network Management Protocol (SNMP) para se obter o número da porta do switch Cisco Catalyst cujo endereço MAC você conhece.
Os leitores deste documento devem estar cientes destes tópicos:
Como obter VLANs de um switch Catalyst com o uso de SNMP
Como usar a indexação de string de comunidade com SNMP
Uso geral do comando SNMP get e walk
Este documento se aplica aos switches Catalyst que executam o Catalyst OS (CatOS) ou o Cisco IOS® Software. O software suporta o BRIDGE-MIB e o IF-MIB.
As informações neste documento são baseadas nestas versões de software e hardware:
Catalyst 3524XL que executa o Cisco IOS Software Release 12.0(5)WC5a
Net-SNMP versão 5.0.6
Observação: para obter esse software, consulte 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.
Para obter mais informações sobre como consultar a tabela de memória endereçável de conteúdo (CAM), VLANs e todos os MIBs relacionados, como o CISCO-VTP-MIB e o BRIDGE-MIB, consulte a seção Informações de Fundo do documento Como Obter Entradas CAM Dinâmicas (Tabela CAM) para Switches Catalyst Usando 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 }
Conclua as etapas nesta seção para usar o SNMP para obter o número da porta na qual um endereço MAC foi aprendido. Considere que o número da porta está em VLAN1.
Observação: nos comandos desta seção:
public é a string de comunidade lida.
@1 é a parte da VLAN 1 da série de comunidade lida.
crumpy é o nome do host do dispositivo.
Observação: você também pode usar o endereço IP para esse nome de host.
Observação: a seção Conclusão usa os valores que aparecem em itálico na saída do comando.
Recupere as VLANs. Use o comando snmpwalk no objeto 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) ...
Observação: este comando usa a indexação de string de comunidade. O comando também usa vtpVlanState, que tem OID .1.3.6.1.4.1.9.9.46.1.3.1.1.2. Se você carregou os MIBs no seu sistema de gerenciamento de rede (NMS), poderá usar o nome do objeto em vez do OID. Execute este comando em vez disso:
%snmpwalk -c public@1 crumpy vtpVlanState
Observação: você também pode usar os nomes dos objetos nas etapas 2 a 6.
Emita este comando para obter a tabela de endereços MAC considerando que a porta pertence à 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 ...
Observação: forneça o número de VLAN apropriado após a string de comunidade. Neste exemplo, é VLAN1.
O comando lista todos os endereços MAC que foram aprendidos em todas as portas que pertencem à VLAN 1.
Emita este comando para determinar o número da porta da bridge para a 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 ...
Observação: a VLAN 1 é dot1dTpFdbPort ou .1.3.6.1.2.1.17.4.3.1.2.
Emita este comando para mapear a porta da ponte para o 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
Este comando consulta o dot1dBasePortIfIndex, que tem o OID .1.3.6.1.2.1.17.1.4.1.2.
Use o comando walk com ifName para correlacionar o valor ifIndex com um nome de porta correto.
Emita este comando:
Observação: o ifName tem 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 ...
Vincule um endereço MAC à porta na qual o endereço foi aprendido.
No passo 1, o endereço MAC é:
17.4.3.1.1.0.0.12.7.172.8 = Hex: 00 00 0C 07 AC 08
Da Etapa 2, a porta da bridge informa que o endereço MAC pertence à porta da bridge número 13:
17.4.3.1.2.0.0.12.7.172.8 = 13
Da etapa 3, a porta de ligação número 13 tem ifIndex número 2:
17.1.4.1.2.13 = 2
No Passo 4, o ifIndex 2 corresponde à porta Fast Ethernet 0/1:
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = Fa0/1
O endereço MAC 00 00 0C 07 AC 08 é aprendido na porta Fa0/1.
Compare esta conclusão com a saída de:
O comando show cam dynamic para switches CatOS
O comando show mac para switches do software Cisco IOS
Aqui está o exemplo de saída:
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 …