Перейти к содержимому
Калькуляторы

коллекция мак адресов на порту коммутатора

строили сеть как попало, не подписанные кабели втыкали в гирлянды неуправляемых коммутаторов доступа.

пришло время разгребать.

путь для решения - установить управляемый коммутатор, "засечь" все мак адреса, сделать соответствие адрес-порт и кабели подписать.

Ставлю управляемый коммутатор, который видит маки.

Очень хочется собрать все мак адреса на каждом порту. насколько понял встроенные утилиты показывают только АКТИВНЫЕ в настоящий момент адреса. подскажите куда копать, чтоб собрать базу порт-мак адрес.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Способ 1. Настроить port security(если есть такой функционал), каждую ночь(или раз в час, например) собирать маки.

Способ 2. Настроить отправку snmp трапов на событие link updown, ловить трап, как только трап пойман снимать маки с порта, потом через 10 секунд, потом через 100 секунд, через 300 и 1000 секунд(пока загрузят компьютер, пока оттуда придёт первый мак...)

Способ 3. Просто с интервалом N минут собирать маки со всех портов, складировать их в базу, потом писать нужные селекты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Способ 1. Настроить port security(если есть такой функционал), каждую ночь(или раз в час, например) собирать маки.

Способ 2. Настроить отправку snmp трапов на событие link updown, ловить трап, как только трап пойман снимать маки с порта, потом через 10 секунд, потом через 100 секунд, через 300 и 1000 секунд(пока загрузят компьютер, пока оттуда придёт первый мак...)

Способ 3. Просто с интервалом N минут собирать маки со всех портов, складировать их в базу, потом писать нужные селекты.

Способ 3. чем собирать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Утилитой snmpwalk, потом грепать, авкать и седить или использовать API для Perl/C/PHP (для php API самое слабенькое, но для сборки маков хватает).

 

Что за свитч у вас?(который управляемый)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

свичи длинки des 3026 3010g сisco 2950 лайткомы

для сбора можно будет одну модель "погонять" по всем проблемным домам

мм.. под виндой чего нить порекомендуете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас на perl написано по варианту 3, потому как работает практически для всех L2 коммутаторов. В итоге строится интерактивная карта (уровень отображения задается) через модуль PEAR::Image_GraphViz. Обновляется раз в 6 часов, этого достаточно.

 

для php API самое слабенькое, но для сборки маков хватает
Оно не слабое, оно вполне стандартное, но перебирать кучу свичей по очереди это ж сколько времени займет. Поточности там нет :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас на perl написано по варианту 3, потому как работает практически для всех L2 коммутаторов. В итоге строится интерактивная карта (уровень отображения задается) через модуль PEAR::Image_GraphViz. Обновляется раз в 6 часов, этого достаточно.

 

