Uso de SNMP para recuperar las tablas ARP y de direcciones mac de un conmutador

33

Me gustaría obtener tablas ARP de un switch a un servidor syslog-ng que se ha configurado en Ubuntu Server 12.04 LTS. He leído sobre SNMP y sé que el servidor actuará como administrador y el conmutador como agente. Tengo detalles sobre dónde está contenida la MIB, y debo usar el comando

snmpwalk -v2c -c <community> <SwitchIP> .1.3.6.1.2.1.17.4.3.1.2

Quiero que las tablas arp resultantes se dirijan a mi servidor.

Mi problema es que no sé exactamente dónde ejecutar el comando o guardar la salida en un archivo.

sosytee
fuente
Hola, agregar información a una base de datos está fuera de tema ... Super User es un buen lugar para preguntar si necesita ayuda para modificar una base de datos. Si no le importa eliminar esa parte de la pregunta, podemos volver a abrirla.
Mike Pennington
He modificado mi pregunta
sosytee
¿Qué quiere decir con "colocar las tablas ARP en el servidor"?
Mike Pennington
El conmutador generará las tablas Arp, pero quiero que se vean desde el servidor
sosytee
¿Qué pasa si le dijimos cómo ponerlos en un archivo de texto ... está bien?
Mike Pennington

Respuestas:

38

Parece haber una pequeña confusión ... está preguntando acerca de las tablas ARP y está utilizando OID .1.3.6.1.2.1.17.4.3.1.2; sin embargo, ese OID en realidad es para la tabla de direcciones mac en el conmutador.

Supongo que sabe cómo iniciar sesión en su servidor Ubuntu, y que NET-SNMPestá instalado ... avíseme si necesita punteros para hacerlo (consulte esta pregunta para obtener sugerencias sobre cómo cargar MIB en Linux ). Algunos de mis ejemplos suponen que tiene las MIB cargadas en su servidor ... solo necesita eliminar la -m <mib-name>opción en los comandos si no tiene las MIB cargadas localmente.

Me disculpo de antemano por la longitud de esta respuesta ... Desearía que la encuesta con SNMP no fuera tan complicada ...

Sondeo de la tabla de direcciones mac:

Si realmente desea la tabla de direcciones mac del conmutador, recuerde que debe cambiar la cadena de comunidad con la que realiza la encuesta ... debe tener la forma de <commity@vlan>... cada vlan que encuesta necesita una comunidad diferente.

En mi ejemplo a continuación, el conmutador en 172.16.1.210 está configurado con snmp-server community public ro, y estoy sondeando la tabla de direcciones mac en vlan-10 con dot1dTpFdbPort de BRIDGE-MIB .

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public@10 -OXsq 172.16.1.210 \
  .1.3.6.1.2.1.17.4.3.1.2
dot1dTpFdbPort[0:6:53:fe:39:e0] 52
dot1dTpFdbPort[0:1d:a1:cd:53:46] 52
dot1dTpFdbPort[0:30:1b:bc:a7:d7] 52
dot1dTpFdbPort[0:80:c8:0:0:0] 52
dot1dTpFdbPort[38:ea:a7:6d:2e:8e] 52
dot1dTpFdbPort[80:ee:73:2f:b:40] 52
[mpenning@tsunami ~]$

En el resultado anterior, 52 es el valor de dot1dBasePort, que es un número que la MIB usa para indexar la tabla dot1dTp. Para traducir eso en un nombre de interfaz normal, debe asignarlo a un ifName ... BRIDGE-MIB lo hace con dot1dBasePortIfIndex ...

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public@10 -m BRIDGE-MIB 172.16.1.210 \
  .1.3.6.1.2.1.17.1.4.1.2
BRIDGE-MIB::dot1dBasePortIfIndex.52 = INTEGER: 10048
[mpenning@tsunami ~]$
[mpenning@tsunami ~]$ snmpget -v 2c -c public 172.16.1.210 ifName.10048
IF-MIB::ifName.10048 = STRING: Fa0/48
[mpenning@tsunami ~]$

Por lo tanto, sabemos que todas las direcciones MAC en este conmutador se aprendieron a través de FastEthernet 0/48 en vlan-10.

Sondeo de los Vlans activos:

Si no está seguro de qué vlans sondear en un conmutador, puede obtener esa información .1.3.6.1.4.1.9.9.46.1.3.1.1.2, que es vtpVlanState en el CISCO-VTP-MIB ...

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq -m CISCO-VTP-MIB 172.16.1.210 \
   .1.3.6.1.4.1.9.9.46.1.3.1.1.2
vtpVlanState[1][1] operational
vtpVlanState[1][10] operational
vtpVlanState[1][1002] operational
vtpVlanState[1][1003] operational
vtpVlanState[1][1004] operational
vtpVlanState[1][1005] operational
[mpenning@tsunami ~]$

