LINUX.ORG.RU
ФорумAdmin

Подсчет траффика на машины работающие через маскарадинг


0

0

Необходимо, иметь статистику по трафику на каждую машину в сети...
В инет они все ходят через линух-роутер, на линухе стоит ipchains, который их и маскарадит.
Пробовал несколько прог для сбора сетевой статистики(e.g. iptraf), никто такую статистику
не предоставляет.... может все же кто-то знает способы???

PS: Использую BlackCat 6.2(RedHat совместимый дистрибутив)


Ответ на: комментарий от Sol

Что значит "промаркировать"? Т.е. завести на каждую отдельную машину пользующую мскарадинг, отдельное правило?
а что дальше??? Как по этим маркерам потом статистику выводить???

shtas
() автор топика

Если тебе нужна не текущая статистика, а итоговая за любой промежуток времени, то посмотри сюда:

http://web.onda.com.br/orso/

Программуля называется SARG. Если надо посмотреть, кто куда и сколько по времени (или по байтам) ходил - то что нужно. Правда почтовый траффик сюда не входит. Если найдешь что-нибудь, что считает общий траффик, окажи услугу, скинь мне: sudidenko@mail.ru

Kexus
()

С Вами разговаривает автоответчик... :(. Какой уже раз излагаю...IMHO!!
Предположим, что нам надо считать отдельно входящий (из Интернета) и
исходящий (в Интернет) траффик. У нас eth0 смотрит внутрь, а eth1
наружу (в Интернет). Обзовем внутреннюю сетку x.x.x.x/xx и адрес для eth1
y.y.y.y. Допустим также, что кто-то периодически подключается к
какому-то демону на шлюзе то "изнутри", то "снаружи" (допустим кто-то
бегает с лаптопом). Ну и понятно дело - маскарадинг на этой машине.

Для начала смотрим вывод команды ipchains -nvxL. Видим, что для каждого
правила в первом и втором столбце указаны кол-во пакетов и байт, которые
этому правилу отвечают, но здесь как-то многовато информации... Глядим
также на опцию -Z, которая сбрасывает счетчики.
Ага. Если сохранять в файл с уникальным именем с помощью cron, так вроде
уже легче.
(У меня-то дальнейшее просто не требовалось, посему остальное я знаю
ТОЛЬКО теоретически)

Далее глядим в секцию NOTES в man ipchains и видим как-то так вскользь
упоминание, что для того, чтобы считать траффик, создайте цепочки,
содержащие правила без -j <target> (Там они обзываются ACCTIN и
ACCTOUT). Там это изложено в смысле, что те специальные средства, которые
были для подсчета траффика в ядрах 2.0.х исключены за ненадобностью и
теперь....

Ну хорошо - создали цепочки и напихали в них правил:
ipchains -N ACCTIN
ipchains -N ACCTOUT
ipchains -A ACCTIN -s y.y.y.y/32 -j RETURN
#Это для случая, когда из внутренней сетки но по внешнему адресу шлюза
ipchains -A ACCTIN -d x.x.x.1/32
...
ipchains -A ACCTIN -d x.x.x.n/32

ipchains -A ACCTOUT -d y.y.y.y/32 -j RETURN
#Это для случая, когда из внутренней сетки но по внешнему адресу шлюза
ipchains -A ACCTOUT -s x.x.x.1/32
...
ipchains -A ACCTOUT -s x.x.x.n/32

Первый вопрос, который возникает - когда и на каком езернете считать.
Глядим в ipchains-HOWTO (здесь в разделе "Документация" был перевод,
который хоть и не полон, но в данном случае достаточен) на картинку,
которая показывает как путешествует пакет. Теперь думаем - где та
точка в правилах, в которой пакет маскируется и демаскируется. Для
пакета, который маскируется ("летит" в Интернет) очевидно, что это
правило с -j MASQ. До этой строчки пакет имеет адрес отправителя из
x.x.x.x/xx. Для пакета, который демаскируется - в общем тоже понятно.

Мне кажется, что в цепочку ACCTIN надо переходить из output (причем
обязательно, чтобы правила с -j ACCEPT были после подсчета, а правила
с -j REJECT, -j DENY желательно до него. Перешел бы я туда так:
ipchains -A output -i eth0 -s ! x.x.x.x/xx -d x.x.x.x/xx -j ACCTIN

В цепочку ACCTOUT надо переходить из input (ACCEPT, DENY, REJECT также)
ipchains -A input -i eth0 -s x.x.x.x/xx -d ! x.x.x.x/xx -j ACCTIN

Вот вроде и вся хитрость.

Dimai
()

ОчГромадное спасибо, за такое подробное описалово... очень помогло...

shtas
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.