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

Я хотел бы получить таблицы 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 были направлены на мой сервер.

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

31 голос | спросил sosytee 21 AM000000110000004631 2013, 11:55:46

1 ответ


34

Кажется, есть немного путаницы ... вы спрашиваете о таблицах 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-address:

Если вам действительно нужна таблица mac-address от коммутатора, помните, что вам нужно изменить строку сообщества, которую вы опросили, ... она должна быть в виде <[email protected]> ... каждый опрос vlan требует другого сообщества.

В моем примере ниже переключатель 172.16.1.210 настроен с помощью snmp-server community public ro, и я обрабатываю таблицу mac-address в vlan-10 с помощью dot1dTpFdbPort из BRIDGE-MIB .

[[email protected] ~]$ snmpbulkwalk -v 2c -c [email protected] -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
[[email protected] ~]$

В вышеприведенном выводе 52 является значением dot1dBasePort, который является номером, который MIB использует для индексации таблицы dot1dTp. Чтобы перевести это в обычное имя интерфейса, вы должны сопоставить это с именем ifName ... BRIDGE-MIB делает это с dot1dBasePortIfIndex ...

[[email protected] ~]$ snmpbulkwalk -v 2c -c [email protected] -m BRIDGE-MIB 172.16.1.210 \
  .1.3.6.1.2.1.17.1.4.1.2
BRIDGE-MIB::dot1dBasePortIfIndex.52 = INTEGER: 10048
[[email protected] ~]$
[[email protected] ~]$ snmpget -v 2c -c public 172.16.1.210 ifName.10048
IF-MIB::ifName.10048 = STRING: Fa0/48
[[email protected] ~]$

Таким образом, мы знаем, что все 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 ...

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

Имейте в виду, что Vlans 1002-1005 внутренние Cisco Vlans , которые вы не должны опросить.

Опрос таблицы ARP

Если вам действительно нужна таблица ARP от коммутатора, вам необходимо опросить atPhysAddress ...

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

Сохранение вывода команды в файл

Мы разбираемся в областях, выходящих за пределы обычной области этого сайта, но чтобы сохранить таблицу ARP выше в файле в /tmp/S01_ARP.txt, вы добавите >/tmp/S01_ARP.txt в конец > /tmp/S01_ARP.txt выше ...

snmpbulkwalk

Как вы видите выше, вы можете использовать [[email protected] ~]$ snmpbulkwalk -v 2c -c public -OXsq 172.16.1.210 \ .1.3.6.1.2.1.3.1.1.2 > /tmp/S01_ARP.txt [[email protected] ~]$ 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 " [[email protected] ~]$ в linux для получения всего вывода из текстового файла. ПРИМЕЧАНИЕ. Некоторые дистрибутивы Linux (ах ... CentOS) ежемесячно очищают каталог cat. Вы должны использовать свой /tmp каталог в linux для хранения файла. Я не помню, как Ubuntu очищал HOME, но чтобы быть в безопасности, я бы избегал хранить там вещи.

Разное о SNMP ...

Если вы не загрузили все MIB Cisco на свой компьютер Ubuntu, вам следует избегать использования флагов /tmp в командах -m <mib-name> , Загрузка MIB позволяет вам опросить имя OID вместо длинного точечного номера ...


Справочная информация:

Я включаю некоторые команды show от коммутатора, если у вас есть вопросы о CLI для команд SNMP выше ...

snmpbulkwalk
ответил Mike Pennington 21 PM00000010000001331 2013, 13:36:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132