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.


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#

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.