Почему netfilter/iptables неправильно считает траффик??ЭКСПЕРИМЕНТ по сабжу:
# iptables -I INPUT -p icmp
# iptables -Z
# ping 127.0.0.1 -c 1PING 127.0.0.1 (127.0.0.1): 56 octets data
64 octets from 127.0.0.1: icmp_seq=0 ttl=64 time=0.1 ms--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.1 ms# iptables -L INPUT -nvx
Chain INPUT (policy ACCEPT 2 packets, 168 bytes)
pkts bytes target prot opt in out source
destination
2 168 icmp -- * * 0.0.0.0/0
0.0.0.0/0
#то-есть, послали 1 icmp(icmp-type 8) сегмент (протокол icmp относим к
межсетевому уровню) - 56 байт, и получили 1 icmp(icmp-type 0) сегмент - 64 байта.
внимание,ВОПРОС:Почему netfilter правильно засчитал 2 pkts и *неправильно* посчитал количество байт -
56 + 64 = 118 != 168 ???Инкапсуляции в протоколы низлежащего(сетевого) уровня нет, а ip-header, как написано в мане к ping, входит в те самые 56 байт -
ECHO_REQUEST datagrams (``pings'') have an IP and ICMP header,
followed by a ``struct timeval'' and then an arbitrary number of
``pad'' bytes used to fill out the packet.Отчего так может быть? А то у меня на этом мысль останавливается ;)
==============================
В треде предлагается обсудить применяемые в практике методы учета трафика и накопления статистики используя счетчики в iptables, ipchains, ipf, ipfw и других пакетных фильтрах.Выборка тредов из форума:
Linux
http://www.opennet.me/openforum/vsluhforumID3/987.html
http://www.opennet.me/openforum/vsluhforumID1/18933.html
http://www.opennet.me/openforum/vsluhforumID1/17008.html
http://www.opennet.me/openforum/vsluhforumID1/23697.htmlFreeBSD
http://www.opennet.me/openforum/vsluhforumID1/6741.html
http://www.opennet.me/openforum/vsluhforumID1/7613.html
http://www.opennet.me/openforum/vsluhforumID1/23699.html
http://www.opennet.me/openforum/vsluhforumID1/23710.html
http://www.opennet.me/openforum/vsluhforumID1/21977.html
http://www.opennet.me/openforum/vsluhforumID1/18668.html
http://www.opennet.me/openforum/vsluhforumID1/17292.html
>Почему netfilter/iptables неправильно считает траффик??[...]
>Почему netfilter правильно засчитал 2 pkts и *неправильно* посчитал количество байт -
>
>56 + 64 = 118 != 168 ???видимо, потому, что у него сложилось "превратное" впечатление, что ICMP работает по IP. Я думаю, вам стоит прочитать и попытаться осмыслить немного документации по той отрасли, в которой вы находите ошибки.
/poige, http://www.morning.ru/~poige
>Почему netfilter/iptables неправильно считает траффик??У нас тут Yury Pimenov написал отличный демон подсчета траффика для Linux - trcounterd. Использует libpcap, данные складывает в MySQL. Вообще-то он сделан с учетом местной (латвийской) политики (внутри страны траффик бесплатный, зарубеж - у разных ISP по-разному), но переделать под себя его совсем нетрудно ;)
последняя версия лежит здесь: ftp://ftp.linux.lv/pub/made_in_latvia/trcounterd/
Дико извиняюсь! ;]Просто не дочитал ман до _самого_ конца. На самом деле все считается
правильно, так и должно быть.а ping, когда посылает пакет, пишет размер arbitrary data, не учитывая
icmp-header'а - 56 байт по дефолту,
и полный размер пакета, который он получает в ответ, на этот раз уже
учитывая все хедеры - 56 + 8.Вот..и вообще, в мане к ping'у куча всяких интерестностей))
10x 2 All
Есть замечательная вещь ipacc для freebsd ... посмотрите и оставьте в покое ipfw :)))http://www.opennet.me/openforum/vsluhforumID3/327.html
ng_netflow кстати получше будет т.к. есть уже куча прог для сохранения и анализа netflow-статистики. (Хотя сам я считаю через ipfw и проверяю через netflow - так уж исторически сложилось)>Есть замечательная вещь ipacc для freebsd ... посмотрите и оставьте в покое
>ipfw :)))
>
>http://www.opennet.me/openforum/vsluhforumID3/327.html
А если бы еще ограничить юзеров, то есть закрывать доступ, когда скачали допустимое количество информации, да не пользуясь базами mysql ???
>А если бы еще ограничить юзеров, то есть закрывать доступ, когда скачали
>допустимое количество информации, да не пользуясь базами mysql ???могу дать целую систему учети и тарификации, немного не доделано, но за полгода работы показала себя великолепно и на работе и в нашней домашней сетке. Трафик есть работает, закончился отключаем. (раз в минуту по крону запускается скрипт)
пользователи авторизуются по pptp (mpd)
ng_ipacctd считает трафик
база в файле вот такого видаlogin:password:fio:limit:status
доступ через веб....
все на перле заточить под себя непроблема, немного убогая (один из первых опытов использоания перла), но повторюсь глюков не замечалось....
Не подскажете аналог ng_ipacctd (или хотя бы ipacctd) для linux?!На маршрутизаторы для всяких нищих контор нужно:
1. надёжную fs, поэтому подходит только ext3 с полным журналированием
2. считалка трафика, поэтому подходят divert socketslibpcap использовать не хочется (т.к. возможны неточности с подсчётом)
пока ставлю фрю, но уже были печальные преценденты и с SoftUpdates и с sync и без итд... :-( подскажите аналог ipacctd под linux, плизз! :(