Використання SNMP для отримання таблиць ARP та mac-адреси з комутатора


33

Я хотів би отримати таблиці ARP від ​​перемикання на сервер syslog-ng, який був налаштований на Ubuntu Server 12.04 LTS. Я читав про SNMP і знаю, що сервер буде виконувати функції менеджера, а комутатор - як агент. У мене є деталі щодо того, де міститься MIB, і я повинен використовувати команду

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

Я хочу, щоб отримані таблиці arp були спрямовані на мій сервер.

Моя проблема полягає в тому, що я не знаю, де саме запустити команду або зберегти вихідний файл.


Привіт, додавання інформації в базу даних поза темою ... Супер Користувач - це гарне місце, щоб запитати, чи потрібна вам допомога щодо зміни бази даних. Якщо ви не проти видалити цю частину питання, ми можемо її знову відкрити.
— Майк Пеннінгтон

Я змінив своє запитання
— sosytee

Що ви маєте на увазі під "розміщенням таблиць ARP на сервері"?
— Майк Пеннінгтон

Таблиці Arp будуть генеровані комутатором, але я хочу, щоб їх переглядали з сервера
— sosytee

Що робити, якщо ми сказали вам, як їх помістити в текстовий файл ... це нормально?
— Майк Пеннінгтон

Відповіді:


38

Здається, є невелика плутанина ... ви запитуєте про таблиці ARP, і ви використовуєте OID .1.3.6.1.2.1.17.4.3.1.2; однак, що OID насправді призначений для таблиці mac-адреси в комутаторі.

Я припускаю, що ви знаєте, як увійти на свій сервер Ubuntu, і NET-SNMPце встановлено ... Будь ласка, повідомте мені, чи потрібні вам покажчики для цього (див. Це питання для підказки щодо завантаження MIB в Linux ). Деякі з моїх прикладів припускають, що у вас на сервері завантажені MIB-файли ... вам просто потрібно видалити -m <mib-name>параметр з команд, якщо у вас MIB не завантажуються локально.

Я заздалегідь прошу вибачення за тривалість цієї відповіді ... Я б хотів, щоб опитування з SNMP було не таким складним ...

Опитування таблиці mac-адрес:

Якщо ви дійсно хочете таблицю mac-адреси з комутатора, то пам’ятайте, що ви повинні змінити рядок спільноти, з якою ви опитуєтесь ... це має бути у формі <commity@vlan>... кожен vlan, який ви опитуєте, потребує іншої спільноти.

У моєму прикладі нижче, перемикач на 172.16.1.210 налаштований з snmp-server community public ro, і я опитую таблицю mac-адреси у vlan-10 за допомогою dot1dTpFdbPort від 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 ~]$

У висновку вище 52 - це значення dot1dBasePort, яке є числом, яке MIB використовує для індексації таблиці dot1dTp. Щоб перевести це в звичайне ім'я інтерфейсу, ви повинні зіставити це з ifName ... BRIDGE-MIB робить це з 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 ~]$

Таким чином, ми знаємо, що всі mac-адреси на цьому комутаторі були вивчені через FastEthernet 0/48 в vlan-10.

Опитування активних власників:

Якщо ви не впевнені, які влани опитувати на комутаторі, ви можете отримати цю інформацію .1.3.6.1.4.1.9.9.46.1.3.1.1.2, яка є vtpVlanState в 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 ~]$

Майте на увазі, що Влани 1002-1005 є внутрішніми власниками Cisco, які ви не повинні опитувати.

Опитування таблиці ARP

Якщо ви дійсно хочете таблицю ARP з комутатора, тоді вам потрібно запитати на 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 ~]$

Збереження виводу команди у файл

Ми заглиблюємося в області, які виходять за рамки цього веб-сайту, але щоб зберегти таблицю ARP, звернену до файлу /tmp/S01_ARP.txt, ви додасте > /tmp/S01_ARP.txtв кінці snmpbulkwalkвище ...

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

Як ви бачите вище, ви можете використовувати catв Linux для отримання всього виводу з текстового файлу. ПРИМІТКА. Деякі дистрибутиви Linux (ах ... CentOS) очищають /tmpкаталог щомісяця. Ви повинні використовувати свій HOMEкаталог у Linux, щоб зберегти файл. Я не пам'ятаю прибирання Ubuntu /tmp, але щоб бути безпечним, я б уникав зберігати речі там.

Різні нотатки про SNMP ...

Якщо ви не завантажили всі MIB-адреси Cisco на свій апарат Ubuntu, вам слід уникати використання -m <mib-name>прапорів у snmpbulkwalkкомандах. Завантаження MIB дозволяє опитуватись із іменем OID замість довгого пунктирного числа ...


Довідкова інформація:

Я включаю кілька команд показу від комутатора, якщо у вас є питання щодо CLI для команд SNMP вище ...

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#

відповідь була корисною, я хотів би дізнатися значення -OXsq безпосередньо перед IP-адресою
— sosytee

1
перевірте, man snmpcmdчи перебуваєте ви на хості Linux і чи встановлено Net-SNMP. В іншому випадку ви можете знайти цю інформацію тут: net-snmp.sourceforge.net/docs/man/snmpcmd.html
— Джон Дженсен

@MikePennington: Чи можете ви коментувати OIDs ipNetToMediaPhysAddress та ifPhysAddress? Зокрема, семантична різниця між цими таблицями та atPhysAddress?
— mormegil

На додаток до вищезазначеного, ви можете встановити netDB на цьому сервері Ubuntu та отримати більшу видимість у таблицях ARP декількох пристроїв. netdbtracking.sourceforge.net
— Kunal
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.