Verwenden von SNMP zum Abrufen der ARP- und Mac-Adresstabellen von einem Switch

33

Ich möchte ARP-Tabellen von einem Switch auf einen Syslog-ng-Server erhalten, der auf Ubuntu Server 12.04 LTS eingerichtet wurde. Ich habe über SNMP gelesen und weiß, dass der Server als Manager und der Switch als Agent fungieren wird. Ich habe Details darüber, wo die MIB enthalten ist, und ich muss den Befehl verwenden

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

Ich möchte, dass die resultierenden Arptabellen auf meinen Server geleitet werden.

Mein Problem ist, dass ich nicht genau weiß, wo ich den Befehl ausführen oder die Ausgabe in einer Datei speichern soll.

Sosytee
quelle
Hallo, das Hinzufügen von Informationen zu einer Datenbank ist nicht zum Thema ... Superuser ist ein guter Ort, um zu fragen, ob Sie Hilfe beim Ändern einer Datenbank benötigen. Wenn es Ihnen nichts ausmacht, diesen Teil der Frage zu löschen, können wir ihn erneut öffnen.
Mike Pennington
Ich habe meine Frage geändert
Sosytee
Was meinen Sie mit "Platzieren der ARP-Tabellen auf dem Server"?
Mike Pennington
Die Arp-Tabellen werden vom Switch generiert, aber ich möchte, dass sie vom Server
angezeigt
Was wäre, wenn wir dir sagen würden, wie man sie in eine Textdatei schreibt ... ist das in Ordnung?
Mike Pennington

Antworten:

38

Es scheint ein wenig verwirrend zu sein ... Sie fragen nach ARP-Tabellen und verwenden OID .1.3.6.1.2.1.17.4.3.1.2. Diese OID gilt jedoch tatsächlich für die Mac-Adresstabelle im Switch.

Ich gehe davon aus, dass Sie wissen, wie man sich auf Ihrem Ubuntu-Server anmeldet, und das NET-SNMPist installiert. Bitte lassen Sie mich wissen, wenn Sie dazu Hinweise benötigen (siehe diese Frage für Hinweise zum Laden von MIBs unter Linux ). In einigen meiner Beispiele wird davon ausgegangen, dass die MIBs auf Ihrem Server geladen sind. Sie müssen nur die -m <mib-name>Option in den Befehlen entfernen, wenn die MIBs nicht lokal geladen sind.

Ich entschuldige mich im Voraus für die Länge dieser Antwort ... Ich wünschte, die Abfrage mit SNMP wäre nicht so kompliziert ...

Abfrage der Mac-Adressentabelle:

Wenn Sie wirklich möchten, dass die Mac-Adressentabelle vom Switch stammt, müssen Sie die Community-Zeichenfolge ändern, mit der Sie eine Abfrage durchführen. Sie sollte in Form von <commity@vlan>... jeder von Ihnen abgefragten VLAN-Datei eine andere Community benötigen.

In meinem Beispiel unten ist der Switch unter 172.16.1.210 mit konfiguriert snmp-server community public ro, und ich rufe die Mac-Adresstabelle in vlan-10 mit dot1dTpFdbPort von BRIDGE-MIB ab .

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

In der obigen Ausgabe ist 52 der Wert von. dot1dBasePortHierbei handelt es sich um eine Zahl, mit der die MIB die dot1dTp-Tabelle indiziert. Um das in einen normalen Schnittstellennamen zu übersetzen, müssen Sie das einem ifName zuordnen ... BRIDGE-MIB macht das mit 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 ~]$

Somit wissen wir, dass alle Mac-Adressen auf diesem Switch über FastEthernet 0/48 in vlan-10 gelernt wurden.

Abfrage der aktiven Vlans:

Wenn Sie sich nicht sicher sind, welche vlans auf einem Switch abgefragt werden sollen, können Sie diese Informationen abrufen. Dies.1.3.6.1.4.1.9.9.46.1.3.1.1.2 ist vtpVlanState in der 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 ~]$

Beachten Sie, dass Vlans 1002-1005 interne Cisco Vlans sind , die Sie nicht abrufen sollten.

Abfrage der ARP-Tabelle

Wenn Sie die ARP-Tabelle wirklich vom Switch erhalten möchten, müssen Sie atPhysAddress abfragen ...

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

Speichern der Befehlsausgabe in eine Datei

Wir beschäftigen uns mit Bereichen, die außerhalb des normalen Bereichs dieser Website liegen. Um die obige ARP-Tabelle jedoch in einer Datei zu speichern /tmp/S01_ARP.txt, fügen Sie > /tmp/S01_ARP.txtsie am Ende der snmpbulkwalkobigen Tabelle hinzu.

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

Wie Sie oben sehen, können Sie unter catLinux die gesamte Ausgabe einer Textdatei abrufen. HINWEIS: Einige Linux-Distributionen (ahem ... CentOS) bereinigen das /tmpVerzeichnis monatlich. Sie sollten Ihr HOMEVerzeichnis unter Linux verwenden, um die Datei zu speichern. Ich erinnere mich nicht, dass Ubuntu aufgeräumt hat /tmp, aber um sicher zu gehen, würde ich es vermeiden, Dinge dort aufzubewahren.

Sonstige Hinweise zu SNMP ...

Wenn Sie nicht alle Cisco-MIBs auf Ihrem Ubuntu-Computer geladen haben, sollten Sie die Verwendung der -m <mib-name>Flags in den snmpbulkwalkBefehlen vermeiden . Wenn Sie MIBs laden, können Sie mit einem OID-Namen anstelle der langen gepunkteten Nummer abrufen ...


Referenzinformationen:

Ich füge einige show-Befehle vom Switch hinzu, falls Sie Fragen zur CLI für die oben genannten SNMP-Befehle haben ...

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
quelle
Die Antwort war nützlich, ich möchte die Bedeutung von -OXsq kurz vor der IP-Adresse wissen
Sosytee
1
Überprüfen man snmpcmdSie , ob Sie sich auf einem Linux-Host befinden und ob Net-SNMP installiert ist. Ansonsten finden Sie diese Informationen hier: net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen
@MikePennington: Können Sie die OIDs ipNetToMediaPhysAddress und ifPhysAddress kommentieren? Insbesondere der semantische Unterschied zwischen diesen Tabellen und atPhysAddress?
Mormegil
Darüber hinaus können Sie netDB auf diesem Ubuntu-Server installieren und die ARP-Tabellen mehrerer Geräte besser anzeigen. netdbtracking.sourceforge.net
Kunal