Использование SNMP для извлечения таблиц ARP и mac-address из коммутатора

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
источник
Привет, добавление информации в базу данных не по теме ... Super User - хорошее место, чтобы спросить, нужна ли вам помощь в изменении базы данных. Если вы не возражаете удалить эту часть вопроса, мы можем открыть ее снова.
Майк Пеннингтон
Я изменил свой вопрос
sosytee
Что вы подразумеваете под "помещением таблиц ARP в сервер"?
Майк Пеннингтон
Таблицы Arp будут генерироваться коммутатором, но я хочу, чтобы они просматривались с сервера
sosytee
Что если мы скажем вам, как поместить их в текстовый файл ... это нормально?
Майк Пеннингтон

Ответы:

38

Кажется, есть небольшая путаница ... вы спрашиваете о таблицах ARP, и вы используете OID .1.3.6.1.2.1.17.4.3.1.2; однако, этот OID фактически предназначен для таблицы mac-address в коммутаторе.

Я предполагаю, что вы знаете, как войти на свой сервер Ubuntu, и NET-SNMPон установлен ... пожалуйста, дайте мне знать, если вам нужны указатели для этого (см. Этот вопрос для подсказок о загрузке MIB в Linux ). В некоторых моих примерах предполагается, что на вашем сервере загружены MIB ... вам просто нужно удалить -m <mib-name>опцию в командах, если у вас нет загруженных MIB локально.

Я заранее прошу прощения за длину этого ответа ... Я хотел бы, чтобы опрос с SNMP не был таким сложным ...

Опрос таблицы MAC-адресов:

Если вам действительно нужна таблица mac-address от коммутатора, помните, что вам нужно изменить строку сообщества, с которой вы опрашиваете ... она должна быть в форме <commity@vlan>... каждого опрашиваемого vlan требует отдельного сообщества.

В моем примере ниже коммутатор на 172.16.1.210 настроен с snmp-server community public ro, и я опрашиваю таблицу mac-address в 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.

Опрос активных Vlans:

Если вы не уверены, какие vlans опрашивать на коммутаторе, вы можете получить эту информацию .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 ~]$

Помните, что Vlan 1002-1005 являются внутренними Vlan 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-
адресом
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
Кунал,