КТО СКАЧАЛ МЯУ? - система подсчета трафика на FreeBSD
DemiurG (arkhangel@mail.ru)
Спецвыпуск Xakep, номер #033, стр. 033-058-5
exec = /sbin/ipfw add 5 allow all from any to any via xl0
exec = /sbin/ipfw add 25 deny ip from any to any
}
## правила для админа.
rule admin {
## просто информационная строка, может быть написано все что угодно, очень часто служит как напоминание и будет просто необходима, когда мы начнем писать скрипты для трафика.
info = 192.168.6.200
ipfw = 190 195
startup {
## мы считаем трафик по правилу 190 (сколько мы отсылаем) и по правилу 195 (сколько мы закачиваем), правила 185 и 187 служат для работы по ssh (так как они лежат раньше 190, 195, по ним трафик не считается).
exec = /sbin/ipfw add 185 allow tcp from 192.168.6.200 to 192.168.6.22 22
exec = /sbin/ipfw add 187 allow tcp from 192.168.6.22 22 to 192.168.6.200
exec = /sbin/ipfw add 190 allow ip from 192.168.6.200 to any via xl0
exec = /sbin/ipfw add 195 allow ip from any to 192.168.6.200 via xl1
exec = /sbin/ipfw add 197 allow ip from any to 192.168.6.200 via xl0
}
}
rule masha {
info = 192.168.6.210
ipfw = 300 310
startup {
exec = /sbin/ipfw add 300 allow ip from 192.168.6.210 to any
exec = /sbin/ipfw add 310 allow ip from any to 192.168.6.210 via xl1
exec = /sbin/ipfw add 320 allow ip from any to 192.168.6.210 via xl0
}
## для примера приведена секция shutdown (хотя когда у нас есть глобальная секция shutdown, эта теряет всякий смысл)
shutdown {
exec = /sbin/ipfw delete 300
exec = /sbin/ipfw delete 310
}
}
rule gosha {
info = 192.168.6.234
ipfw = 400 410
startup {
exec = /sbin/ipfw add 400 allow ip from 192.168.6.234 to any
exec = /sbin/ipfw add 410 allow ip from any to 192.168.6.234 via xl1
exec = /sbin/ipfw add 420 allow ip from any to 192.168.6.234 via xl0
}
}
rule all {
info = 255.255.255.255
ipfw = 190 195 300 310 400 410
}
Ну что, вбил правила? Теперь разберемся, как их вывести на экран. В IPA этим занимается команда "ipastat". Как всегда, будем на примерах разбираться?
Пример 1: "ipastat -x -R ." - выводит информацию по всем пользователям за текущий месяц работы (ключ -х позволяет использовать регулярные выражения - примеры использования см. "man 8 ipastat").
Пример 2: "ipastat -r admin" - выводит статистику за текущий месяц работы по пользователю admin и делает разбивку по дням
Пример 3: "ipastat -R admin" - выводит статистику за текущий месяц работы по пользователю admin и не делает разбивки по дням.
Пример 4: "ipastat -r admin -i 2003.07.07" - выводит статистику по админу за 7 июля.
По умолчанию (как ты заметил) IPA в таблице выводят данные в байтах и мегабайтах, но данные в мегабайтах получаются делением данных в байтах не на 1000000, а на 1048576=1024*1024, что как-то немного бесит - легко исправляется, если еще указывать ключ -k. Пример 5: "ipastat -R gosha -i 2003.07.02 -k" - вывод по трафику для юзера Гоша за 2 июля, считаем, что мегабайт равен 1000 килобайтам.