Граница на замке Антон Карпов, toxa@cterra.ru Спецвыпуск: Хакер, номер #051, стр. 051-030-5 # mkdir -p /var/trafd/traffic # pkg_add mysql-server-4.0.20.tgz # /usr/local/bin/mysql_install_db Прописываем их в автозапуск, /etc/rc.local: if [ -x /usr/local/sbin/trafd ]; then echo -n ' trafd'; /usr/local/sbin/trafd -i vr0 fi if [ -x /usr/local/bin/mysqld_safe ]; then echo -n ' mysqld'; /usr/local/bin/mysqld_safe --user=_mysql --datadir=/var/mysql %26 fi Поставим необходимые модули для работы perl c mysql: # pkg_add p5-Net-MySQL-0.08.tgz Подправим конфигурационный файл mysql, чтобы база данных слушала только локальный socket и не принимала соединения из сети, а также изменим местоположения pid-файла, чтобы его мог найти httpd, который будет записан в /var/www: # cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf # vi /etc/my.cnf [client] port = 3306 socket = /var/www/var/run/mysql/mysql.sock [mysqld] port = 3306 socket = /var/www/var/run/mysql/mysql.sock skip-networking Зададим пароль root'у на доступ к mysql (по умолчанию он пуст), создадим отдельную базу для статистики и укажем использование непривилегированным пользователем ipacct: # mysqladmin -u root -p password 'securepass' # mysql -u root -p Enter password: %26lt;securepass%26gt; mysql%26gt; create database traffic; mysql%26gt; use traffic; mysql%26gt; create table yesterday (src_ip char(16), src_port int, dst_ip char(16), dst_port int, proto int, bytes bigint); mysql%26gt; create table traffic_tmp (ip char(16), sent bigint default 0, recv bigint default 0); mysql%26gt; create table traffic (dt date, ip char(16), sent bigint default 0, recv bigint default 0); mysql%26gt; grant delete,insert,select,update on traffic.* to 'ipacct'@'localhost' identified by 'ipacctpassword'; mysql%26gt; flush privileges; mysql%26gt; quit Для обработки статистики, накопленной trafd, существуют специальные скрипты. Авторство их, по всей видимости, принадлежит написавшему статью www.tmeter.ru/misc/trafd. Ищи на нашем диске эти скрипты, модифицированные специально под OpenBSD. Распакуй их в /root/scripts/trafd/, замени имя интерфейса vr0 на свое и пропиши их запуск в crontab: # crontab -e ################# TRAFFIC ################# # dump to tempfile in case to recovery from it */15 * * * * /usr/local/sbin/trafdump vr0 # dump to binary file to be rotated each day 55 23 * * * /usr/local/sbin/trafsave vr0 # rotate binary files each day 56 23 * * * /root/scripts/trafd/trafrotate.sh # convert from binary to plain text log file 57 23 * * * /root/scripts/trafd/traflog.sh # put all this shit into database 58 23 * * * /root/scripts/trafd/db_update.sh ########################################## Итогом всей этой работы станет ежедневное любезное складирование статистики за весь день в файл /var/trafd/traffic_plain/{дата}.{имя_интерфейса} в текстовом удобочитаемом виде. Этот файл будет обрабатываться скриптом, а информация - записываться в базу данных. Теперь нужно обеспечить пользователей удобным web-интерфейсом. И тут на сцену выходит apache и php-скрипты из вышеупомянутого набора. # pkg_add php4-core-4.3.10.tar.gz # pkg_add php4-mysql-4.3.10.tar.gz # /usr/local/sbin/phpxs -s |