для php API самое слабенькое, но для сборки маков хватает
Оно не слабое, оно вполне стандартное, но перебирать кучу свичей по очереди это ж сколько времени займет. Поточности там нет :(

 

Оно слабое, нет возможности задания опций(отображать в численном виде или буквенном и прочего), нет bulk get, нет set на сразу несколько оидов. Это требуется редко и мало кому, поэтому и не реализовано

 

Проблему с поточностью я решаю запуская несколько php-скриптов одновременно башевских скриптом, первый обрабатывает хосты, номер которых равен 0 по модулю N, второй - 1 по модулю N и т.д. (где N-число одновременно запускаемых скриптов).

 

свичи длинки des 3026 3010g сisco 2950 лайткомы

для сбора можно будет одну модель "погонять" по всем проблемным домам

мм.. под виндой чего нить порекомендуете?

по длинку сюда http://webdev.dlink.ru/technical/faq_hub_switch_106.php

по cisco вам сюда http://www.cisco.com/en/US/tech/tk648/tk36...99.shtml#topic3

 

Под виндой есть тот же Perl/C/PHP и есть тот же самый snmpwalk(можно скачать .exe). Всё равно вам придётся писать/заказывать какой-то скриптик, под какую ОС не суть в данном случае

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Под виндой есть тот же Perl/C/PHP и есть тот же самый snmpwalk(можно скачать .exe). Всё равно вам придётся писать/заказывать какой-то скриптик, под какую ОС не суть в данном случае
когда-то на delphi писал.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну пишите на delphi, если найдёте к этому поделию компонент(вроде так называется?) для работы с snmp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас на perl написано по варианту 3, потому как работает практически для всех L2 коммутаторов. В итоге строится интерактивная карта (уровень отображения задается) через модуль PEAR::Image_GraphViz. Обновляется раз в 6 часов, этого достаточно.

 

для php API самое слабенькое, но для сборки маков хватает
Оно не слабое, оно вполне стандартное, но перебирать кучу свичей по очереди это ж сколько времени займет. Поточности там нет :(

 

Оно слабое, нет возможности задания опций(отображать в численном виде или буквенном и прочего), нет bulk get, нет set на сразу несколько оидов. Это требуется редко и мало кому, поэтому и не реализовано

 

Проблему с поточностью я решаю запуская несколько php-скриптов одновременно башевских скриптом, первый обрабатывает хосты, номер которых равен 0 по модулю N, второй - 1 по модулю N и т.д. (где N-число одновременно запускаемых скриптов).

Знаю этот способ :) Зачем так извращаетесь, есть же perl с Net::SNMP и non-blocking режимом, там все по человечески. А насчет bulk и множественного set, так это же все реализовано на тех же функция get, getnext, set их достаточно для того чтобы в PHP реализовать тоже самое, понятно что писать придется но кода там минимум :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну не пишу я на Perl, не люблю птичьи языки, ну да ладно, это моя сугубо личная проблема.

 

Лучше скажите как с помощью php-шной snmpset (snmp2_set) изобразить вот такое:

 

snmpset -c comm -v2c host oid1 i 1 oid2 i 2

 

Т.е. как запихнуть два сета в ОДИН snmp-запрос? (по сути в один udp-пакет). Просто существует оборудование, которое настраивается только таким образом(вероятно это сделано для просты отслеживания консистентности запросов)

 

Да и с булком тоже не ясно, т.е. как одним запросом опросить сразу несколько значений? (два гета это совсем другое)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну не пишу я на Perl, не люблю птичьи языки, ну да ладно, это моя сугубо личная проблема.
Да, синтаксис там не очень :) Но плюс в том что можно писать так как нравится, я например тоже пишу на перле в Си-подобном стиле, не используя неявных переменных и.т.д. Было даже такое, что кусок кода из perl, копировал в PHP без изменений ))

 

Лучше скажите как с помощью php-шной snmpset (snmp2_set) изобразить вот такое:

 

snmpset -c comm -v2c host oid1 i 1 oid2 i 2

 

Т.е. как запихнуть два сета в ОДИН snmp-запрос? (по сути в один udp-пакет). Просто существует оборудование, которое настраивается только таким образом(вероятно это сделано для просты отслеживания консистентности запросов)

 

Да и с булком тоже не ясно, т.е. как одним запросом опросить сразу несколько значений? (два гета это совсем другое)

Да, такое не сделать :( Там в принципе нет понятия сессии, каждый запрос изолирован. Только если дорабатывать модуль, он ведь NET-SNMP использует, а значит может обладать всеми возможностями консольных утилит.

Для винды есть COM компонент, но это не тру путь ))

Изменено пользователем SokolovS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

строили сеть как попало, не подписанные кабели втыкали в гирлянды неуправляемых коммутаторов доступа.

пришло время разгребать.

путь для решения - установить управляемый коммутатор, "засечь" все мак адреса, сделать соответствие адрес-порт и кабели подписать.

Ставлю управляемый коммутатор, который видит маки.

Очень хочется собрать все мак адреса на каждом порту. насколько понял встроенные утилиты показывают только АКТИВНЫЕ в настоящий момент адреса. подскажите куда копать, чтоб собрать базу порт-мак адрес.

у нас скрипт на ruby с периодичность раз в пол-часа обходит все "доступа" и снимает маки с портов. Реально - пару килобайт кода.

Потом наше специфическое делает, но... у вас пока не стоит такой задачи, как я понял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чего извращатся? на длинках (и на 3026 в том числе) есть ф-ция mac_notification

config mac_notification ports 1-24 state enable

 

достаточно настроить прием snmp trap'oв на компьютере

 

в snmptrapd.conf

traphandle DES3026-L2MGMT-MIB::swL2macNotification /path_to_script/mac_notif.trap

mac_notif.trap - по примерам, его задача разбить трап на параметры

----мой вариант--------------------------------------------------------

