Utilizzo di SNMP per recuperare le tabelle ARP e mac-address da uno switch


33

Vorrei ottenere tabelle ARP da uno switch a un server syslog-ng che è stato impostato su Ubuntu Server 12.04 LTS. Ho letto di SNMP e so che il server fungerà da manager e lo switch da agente. Ho dettagli su dove è contenuto il MIB e devo usare il comando

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

Voglio che le tabelle ARP risultanti siano indirizzate a un mio server.

Il mio problema è che non so esattamente dove eseguire il comando o salvare l'output in un file.


Salve, l'aggiunta di informazioni a un database è fuori tema ... Super User è un buon posto per chiedere se hai bisogno di aiuto per modificare un database. Se non ti dispiace eliminare quella parte della domanda, possiamo riaprirla.
Mike Pennington,

Ho modificato la mia domanda
sosytee

Cosa intendi con "colloca le tabelle ARP nel server"?
Mike Pennington,

Le tabelle Arp verranno generate dallo switch, ma le voglio visualizzate dal server
sosytee,

E se ti dicessimo come inserirli in un file di testo ... va bene?
Mike Pennington,

Risposte:


38

Sembra esserci un po 'di confusione ... stai chiedendo delle tabelle ARP e stai usando OID .1.3.6.1.2.1.17.4.3.1.2; tuttavia, l'OID è effettivamente per la tabella degli indirizzi mac nello switch.

Suppongo che tu sappia come accedere al tuo server Ubuntu e che NET-SNMPsia installato ... per favore fammi sapere se hai bisogno di puntatori per farlo (vedi questa domanda per suggerimenti sul caricamento dei MIB in Linux ). Alcuni dei miei esempi suppongono che tu abbia i MIB caricati sul tuo server ... devi solo rimuovere l' -m <mib-name>opzione nei comandi se non hai i MIB caricati localmente.

Mi scuso in anticipo per la lunghezza di questa risposta ... Vorrei che il sondaggio con SNMP non fosse così complicato ...

Polling della tabella degli indirizzi mac:

Se vuoi davvero la tabella degli indirizzi mac dallo switch, ricorda che devi cambiare la stringa della community con cui esegui il polling ... dovrebbe essere sotto forma di <commity@vlan>... ogni vlan del sondaggio ha bisogno di una community diversa.

Nel mio esempio di seguito, l'interruttore con 172.16.1.210 è configurato con snmp-server community public roe sto eseguendo il polling della tabella degli indirizzi mac in vlan-10 con dot1dTpFdbPort da 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 ~]$

Nell'output sopra, 52 è il valore di dot1dBasePort, che è un numero utilizzato dal MIB per indicizzare la tabella dot1dTp. Per tradurlo in un normale nome di interfaccia, è necessario mapparlo su un ifName ... BRIDGE-MIB lo fa 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 ~]$

Quindi sappiamo che tutti gli indirizzi mac su questo switch sono stati appresi tramite FastEthernet 0/48 in vlan-10.

Polling dei Vlan attivi:

Se non sei sicuro di quali vlan eseguire il polling su uno switch, puoi ottenere quelle informazioni .1.3.6.1.4.1.9.9.46.1.3.1.1.2, che è vtpVlanState in 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 ~]$

Tieni presente che i Vlans 1002-1005 sono Cisco Vlans interni che non dovresti effettuare il polling.

Polling della tabella ARP

Se desideri davvero la tabella ARP dallo switch, devi eseguire il polling su 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 ~]$

Salvataggio dell'output del comando in un file

Stiamo analizzando le aree che vanno al di fuori del normale ambito di questo sito, ma per salvare la tabella ARP sopra in un file /tmp/S01_ARP.txt, aggiungeresti > /tmp/S01_ARP.txtalla fine di quanto snmpbulkwalksopra ...

[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 ~]$

Come vedi sopra, puoi usare catin Linux per ottenere tutto l'output da un file di testo. NOTA: alcune distribuzioni di Linux (ahem ... CentOS) ripuliscono la /tmpdirectory su base mensile. Dovresti usare la tua HOMEdirectory in linux per archiviare il file. Non ricordo che Ubuntu abbia ripulito /tmp, ma per sicurezza eviterei di conservare le cose lì.

Note varie su SNMP ...

Se non hai caricato tutti i MIB di Cisco sul tuo computer Ubuntu, allora dovresti evitare di usare i -m <mib-name>flag nei snmpbulkwalkcomandi. Il caricamento di MIB consente di eseguire il polling con un nome OID, anziché il numero con un punto lungo ...


Informazioni di riferimento:

Sto includendo alcuni comandi show dallo switch, nel caso abbiate domande sulla CLI per i comandi SNMP sopra ...

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#

la risposta è stata utile, vorrei sapere il significato di -OXsq poco prima dell'indirizzo IP
sosytee

1
controlla man snmpcmdse sei su un host Linux e hai Net-SNMP installato. Altrimenti puoi trovare queste informazioni qui: net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen

@MikePennington: puoi commentare gli OID ipNetToMediaPhysAddress e ifPhysAddress? In particolare la differenza semantica tra queste tabelle e atPhysAddress?
mormegil,

Oltre a quanto sopra, è possibile installare netDB su quel server Ubuntu e ottenere maggiore visibilità sulle tabelle ARP di diversi dispositivi. netdbtracking.sourceforge.net
Kunal,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.