LINUX.ORG.RU
ФорумAdmin

Считать трафик через iptables


0

0

В общем, пытался я по-быстрому освоить iptables, но не получилось - времени все не хватает. Как настроить маршрутизацию для списка юзеров мне уже объяснили:

==/etc/rc.d/rc.nat==
/usr/sbin/iptables -N To_Local
/usr/sbin/iptables -N From_Local
/usr/sbin/iptables -A FORWARD -s 10.255.255.0/24 -j From_Local
/usr/sbin/iptables -A FORWARD -d 10.255.255.0/24 -j To_Local
/sbin/setgw
/usr/sbin/iptables -t nat -A POSTROUTING -o eth2 -s 10.255.255.0/24 -j MASQUERADE
==/etc/rc.d/rc.nat==


==/sbin/setgw==
for ch in To_Local From_Local ; do
/usr/sbin/iptables -F $ch
/usr/sbin/iptables -A $ch -m state --state ESTABLISHED -j ACCEPT
done
cat /etc/gwhosts | while read ip ; do
/usr/sbin/iptables -A To_Local -d $ip -j ACCEPT
/usr/sbin/iptables -A From_Local -s $ip -j ACCEPT
done
for ch in To_Local From_Local ; do
/usr/sbin/iptables -A $ch -j DROP
done
==/sbin/setgw==


==/etc/gwhosts==
10.255.255.1
10.255.255.2
==/etc/gwhosts==


Теперь вот надо еще считать трафик по юзерам и дням, т.е. каким-то образом выдергивать статистику из iptables.
Фактически нужно вести лог, что-то типа "дата/ip/порт/колл-во байт", и затем парсить этот файл средствами PHP.
Собственно, как вести лог из iptables я и не знаю. Как проще это сделать?

anonymous

Короче, что-то типа: iptables -vxnL FORWARD, только чтобы оно еще айпишники юзеров и даты показывало.

anonymous
()

> Фактически нужно вести лог, что-то типа "дата/ip/порт/колл-во байт", и затем парсить этот файл средствами PHP.

Может лучше посмотреть в сторону NetFlow?

gruy ★★★★★
()
Ответ на: комментарий от anonymous

>Короче, что-то типа: iptables -vxnL FORWARD, только чтобы оно еще айпишники юзеров и даты показывало.

Можно для каждого айпишника в цепочке FORWARD добавить правила по типу
-A FORWARD -s $IP
-A FORWARD -d $IP
и с счётчиков уже снимать.

Но если айпишников очень много то лучше сделать отдельную цепочку для посчёта трафика с -j RETURN на кажлом правиле, чтобы все пакеты каждый раз полностью всю цепочку не пробегали.

Только парсить надо аккуратно, а то правила какие-нибудь поменяются/добавятся/удалятся и могут пойти косяки.
Лучше те счётчики с которых снимаются значения выносить в отдельные цепочки. Ещё наверно можно приспособить -m comment для этого дела

Так же были каки-то модули для iptables на netfilter.org для ведения статистики по айпишникам.

А чтобы собирать статистику по дням можно банально загнать в крон в 00:00 скрипт чтобы снимал значения с счётчиков и ложил их в файл/БД

Nao ★★★★★
()
Ответ на: комментарий от Nao

Nao, айпишников не много. А можно пример добавления такого правила относительно моего уже работающего скрипта? И каким образом "аккуратно" снимать данные с iptables?

anonymous
()

>> Фактически нужно вести лог, что-то типа "дата/ip/порт/колл-во байт", и затем парсить этот файл средствами PHP.

>Может лучше посмотреть в сторону NetFlow?

Присоединяюсь! ipcad + flow tools + mysql + немного perl решат проблему.

А лучше посмотреть какой-нибудь +- готовый биллинг и не шагать по граблям.

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