LINUX.ORG.RU
ФорумAdmin

Еще пару вопросов о подсчете траффика


0

0

Цель - грамотно считать траффик в нашей системе.
Сразу скажу - для меня важен принцип. Детали (привязка к мак-адресу, использование опций -i -o) я здесь не буду излагать.

Есть сервер, на нем четыре сетевых карточки.
eth0 смотрит в И-нет и имеет IP-адрес 1.2.3.4
eth1 смотрит в первую ветвь локалки и имеет адрес 172.16.1.2
eth2 смотрит во вторую ветвь локалки и имеет адрес 172.16.2.2
eth3 смотрит во третью ветвь локалки, где имеются твердые IP-адреса 82.112.149.41...47 Адрес интерфейса - 82.112.149.41
На сервере стоит Fedora Core 2 Kernel 2.6.5

Все серверные службы, которыми пользуются рабочие места локалок, привязаны к адресу eth2 172.16.2.2 Это pop/smtp, apache, ftp и т.п.

Принцип расчета траффика следующий.
Должно считаться все, что идет из И-нета на ПК локалок.
Должно считаться все, что идет с адреса eth2 172.16.2.2 на ПК локалок.
НЕ считается любой обмен данными между ПК локалок.
Хочется все настроить элегантно, чтобы утилита iptables сама все считала и команда iptables -L -v -n -x выдавала готовый траффик.

Пока родил вот какую серию цепочек для подсчета траффика:

iptables -N TRAFF
iptables -A FORWARD -s ! 172.16.0.0 -j TRAFF
iptables -A OUTPUT -s 172.16.2.2 -j TRAFF

После этого, казалось бы, можно давать команду подсчета траффика для каждой машины локалки, например 172.16.1.216

iptables -A TRAFF -d 172.16.1.216

И далее можно смотреть суммарный траффик из разных источников одной командой:

iptables -L TRAFF -v -n -x | grep 172.16.1.216

Все бы оно хорошо, даже отлично. Но посмотрите на первую команду формирования цепочки TRAFF. Там не считаются только источники нетвердых IP адресов локалки. То есть можно гонять данные без подсчета траффика только между подсетками 172.16.1.0 и 172.16.2.0
А вот байтики из источников eth3 82.112.149.41 и т.п. будут считаться, как миленькие.
Как бы побороть эту ситуацию? Ведь команды типа такой:

iptables -A FORWARD -s ! 172.16.0.0 and ! 82.112.149.42 -j TRAFF

не существует. Или все-таки есть что-то похожее?
Буду весьма благодарен за советы.

P.S. Продолжение вопросов следует.

anonymous

Ребята, вопрос вроде как решен. Я лоханулся. Можно мою задачу решить командами:

iptables -N TRAFF
iptables -A FORWARD -i eth0 -j TRAFF
iptables -A OUTPUT -s 172.16.2.2 -j TRAFF

Таким образом, все транзитные пакеты, идущие на сервер из ветвей локалки (eth1, eth2, eth3) учитываться не будут. Именно то, что надо.

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