Tenga en cuenta que los Vlans 1002-1005 son Cisco Vlans internos que no debe sondear.

Sondeo de la tabla ARP

Si realmente quiere la tabla ARP del switch, entonces necesita sondear en PhysAddress ...

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq  172.16.1.210 \
  .1.3.6.1.2.1.3.1.1.2
atPhysAddress[10][1.172.16.1.5] "80 EE 73 2F 0B 40 "
atPhysAddress[10][1.172.16.1.25] "38 EA A7 6D 2E 8E "
atPhysAddress[10][1.172.16.1.32] "BC 51 FE 50 16 F8 "
atPhysAddress[10][1.172.16.1.200] "00 06 53 FE 39 E0 "
atPhysAddress[10][1.172.16.1.210] "00 18 BA 51 5B 41 "
[mpenning@tsunami ~]$

Guardar la salida del comando en un archivo

Estamos profundizando en áreas que están fuera del alcance normal de este sitio, pero para guardar la tabla ARP anterior en un archivo /tmp/S01_ARP.txt, la agregaría > /tmp/S01_ARP.txtal final de lo snmpbulkwalkanterior ...

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq  172.16.1.210 \
      .1.3.6.1.2.1.3.1.1.2 > /tmp/S01_ARP.txt
[mpenning@tsunami ~]$ cat /tmp/S01_ARP.txt
atPhysAddress[10][1.172.16.1.5] "80 EE 73 2F 0B 40 "
atPhysAddress[10][1.172.16.1.25] "38 EA A7 6D 2E 8E "
atPhysAddress[10][1.172.16.1.32] "BC 51 FE 50 16 F8 "
atPhysAddress[10][1.172.16.1.200] "00 06 53 FE 39 E0 "
atPhysAddress[10][1.172.16.1.210] "00 18 BA 51 5B 41 "
[mpenning@tsunami ~]$

Como puede ver arriba, puede usar catLinux para obtener todos los resultados de un archivo de texto. NOTA: Algunas distribuciones de Linux (ejem ... CentOS) limpian el /tmpdirectorio mensualmente. Debe usar su HOMEdirectorio en Linux para almacenar el archivo. No recuerdo la limpieza de Ubuntu /tmp, pero para estar seguro evitaría almacenar cosas allí.

Notas varias sobre SNMP ...

Si no ha cargado todas las MIB de Cisco en su máquina Ubuntu, entonces debe evitar usar las -m <mib-name>banderas en los snmpbulkwalkcomandos. Cargar MIB le permite sondear con un nombre OID, en lugar del número de puntos largos ...


Informacion de referencia:

Incluyo algunos comandos show del switch, en caso de que tenga preguntas sobre la CLI para los comandos SNMP anteriores ...

S01#sh ver | i IOS
Cisco IOS Software, C3560 Software (C3560-IPBASEK9-M), Version 12.2(37)SE, RELEASE SOFTWARE (fc2)
S01#
S01#sh mac address-table dynamic
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    0006.53fe.39e0    DYNAMIC     Fa0/48
  10    001d.a1cd.5346    DYNAMIC     Fa0/48
  10    0030.1bbc.a7d7    DYNAMIC     Fa0/48
  10    0080.c800.0000    DYNAMIC     Fa0/48
  10    38ea.a76d.2e8e    DYNAMIC     Fa0/48
  10    80ee.732f.0b40    DYNAMIC     Fa0/48
Total Mac Addresses for this criterion: 6
S01#
S01#sh arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  172.16.1.210            -   0018.ba51.5b41  ARPA   Vlan10
Internet  172.16.1.200            0   0006.53fe.39e0  ARPA   Vlan10
Internet  172.16.1.32             0   bc51.fe50.16f8  ARPA   Vlan10
Internet  172.16.1.25             0   38ea.a76d.2e8e  ARPA   Vlan10
Internet  172.16.1.5              1   80ee.732f.0b40  ARPA   Vlan10
S01#
Mike Pennington
fuente
la respuesta fue útil, me gustaría saber el significado de -OXsq justo antes de la IP adress
sosytee
1
compruebe man snmpcmdsi está en un host Linux y tiene instalado Net-SNMP. De lo contrario, puede encontrar esta información aquí: net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen
@MikePennington: ¿Puedes comentar sobre los OID ipNetToMediaPhysAddress y ifPhysAddress? ¿Específicamente la diferencia semántica entre estas tablas y atPhysAddress?
mormegil
Además de lo anterior, puede instalar netDB en ese servidor Ubuntu y obtener más visibilidad en las tablas ARP de varios dispositivos. netdbtracking.sourceforge.net
Kunal