Автоматический сбор МАК-ов

Технические вопросы по UTM 5.0
Закрыто
Кондор
Сообщения: 52
Зарегистрирован: Ср янв 17, 2007 16:04

Автоматический сбор МАК-ов

Сообщение Кондор »

Доброго времени суток!
Искал по форуму, но чего-то не нашёл! Хотелось бы, чтобы в базу автоматом прописывалась привязка IP-MAC. Ну, т.е. если мак в связке пустой, то от наполняется из arp, а не вбивается вручную. Как сие сделать?
Есть это у моего домашнего провайдера, типа, "мы вам чистим мак и первый мак на вашем ip прописывается в базу"...

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Скриптиком.

Кондор
Сообщения: 52
Зарегистрирован: Ср янв 17, 2007 16:04

Сообщение Кондор »

JAO писал(а):Скриптиком.
Собственно, это я и так знаю, что скриптиком. А пример оного не подскажете?

f0ma
Сообщения: 29
Зарегистрирован: Чт июн 05, 2008 11:23
Откуда: г.Екатеринбург

Сообщение f0ma »

тоже интересен скрипт :)

tail-n
Сообщения: 101
Зарегистрирован: Пн июн 01, 2009 02:32

Сообщение tail-n »

f0ma писал(а):тоже интересен скрипт :)
Тот кто хочет сменит и с привязкой, это не панацея, нужно оборудование l2. А так видится такое решение: ставится arpwatch, дальну всё в логи и парсятся логи на предмет смены mac адресов, все кто попал - iptables -I FORWARD -s $IP -j DROP или загоняются куда нить в дохлый маршрут.

Кондор
Сообщения: 52
Зарегистрирован: Ср янв 17, 2007 16:04

Сообщение Кондор »

Да собственно в режиме реального врменеи прописывание маков и не нужно! Достаточно вызова скрипта раз в 5 минут.
А что, проанализировать arp -a никак нельзя?

xxxupg
Сообщения: 457
Зарегистрирован: Вс май 02, 2010 10:00

Сообщение xxxupg »

вообще идеальный вариант это:

берём логин (проверяем есть ли у него привязка) если нет то -
берём его последнюю сессию и МАК адрес из неё заносим как CID.

всё.... :))


з.ы. запускать раз в неделю (месяц) предупреждая ТП...

Кондор
Сообщения: 52
Зарегистрирован: Ср янв 17, 2007 16:04

Сообщение Кондор »

Ну, лично у меня пока пока такой алгоритм вытанцовывается: модифицируем arp.sh, чтобы:
1. arp -a > arp.txt
2. grep -v permanent arp.txt > arp2.txt
А вот как дальше - не знаю.... Но по сути:
3. Построчный анализ: проверяем, если ли ИП в базе. Если есть:
3.1. Заносим МАК в базу.
3.2. Если нет - идём дальше (ну, или какие действия по блокировке)
4. Идём к п.3 до окончания файла.
5. arp -a -d
6. Выгрузка из базы маков в файлик
7. arp -f <файлик с маками>
Запускать можно хоть раз в минуту.... Только вот как написать - увы, в shell-е пока не силён :(

Кондор
Сообщения: 52
Зарегистрирован: Ср янв 17, 2007 16:04

Сообщение Кондор »

Порыл... Похоже, проще на php написать :) Только ставить php на сервак чисто ради одного скрипта как-то не спортивно.... Может, кто знает, как проанализировать вывод mysql?

Pulse
Сообщения: 945
Зарегистрирован: Вт окт 03, 2006 12:58

Сообщение Pulse »

awk ?

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

Можно и без awk. Вот например вывод "Логин" "Пасс" "ИП"

Код: Выделить всё

#!/bin/sh
#getacct.sh
/usr/bin/mysql --host=172.16.0.2 -uutm5 -putm5pass utm5billing <<EOF
select uname,upass,inet_ntoa&#40;ip & 0xFFFFFFFF&#41; from ip_groups, iptraffic_service_links, accounts, service_links
    WHERE ip_groups.is_deleted=0
    AND iptraffic_service_links.ip_group_id=ip_groups.ip_group_id AND service_links.id=iptraffic_service_links.id
    AND service_links.account_id = accounts.id
    AND service_links.is_deleted=0
    AND iptraffic_service_links.is_deleted=0
    AND accounts.is_deleted=0
    AND ip_groups.is_deleted=0
    AND ip_groups.ip_type=0
    AND ip_groups.router_id=1
    ORDER by uname;
QUIT
EOF
PS. AWK все таки пригодится :) Этот скрипт вызывает первый и убирает из его вывода первую строку(заголовки столбцов) + сортировка по логину. Результат - в /netup/accounts.txt

Код: Выделить всё

#!/bin/sh
#saveaccounts.sh
ACC_PATH=/netup/accounts.txt
/etc/ppp/getacct.sh | grep -v "uname" | awk '&#123;print $1"  \t  "$2"  \t"$3&#125;' |sort>> $ACC_PATH


Кондор
Сообщения: 52
Зарегистрирован: Ср янв 17, 2007 16:04

Сообщение Кондор »

Так, скрипт я слепил на php и всё работает, кроме одного: в биллинге маки не появляются даже после рестарта биллинга. Надо ещё что-то править в таблицах кроме ip_groups?

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

Кондор писал(а):Так, скрипт я слепил на php и всё работает, кроме одного: в биллинге маки не появляются даже после рестарта биллинга. Надо ещё что-то править в таблицах кроме ip_groups?
Только ip_groups. Для применения, конечно, рестарт биллинга.

И еще, в базе маки хранятся XX-XX-XX-XX-XX а не XX:XX:XX:XX:XX

Кондор
Сообщения: 52
Зарегистрирован: Ср янв 17, 2007 16:04

Сообщение Кондор »

ds писал(а):
Кондор писал(а):Так, скрипт я слепил на php и всё работает, кроме одного: в биллинге маки не появляются даже после рестарта биллинга. Надо ещё что-то править в таблицах кроме ip_groups?
Только ip_groups. Для применения, конечно, рестарт биллинга.

И еще, в базе маки хранятся XX-XX-XX-XX-XX а не XX:XX:XX:XX:XX
Странно. У меня разделители в базе - двоеточие.

Аватара пользователя
Ata-man
Сообщения: 427
Зарегистрирован: Пт янв 21, 2005 10:04
Откуда: Екатеринбург

Сообщение Ata-man »

PS. AWK все таки пригодится Smile Этот скрипт вызывает первый и убирает из его вывода первую строку(заголовки столбцов) + сортировка по логину. Результат - в /netup/accounts.txt
Первую строку убирать не обязательно, достаточно при запросе добавить ключ --skip_column-names

Закрыто