Мой вопрос собственно нужно разбить на две части.
Первое.
Веду учет общего входящего\исходящего трафика нашего сервера с провайдером.
Конкретно таким образом:
Правила в ipfw:
ipfw add XXXXX count ip from any to any via rl0 in
ipfw add XXXXX count ip from any to any via rl0 out
По cron сие запускается так, с интервалом, скажем, в один час:
/sbin/ipfw show | /usr/bin/grep "^ХХХХХ" | /usr/bin/awk '{ print $3; }' > /var/log/count/sending.`date " %Y-%m"`
/sbin/ipfw show | /usr/bin/grep "^ХХХХХ" | /usr/bin/awk '{ print $3; }' > /var/log/count/received.`date " %Y-%m"`
Замечательно.
Но сразу вижу здесь следующие проблемы:
Если машина перезагрузится, вся накопленная до этого момента статистика в выходных файлах будет затерта новой, начавшейся записываться туда с первого срабатывания cron-а после этой самой перезагрузки.
Как тут быть??? Что можно предпринять, чтобы исключить потерю накопившейся инфы за некий период (возможно и месяц)?
Какие видите варианты?
Все это я еще ес-но вывожу через броузер для отчета, cgi-скрипт обращается к этим заданным создаваемым файлам со статистикой, поэтому их плодить безмерно просто проблематично.
(может можно (нужно) дозаписывать >> новые данные в конец этих файлов
всегда, а не перезаписывать > и выводить в броузер последнюю строчку
посредством перла, а не единственную (первую), как это делается сейчас, как это провернуть?)
Второй вопрос заключается в следующем.
Помимо сбора общей статистики по трафику за месяц, необходимо еще получать статистику по каждому пользователю в локальной сети, сколько он получил\отправил за текущий месяц в_общей_сложности_при_обращении_в_интернет. То есть трафик в самой локальной сети между машинами нужно отсечь, он не должен учитываться.
Пользователи выходят в инет со своих серых адресов через natd используя один реальный IP на самом сервере (шлюзе). Из броузера они подключаются через мой же squid, установленный на сервере, все остальное, аська, фигаська и еще, если что-то там имеется, напрямую через natd работает.
Так вот каким образом общитывать их входящий\исходящий_трафик_с_инетом, не принимая во внимание обмен данными в локальной сети?
Пробовал делать так (интерфейс rl0 смотрит в инет, клиент имеет IP
10.0.0.3):
ipfw add ХХХХХ count ip from any to 10.0.0.3 via rl0 in
ipfw add ХХХХХ count ip from any to 10.0.0.3 via rl0 out
Так вот будет ли учитываться полностью весь трафик с инетом у этого
общитываемого юзера, не пропадут ли данные по http с ftp, если они
передаются этому пользователю со squid-а, стоящего сервере?
И вообще, не будет ли врать отчет по юзерам, ведь они как бы не напрямую общаются с инетом, а через natd, squid, успокойте меня что ли. Может вообще пользователей нужно как-то иначе общитывать?
Готов выслушать все ваши соображения по прочитанному выше.
Хотелось бы все наладить средствами описанными выше #!/bin/sh, не прибегая к внешним программам статистики, да и самого squid-а тоже (кстати, у последнего где ее можно посмотреть, если что?)
Все под FreeBSD 4.3
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум ipfw nat для отдельных ip (2005)
- Форум Помогите с ipfw? (2006)
- Форум ipfw pipe in/out (2019)
- Форум ipfw - смаршрутизировать RDP (2008)
- Форум natd (2002)
- Форум ipfw fwd (2007)
- Форум Вопрос по IPFW (2005)
- Форум подсчет траффика во FreeBSD (ipfw) (2003)
- Форум помогите с ipfw (2007)
- Форум ipfw на FreeBSD4.4 (2002)