Używanie SNMP do pobierania tablic adresów ARP i mac z przełącznika

33

Chciałbym uzyskać tabele ARP z przełącznika na serwer syslog-ng skonfigurowany na Ubuntu Server 12.04 LTS. Przeczytałem o SNMP i wiem, że serwer będzie działał jako menedżer, a przełącznik jako agent. Mam szczegółowe informacje na temat tego, gdzie znajduje się MIB i muszę użyć polecenia

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

Chcę, aby powstałe tabele arp były kierowane na mój serwer.

Mój problem polega na tym, że nie wiem, gdzie dokładnie uruchomić polecenie lub zapisać dane wyjściowe w pliku.

sosytee
źródło
Cześć, dodawanie informacji do bazy danych jest nie na temat ... Super Użytkownik to dobre miejsce, aby zapytać, czy potrzebujesz pomocy w modyfikacji bazy danych. Jeśli nie masz nic przeciwko usunięciu tej części pytania, możemy je ponownie otworzyć.
Mike Pennington,
Zmodyfikowałem swoje pytanie
sosytee,
Co rozumiesz przez „umieszczenie tabel ARP na serwerze”?
Mike Pennington,
Tabele Arp będą generowane przez przełącznik, ale chcę, aby były przeglądane z serwera
sosytee
Co jeśli powiedzieliśmy ci, jak umieścić je w pliku tekstowym ... czy to w porządku?
Mike Pennington,

Odpowiedzi:

38

Wydaje się, że jest trochę zamieszania ... pytasz o tabele ARP i używasz OID .1.3.6.1.2.1.17.4.3.1.2; jednak ten OID faktycznie dotyczy tablicy adresów mac w przełączniku.

Zakładam, że wiesz, jak zalogować się do serwera Ubuntu, który NET-SNMPjest zainstalowany ... proszę daj mi znać, jeśli potrzebujesz wskaźników do zrobienia tego (zobacz to pytanie, aby uzyskać wskazówki dotyczące ładowania MIB w systemie Linux ). Niektóre z moich przykładów zakładają, że MIB są załadowane na twój serwer ... wystarczy usunąć -m <mib-name>opcję w poleceniach, jeśli nie masz MIB załadowanych lokalnie.

Z góry przepraszam za długość tej odpowiedzi ... Szkoda, że ​​sondowanie za pomocą SNMP nie było tak skomplikowane ...

Sondowanie tabeli adresów MAC:

Jeśli naprawdę chcesz tablicy przełączników adresów MAC z przełącznika, pamiętaj, że musisz zmienić ciąg społeczności, z którym odpytujesz ... powinien mieć postać <commity@vlan>... każdy vlan, z którego odpytujesz, potrzebuje innej społeczności.

W moim przykładzie poniżej przełącznik w 172.16.1.210 jest skonfigurowany z snmp-server community public ro, a ja sonduję tablicę adresów mac w vlan-10 za pomocą dot1dTpFdbPort z 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 ~]$

Na powyższym wyjściu 52 jest wartością dot1dBasePort, która jest liczbą, której MIB używa do indeksowania tabeli dot1dTp. Aby przetłumaczyć to na normalną nazwę interfejsu, musisz odwzorować to na ifName ... BRIDGE-MIB robi to za pomocą 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 ~]$

Wiemy zatem, że wszystkie adresy mac na tym przełączniku zostały wyuczone przez FastEthernet 0/48 w vlan-10.

Odpytanie aktywnych sieci Vlans:

Jeśli nie masz pewności, z których sieci vlans odpytywać na przełączniku, możesz uzyskać te informacje .1.3.6.1.4.1.9.9.46.1.3.1.1.2, które są vtpVlanState w 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 ~]$

Należy pamiętać, że Vlans 1002-1005 to wewnętrzne sieci Cisco Vlans , których nie należy odpytywać.

Odpytywanie tabeli ARP

Jeśli naprawdę chcesz tabeli ARP z przełącznika, musisz sondować na 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 ~]$

Zapisywanie danych wyjściowych polecenia do pliku

Zagłębiamy się w obszary, które wykraczają poza normalny zakres tej witryny, ale aby zapisać powyższą tabelę ARP w pliku /tmp/S01_ARP.txt, dodaj > /tmp/S01_ARP.txtją na końcu snmpbulkwalkpowyższego ...

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

Jak widać powyżej, możesz użyć catw systemie Linux, aby uzyskać wszystkie dane wyjściowe z pliku tekstowego. UWAGA: Niektóre dystrybucje linuksa (ahem ... CentOS) usuwają /tmpkatalog co miesiąc. Powinieneś użyć swojego HOMEkatalogu w systemie Linux do przechowywania pliku. Nie pamiętam czyszczenia Ubuntu /tmp, ale dla bezpieczeństwa unikałbym przechowywania tam rzeczy.

Różne uwagi na temat SNMP ...

Jeśli nie załadowałeś wszystkich bibliotek MIB Cisco na maszynę Ubuntu, powinieneś unikać używania -m <mib-name>flag w snmpbulkwalkpoleceniach. Ładowanie MIB pozwala na sondowanie przy użyciu nazwy OID zamiast długiej kropkowanej liczby ...


Informacje referencyjne:

Uwzględniam niektóre polecenia show z przełącznika, na wypadek gdybyś miał pytania dotyczące CLI dla poleceń SNMP powyżej ...

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
źródło
odpowiedź była przydatna, chciałbym poznać znaczenie -OXsq tuż przed adresem ip
sosytee
1
sprawdź, man snmpcmdczy korzystasz z hosta Linux i masz zainstalowany Net-SNMP. W przeciwnym razie można znaleźć te informacje tutaj: net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen
@MikePennington: Czy możesz komentować identyfikatory OID ipNetToMediaPhysAddress i ifPhysAddress? W szczególności różnica semantyczna między tymi tabelami a adresem atPhysAddress?
mormegil
Oprócz powyższego możesz zainstalować netDB na tym serwerze Ubuntu i uzyskać lepszą widoczność na tablicach ARP kilku urządzeń. netdbtracking.sourceforge.net
Kunal