Jump to content
Калькуляторы

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

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

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

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

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
У нас на 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). Всё равно вам придётся писать/заказывать какой-то скриптик, под какую ОС не суть в данном случае

Share this post


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

 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
У нас на 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 реализовать тоже самое, понятно что писать придется но кода там минимум :)

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

Share this post


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

 

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

 

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

 

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

 

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

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

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

Edited by SokolovS

Share this post


Link to post
Share on other sites
строили сеть как попало, не подписанные кабели втыкали в гирлянды неуправляемых коммутаторов доступа.

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

Чего извращатся? на длинках (и на 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

Edited by karyon

Share this post


Link to post
Share on other sites
строили сеть как попало, не подписанные кабели втыкали в гирлянды неуправляемых коммутаторов доступа.

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

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

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

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

 

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

Edited by aspid77

Share this post


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

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

Share this post


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

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

 

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

 

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

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites

cisco 2950

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

Edited by peektoseen

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

Edited by peektoseen

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this