Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
www.lissyara.su
—> статьи
—> FreeBSD
|
|
И эти больше для удоства отладки и администрирования:
|
Про установку и настройку MySQL, phpMyAdmin, nginx рассказывать не буду - на сайте полно информации.
Основной каталог с которым будет вестись вся работа: я назвал так - /var/asut (название не принципиально, просто потом нужно учитывать при последующем конфигурировании, у меня на каталог завязано многое
|
Часть 2. Установка ng_ipacct
Что такое ng_ipacct? Это NETGRAPH модуль ядра который представляет из себя TEE ноду NETGRAPH, перехватывает все пакеты проходящие через указанный интерфейс, суммирует байты по адресам и протоколам, хранит все это в памяти, и по сигналу скидывает собранные данные в файл. Так как это модуль ядра то сбор данных практически не сказывается на работе системы. Мне не удалось заметить сколь либо ощутимой загрузки средненького целерона даже при трафике 100 Мбит через интерфейс =)
Предварительно пересобираем ядро со следующими опциями:
|
ставим:
|
Оставляем опции по умолчанию
Тут можно добавить: в руководствах рекомендуют при каждой следующей пересборке ядра ставить ng_ipacct снова т.к. это все таки модуль ядра и пересборке он удаляется, но исходя из личного опыти после пересборки ядрая я забывал ставить ng_ipacct и тем не менее его модуль загружался и он работал.
Далее правим конфиг /usr/local/etc/ng_ipacct.conf
|
содержимое скрипта /var/asut/ipacct.sh
этот скрипт заставляет ng_ipacct сбросить собранную статистику в файл лога
|
Для того чтобы заставить ng_ipacct сбрасывать дамп теперь нужно выполнить команду
|
Вот пример лога
|
столбцы слева нпараво:
|
Все! Осталось добавить в /etc/rc.conf
|
Часть 3. Подготовка базы данных
|
Создаем таблицы в MySQL (предварительно создав базу):
|
Часть 4. Конфигурируем SQUID
squid уже стоит. Выполняем команду для создания каталога под кэш
|
Правим конфиг SQUID, /usr/local/etc/squid/squid.conf:
|
Часть 5. Конфигурируем pfstat
Файл /etc/pfstat.conf (не забываем заменить vr0 на ваш ВНЕШНИЙ интерфейс)
|
Создаем каталог под логи
|
И добавляем в крон
|
Часть 6. Конфигурируем nginx
Для корректной работы phpmyadmin через nginx
|
Файл /usr/local/etc/nginx/nginx.conf
|
создаем файл /usr/local/etc/rc.d/php-cgi и пишем в него (спасибо Nikll за подсказку)
|
Меняем права на файл
|
И добавляем в /etc/rc.conf
|
Часть 7. Конфигурируем daemontools
создаем рабочие каталоги
|
файл /var/asut/supervise/server/run
|
желательно вместо 0 ставить адрес внутреннего интерфейса
файл /var/asut/supervise/server/log/run
|
в /etc/rc.conf добавляем строки:
|
Часть 8. Настраиваем pf.
примерный конфиг /etc/pf:
|
Часть 9. Сердце системы. Исполняемые скрипты.
Файл /var/asut/server.php
Данный скрипт описывает работу сервера авторизации. Написан на php. Работает по принципу Telnet, передача между клиентом и сервером идет в текстовом режиме в UTF8 кодировке (чтобы подружить Windows м UNIX)
|
Файл /var/asut/global.php. Обновляет конфиги файрволла и прокси сервера, обеспечивает квотирование. Хорошо прокомментирован. :)
|
|
Файл /var/asut/reconfigure.php - скрипт реконфигурирования (запускается по таймеру каждые 2 минуты)
|
добавляем в крон
|
|
Часть 10. Заключение. Механизмы работы.
в разработке... дописываю (устал писать)
|
Cancer, 2008-09-14 в 14:17:56
Вопросик а как же будет рубать пользователей за превышение трафика?
arksu, 2008-09-14 в 22:23:37
я сделал отдельный сервер авторизации на php. и авторизация либо по домену. либо по паролю логину. либо по айпи. можно в принципе любую авторизацию замутить. все ограничивается только фантазией.
статья в разработке.... все опишу ;)
kolobok, 2008-09-15 в 4:47:35
Чтоб не ругался:
root: /etc/rc: WARNING: can not load kld module netgraph
kernel: module_register: module ng_ether already exists!
kernel: Module ng_ether failed to register: 17
root: /etc/rc: WARNING: can not load kld module ng_ether
Нужно убрать netgraph и ng_ether
ng_ipacct_modules_list
Ибо ядро, видимо, уже собрано с ними.
arksu, 2008-09-15 в 8:42:05
kolobok - ты прав. ядро уже собрано с этими опциями. просто я не вдавался в суть этих ошибок ибо и с ними все прекрасно работает. сейчас обновлю статью
спасибо за замечание =)
www2, 2008-09-16 в 8:02:45
Судя по всему ng_acct похож на ng_netflow, только для netflow нужна ещё программа-коллектор.
В netflow есть такая штука как аггрегация информации за определённый период времени. Коллектор из комплекта flow-tools умеет скидывать потоки в двоичные файлы, в MySQL, в PostgreSQL.
Во flow-tools есть программы для фильтрации, аггрегации и построения отчётов из двоичных фалов. Если складывать в БД - возможности обработки вообще практически безграничные.
greg_b, 2008-09-16 в 9:09:38
В принципе неплохо, ждем продолжения. Надо ж в реалии потестить.
opt1k, 2008-09-16 в 11:06:19
вот мне squid нравиться за возмоэность ntlm аутентификации. Вот бы считалку трафика с ntlm
arksu, 2008-09-16 в 11:09:16
терпение! и только терпение!
я пошел дальше и сделал смешанную авторизацию. по логин-паролю, по доменной учетке, по айпи, можно и по MACу сделать (все ограничивается фантазией)
и эту авторизацию завязал на файрволл и squid.
скоро допишу....
XeNoN, 2008-09-16 в 13:14:20
Маленький совет, полезный при работе с netgraph и для устранения неполадок. Команда ngctl dot генерирует диаграмму связей netgraph узлов в dot формате graphviz, т.е можно наглядно посмотреть, что и как соединяется.
tms, 2008-09-18 в 12:42:34
у мне какие-то непонятки c ng_ipacct - он установлен на шлюзе с ipfw NAT и в логе есть только данные по траффику с IP внешнего интерфейса. А как мне увидеть еще и траффик внутренних IP?
arksu, 2008-09-18 в 14:39:44
tms, ты считаешь трафик на внешнем интерфейсе. укажи в конфиге ng_ipacct считать трафик на внутреннем - тогда ты будешь видеть кто куда лазил из локалки
tms, 2008-09-18 в 18:26:28
считать на внутреннем интерфейсе тоже не очень правильно - часть траффика в счетчик вообще не попадет... замкнутый круг какой-то.
Aldaron, 2008-09-22 в 20:33:52
Хорошая статья, попробуем сделать все с pf. Пытался с ipfw - ничего не получилось. Хотя дело не в файрволле, у меня с самим нетграфом дикие косяки были. Мож со второго захода получится )
arksu, 2008-09-23 в 14:00:37
с ipfw делается аналогично, надо создать правила с привязкой на таблицы, их грузить из файлов, а файлы указать в скрипте global.php
и там же изменить команду на перезагрузку правил
Aldaron, 2008-09-24 в 10:56:20
Это я понимаю) Я с самим ng_ipacct намучился, не смг его прикрутить
arksu, 2008-09-24 в 10:59:25
можете по вопрсоам обращаться в аську: 232-455
sofinan, 2008-10-27 в 14:36:54
Пытался настроить по статье, но где то на середине устал бороться и решил сделать по своему.Срубил все что ниже ng_ippact, написал парсер лога терь пытаюсь прикрутить к lightsquid)))))Пока нихуя не получается)
Zar, 2008-10-29 в 9:14:28
2lissyara
слушай, а если в предыдущих статьях trafd & mysql и ipacctd
взять скрипт получения трафика и заюзать его для получения трафика из ng_ipacct все же отработает? структура же лога выгрузки одинакова?
Zar, 2008-10-29 в 11:34:28
все сделал, так что можно не отвечать :)
все работает, надо будет только замерить и потестить насколько корректно :)
Zar, 2008-11-24 в 7:39:12
Народ, подскажите... как уменьшить колличество логов для ng_ippact ?
а то у меня тестовый сервер в холостую за месяц БД мускла 150метров... и столько же log.txt
когда если сравнивать с traffd то у меня за год база мускля ~700Мб
подскажите выход? :)
arksu, 2008-11-24 в 13:37:03
в данный момент я занимаюсь этой проблемой
что сделано:
1. переписан на 100% авторизатор
2. переписан сервер авторизации
3. оптимизирована структура БД
4. много изменений в админке
что планируется:
1. сделать скрипт инсталяции БД и админки
2. дописать админку (редактироание прав пользователейи и тд и тп)
flint, 2008-11-24 в 13:49:17
а здесь это появиться?!
arksu, 2008-11-24 в 14:48:01
появится. возможно выложу на свой сайт.
либо напишу статью по новой
opt1k, 2008-12-04 в 17:55:21
автор, спасибо тебе большое, пиши ещё, статья интересная и актуальная
copypaiste, 2008-12-05 в 7:40:27
Очень интересный и нужный проект. Удачи автору! ;)
E-Wind, 2009-01-17 в 16:07:53
Просто загоняет трафик в БД
В Конфиге
ng_ipacct_fxp0_checkpoint_script="/root/scripts/ng_ipacct.sh fxp0"
Дамп:
--
— Структура таблицы `traffic_fxp0`
--
CREATE TABLE IF NOT EXISTS `traffic_fxp0` (
`src_ip` varchar(15) NOT NULL,
`src_port` int(11) NOT NULL,
`dst_ip` varchar(15) NOT NULL,
`dst_port` int(11) NOT NULL,
`protocol` int(11) NOT NULL,
`packets` int(11) NOT NULL,
`bytes` int(11) NOT NULL,
`unixtime` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Скрипт - ng_ipacct.sh
#!/bin/sh
IPACCTCTL="/usr/local/sbin/ipacctctl"
IFACE=$1
$IPACCTCTL ${IFACE}_ip_acct:$IFACE checkpoint
$IPACCTCTL ${IFACE}_ip_acct:$IFACE show | awk '{print "INSERT INTO `dbs_system`.`traffic_'$IFACE'` (`src_ip`,`src_port`,`dst_ip`,`dst_port`,`protocol`,`packets`,`bytes`,`unixtime`) VALUES (\""$1"\",\""$2"\",\""$3"\",\""$4"\",\""$5"\",\""$6"\",\""$7"\",\""$8"\"); "}' | /usr/local/bin/mysql -u <ПОЛЬЗОВАТЕЛЬ БД> -p<ПАРОЛЬ К БД> dbs_system
$IPACCTCTL ${IFACE}_ip_acct:$IFACE clear
Можно сделать лучше )
arksu, 2009-01-19 в 7:12:56
вся система переписана "от" и "до", развитие продолжается. просто пока не созрел выложить сюда. времени не хватает.
система используется для реальной работы в реальной компании в сети филиалов как файрволл, прокси, учет трафика, авторизатор, впн, и еще много функций...
Cancer, 2009-01-19 в 11:21:39
А скрины можно увидеть ?
opt1k, 2009-01-19 в 12:41:49
товарищ arksu, молимся на вас, ждём, ждём доменную ntlm авторизацию
arksu, 2009-01-19 в 16:37:07
объясню почему нет привязки на домен...
система "псевдо" привязана к домену. т.е. юзеры заносятся в эту базу и в домен. и логины должны совпадать буква в букву.
как работает:
запускается авторизатор на клиентской тачке. проверяет как выполнен вход пользователя в систему - либо вход в домен, либо локальный вход. если в домен - авторизатор выясняет в какой домен был вход, отправляет на сервер, если домен совпал с доменом который прописан в конфиге на сервере - клиент выясняет под каким логином вошел юзер,
если совпал логин с логином на сервере - считается что вход юзера в систему успешен. т.е. он авторизовался и можно прописать ему его правила
если же вход локальный - авторизатор еще спрашивает и пароль. и отправляет это на сервер, ну а потом если все ок - авторизует
ПОЧЕМУ? зачем именно так. домен не всегда и везде работает безглючно. особенно когда филиалов 20+ и доменов раскиданых по России столько же. чтобы не ловить глюков винды была сделана именно такая схема работы. юезров можно всегда импортировать в эту базу. или настроит автоматический импорт, можно авторизовать юзеров которых нет в домене (временные пользователи, гости) или которые приезжают из других филиалов (говорить что надо строить доменное дерево не надо...жалко трафик да и опять же глюкавость....)
arksu, 2009-01-19 в 16:40:00
Опять же по повду доменной авторизации... система написана на основе модульной структуры. т.е. в принципе можно прикрутить что угодно. не нарушая общей структуры.
на данный момент с "псевдо" авторизацией система работает как часы уже полгода. возможно в будущем я напишу сам. или возможно кому-то будет интересно и он напишет сам - в данном случае лучше связатся со мной, и я подскажу как и что делать...
www.ark.su
arksu, 2009-01-19 в 16:45:28
опять же к вопросу о домене.... =)
сеть филиалов на виндовых доменах работает с 2006 года...
за это время были не раз подвисания домена. когда нажимаешь с клиентской тачки вход в систему - а он думает долгоооо-долгооооооо и только потом начинает логинится.
т.е. глючит именно запрос в лдап домена или что-то еще.... но это происходть с завидной регулярность. поэтому желания разбиратся что там и как мало... лично мне проще было отвязать полсностю систему от домена. а те функции которые авторизатор испльзует для выяснения логина и домена - оттестированы и не глючат (работают быстро, используя ресурсы только локального компьютера, без обращений к домену)
arksu, 2009-01-19 в 16:48:27
чет меня проперло прям))))))
можно поставить самбу, настроить керберос на фре. и юзать функции самбы для авторизации, в принципе не трудно, и работать будет как часы)
но! имхо я сплю спокойнее когда знаю что на винду в этой системе НЕ ЗАВЯЗАНО вообще ничего! =) и никаких проблем с лицензированием не возникнет в принципе.
как говорица: не придирессии
jek, 2009-03-03 в 18:01:08
Исправьте строку
номер протокола (описываются в /etc/services)
на
номер протокола (описываются в /etc/protocols)
arksu, 2009-03-04 в 8:52:17
спасибо за замечание. запарился...
opt1k, 2009-05-22 в 8:07:25
ув. arksu недолго думая взял для своей бакалаврской работы тему учёта трафика на предприятии. Хочу использовать ваши наработки включая скрипты, естественно ссылку на статью оставлю :) Не против ли вы?
И вроде бы всё понятно на 1ый взгляд, но если вдруг будут вопросы, можно будет с вами связаться? я доставать особо не буду, ибо во многом уже разобрался по вашей статье :) Я бы хотел докрутить всё таки НТЛМ(в инете видел примеры на тех же дельфях) или даже может церберов.
Спасибо!
arksu, 2009-05-22 в 13:36:26
ув. opt1k, на данный момент система сильно изменена в сравнеии с тем что описано в статье. со свободным временем стало получше - выложу всю обновленную систему в течение месяца. и напишу статью.
а пока небольшие отрезки:
1. Авторизатор
решил уйти от постоянного TCP соединения, минусы:
при перезагрузке сервиса авторизации все коннекты рвутся, все пользователи становятся неавторизованными, лишний трафик, держатся постоянные соединения на стороне сервера - нагрузка на стек, еще один "дополнительный" демон - сложность в настройке
подумал-подумал и решил сделать как во всех "взрослых" современных нагруженных проектах - работа по HTTP
на сервере есть скрипт auth.php к которому обращается клиент и передает параметры через POST запрос. через него же осуществляется keepalive
что нам это дало:
избавились от отдельного демона. ниче дополнительно конфигурить не надо, nginx прекрасно справляется
за счет nginx+php-fpm+eaccelerator - высокое быстродействие
продолжение следует.......
adre, 2009-12-14 в 7:54:58
где продолжение?
arksu, 2009-12-14 в 12:25:20
на продолжение не хватает сил ))))
уже полгода...
vasilek, 2011-09-16 в 21:58:55
Что-то я не допонял, зачем тут squid, если на него не заворачивают трафик? Как ему(squid'у) приснится?
arksu, 2011-10-28 в 2:32:03
у клиентов руками в браузерах прописана прокся
у нас стоял виндовый домен. мы через политики домена всем настроили разом.
и резали намертво 80 порт. так что либо прокся - либо сидишь без http
если делать \"прозрачный\" прокси - скрывался айпи клиента (на тот момент не знал как решить) сейчас понимаю что можно было решить и прозрачное проксирование......
опыт приходит со временем)
Nologin, 2013-04-03 в 16:32:20
День добрый, так что со статьей? Она уже обновлена под текущий применяемый вами билд или все еще как изначально было написано?
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
вверх
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [42 шт.]