#!/bin/sh

 

read host

read ip

vars=

 

while read oid val

do

if [ "$vars" = "" ]

then

vars="$oid = $val"

else

vars="$vars, $oid = $val"

fi

done

DATE=`/bin/date +"%Y-%m-%d %H:%M:%S"`

MAC=`/bin/echo $vars|/usr/bin/awk '{print $10 ":" $11 ":" $12 ":" $13 ":" $14 ":" $15}'`

PORT_HEX=`/bin/echo $vars|/usr/bin/awk '{print $19}'`

PORT=`/bin/echo $((0x$PORT_HEX))`

/bin/echo $DATE $host $PORT $MAC >>/tmp/mac_notif

-----------------------------------------------------------------------

потом сидим и ждем когда пользователи появятся на портах, когда нужно - смотрим /tmp/mac_notif

Изменено пользователем karyon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

строили сеть как попало, не подписанные кабели втыкали в гирлянды неуправляемых коммутаторов доступа.

пришло время разгребать.

путь для решения - установить управляемый коммутатор, "засечь" все мак адреса, сделать соответствие адрес-порт и кабели подписать.

Ставлю управляемый коммутатор, который видит маки.

Очень хочется собрать все мак адреса на каждом порту. насколько понял встроенные утилиты показывают только АКТИВНЫЕ в настоящий момент адреса. подскажите куда копать, чтоб собрать базу порт-мак адрес.

 

А сеть какая плоская????или поделенная уже??? если все компы в одной сети сидят)) то проще некуда, не нада заморачиваться со свичом. На машине с виндами ставиться програмулинка вот отсюда http://netcp.narod.ru/ , и она самостоятельно все соберет. Проверено работает без проблем и информация достоверная. НО есть одно но....... увидит все устройства только в одном сегменте.

Изменено пользователем aspid77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

karyon, а я всё думал, кто первый выскажется про mac_notification :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

karyon, а я всё думал, кто первый выскажется про mac_notification :)
Писали практически в первом посте про трапы, суть одна и та же. Правда тут сразу мак сваливается.

Минус - не во всем оборудовании есть!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

karyon, а я всё думал, кто первый выскажется про mac_notification :)
Писали практически в первом посте про трапы, суть одна и та же. Правда тут сразу мак сваливается.

Минус - не во всем оборудовании есть!

 

Я подозревал, что длинка есть mac notification, но поскольку сам с длинками не работаю(всего один свитчик случайно стоит на переферии), то дал более универсальные решения.

 

Кстати, чтоб правильно работал скрипт товарища karyon, нужно запускать snmptrapd с такими же ключами что и у него, иначе awk будет не то вырезать из строки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Способ 1. Настроить port security(если есть такой функционал), Способ 3. Просто с интервалом N минут собирать маки со всех портов, складировать их в базу, потом писать нужные селекты.
Способ 3. чем собирать?

http://forum.nag.ru/forum/index.php?showtopic=54023

Написано на Перле... ;-))

Эксплуатируется на сети из десятков тысяч хомячков и нескольких тысяч коммутаторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

cisco 2950

 

 switchport port-security
switchport port-security maximum 132
switchport port-security violation restrict
switchport port-security mac-address sticky

 

на каждом абонентском порту, ставин на месяц (а вдруг кто в отпуск уехал, или компутер поломался), собираем все маки, защищаемся от подмены мак адрессов + собираем базу по всем колхозным (неизвестным нам) свичам. через месяц сливаем то что получилось и разбираем...

 

нет необходимости бегать на свитч по снмп постоянно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не буду плодить темы, спрошу тут.

Может есть у кого нибудь скрипт-обработчик трапов mac_notification от d-link?

Желательно на perl.

Никак не могу найти мак в трапах. Смотрю wireshark'ом v2c трапы, впритык не вижу маков.

Изменено пользователем peektoseen

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никак не могу найти мак в трапах. Смотрю wireshark'ом v2c трапы, впритык не вижу маков.

 

они там вроде в десятичном виде

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

.pcap файл выкладывайте

http://dl.dropbox.com/u/4219452/trapdump.pcap

 

Это я тоже видел, но в пакете такого нет.

В файле выше трап от DES-3526, на 24-ом порту появляется MAC 00-1e-58-30-bb-12, порт вижу где, но мака в пакете нет.

Изменено пользователем peektoseen

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.