Utilisation de SNMP pour récupérer les tables ARP et adresses MAC d'un commutateur

33

J'aimerais obtenir des tables ARP d'un commutateur vers un serveur syslog-ng qui a été configuré sur Ubuntu Server 12.04 LTS. J'ai lu sur SNMP et je sais que le serveur agira en tant que gestionnaire et le commutateur en tant qu'agent. J'ai des détails sur l'emplacement de la base MIB et je dois utiliser la commande

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

Je veux que les tables d'arp résultantes soient dirigées vers un mon serveur.

Mon problème est que je ne sais pas exactement où exécuter la commande ou enregistrer la sortie dans un fichier.

sosytee
la source
Bonjour, l'ajout d'informations à une base de données est hors sujet ... Le super utilisateur est un bon endroit pour demander si vous avez besoin d'aide pour modifier une base de données. Si cela ne vous dérange pas de supprimer cette partie de la question, nous pouvons la rouvrir.
Mike Pennington
J'ai modifié ma question
sosytee
Qu'entendez-vous par "placer les tables ARP sur le serveur"?
Mike Pennington
Les tables Arp seront générées par le commutateur, mais je veux les voir depuis le serveur
sosytee
Et si on vous disait comment les mettre dans un fichier texte ... est-ce que ça va?
Mike Pennington

Réponses:

38

Il semble y avoir un peu de confusion ... vous parlez des tables ARP et vous utilisez des OID .1.3.6.1.2.1.17.4.3.1.2; Cependant, cet OID est en réalité pour la table des adresses mac du commutateur.

Je suppose que vous savez comment vous connecter à votre serveur Ubuntu et que celui-ci NET-SNMPest installé ... s'il vous plaît laissez-moi savoir si vous avez besoin de pointeurs pour le faire (voir cette question pour des astuces sur le chargement de MIB sous Linux ). Certains de mes exemples supposent que les bases MIB sont chargées sur votre serveur ... il vous suffit de supprimer l' -m <mib-name>option des commandes si les bases MIB ne sont pas chargées localement.

Je m'excuse par avance pour la longueur de cette réponse ... J'aimerais que les sondages avec SNMP ne soient pas aussi compliqués ...

Interroger la table des adresses MAC:

Si vous voulez vraiment la table des adresses mac du commutateur, souvenez-vous que vous devez changer la chaîne de communauté avec laquelle vous interrogez ... elle devrait se présenter sous la forme <commity@vlan>... chaque vlan que vous interrogez a besoin d'une communauté différente.

Dans mon exemple ci-dessous, le commutateur 172.16.1.210 est configuré avec snmp-server community public ro, et j'interroge la table des adresses mac dans vlan-10 avec 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 ~]$

Dans la sortie ci-dessus, 52 est la valeur de dot1dBasePort, qui est un nombre que la MIB utilise pour indexer la table dot1dTp. Pour traduire cela en un nom d'interface normal, vous devez mapper cela sur un ifName ... BRIDGE-MIB le fait avec 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 ~]$

Ainsi, nous savons que toutes les adresses MAC de ce commutateur ont été apprises via FastEthernet 0/48 dans vlan-10.

Interroger les Vlans actifs:

Si vous ne savez pas exactement quels réseaux virtuels interroger sur un commutateur, vous pouvez obtenir ces informations .1.3.6.1.4.1.9.9.46.1.3.1.1.2, à savoir vtpVlanState dans la base de données 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 ~]$

N'oubliez pas que les réseaux locaux virtuels 1002-1005 sont des réseaux locaux que vous ne devriez pas interroger.

Interroger la table ARP

Si vous voulez vraiment la table ARP du commutateur, vous devez interroger atPhysAddress ...

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

Enregistrement du résultat de la commande dans un fichier

Nous explorons des domaines qui sortent du cadre normal de ce site, mais pour enregistrer le tableau ARP ci-dessus dans un fichier /tmp/S01_ARP.txt, vous ajouteriez > /tmp/S01_ARP.txtà la fin de ce qui snmpbulkwalkprécède ...

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

Comme vous le voyez ci-dessus, vous pouvez utiliser catLinux pour obtenir toutes les sorties d'un fichier texte. NOTE: Certaines distributions linux (ahem ... CentOS) nettoient le /tmprépertoire tous les mois. Vous devriez utiliser votre HOMErépertoire sous Linux pour stocker le fichier. Je ne me souviens pas d'Ubuntu en train de nettoyer /tmp, mais par sécurité, j'éviterais de stocker des choses là-bas.

Notes diverses sur SNMP ...

Si vous n'avez pas chargé toutes les bases MIB de Cisco sur votre machine Ubuntu, évitez d'utiliser les -m <mib-name>indicateurs dans les snmpbulkwalkcommandes. Le chargement de MIB vous permet d’interroger avec un nom d’OID au lieu du numéro en long pointillé ...


Informations de référence:

J'inclus certaines commandes show du commutateur, au cas où vous auriez des questions à propos de la CLI pour les commandes SNMP ci-dessus ...

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
la source
la réponse était utile, je voudrais savoir le sens de -OXsq juste avant l'adresse IP
sosytee
1
vérifiez man snmpcmdsi vous êtes sur un hôte Linux et que Net-SNMP est installé. Sinon, vous pouvez trouver cette information ici: net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen
@ MikePennington: Pouvez-vous commenter les OID ipNetToMediaPhysAddress et ifPhysAddress? Plus précisément, la différence sémantique entre ces tables et atPhysAddress?
Mormegil
En plus de ce qui précède, vous pouvez installer netDB sur ce serveur Ubuntu et obtenir plus de visibilité sur les tables ARP de plusieurs périphériques. netdbtracking.sourceforge.net
Kunal