Вопрос по Netflow (как считать трафик самого сервера)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Вопрос по Netflow

Сообщение Alex2ndr »

Всем доброго времени суток!
Есть вопросик по netflow. Ситуация такая - есть спутниковый интернет и выделенный сервер в котором собственно и стоит dvb карта и который раздает инет через nat (точнее маскарадинг) в локальную сеть. На интерфейсе смотрящем в локальную сеть запущен netflow-сенсор (/usr/sbin/fprobe -ieth0 -fip localhost:555), который скидывает статистику на коллектор, расположенный на той-же машине (/usr/bin/flow-capture -w /distr/logflow -N 3 0/localhost/555). Потом все это самописным скриптом кидается в базу данных (mysql) из которой уже выбирается все что нужно посредством web-морды. Вот скрипт-парсер:

Код: Выделить всё

#!/bin/sh
# vim: sw=4 ts=4 expandtab ai

TRAFFPATH="/distr/logflow"
FILTER="/home/alex/flow.acl"
DBUSER="admin"
DBPASS="adminpass"
DBHOST="localhost"
DBPORT="3306"
DBBASE="traffic"

Parser () {

    for i in $( /usr/bin/find $TRAFFPATH -name ft* -mmin -60 )
    do
        /usr/bin/flow-cat $i | /usr/bin/flow-nfilter -F $1 -f \
        $FILTER | /usr/bin/flow-export -f3 \
        -m UNIX_SECS,UNIX_NSECS,DOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT,PROT \
        -u "$DBUSER:$DBPASS:$DBHOST:$DBPORT:$DBBASE:$2" &>/dev/null
    done
}

Parser "downloadtraff" "download_flow"
Parser "uploadtraff" "upload_flow"

Вот набор правил для парсера (он же /home/alex/flow.acl):

Код: Выделить всё

filter-primitive mynet
  type ip-address-prefix
  permit 192.168.0.0/24
  default deny

filter-primitive internet
  type ip-address-prefix
  deny 192.168.0.0/24
  permit 0.0.0.0/0

filter-definition downloadtraff
  match ip-source-address internet
  match ip-destination-address mynet

filter-definition uploadtraff
  match ip-source-address mynet
  match ip-destination-address internet

Вот текущее положение по интерфейсам -

Код: Выделить всё

dvb0_0    Link encap:Ethernet  HWaddr хх:хх:хх:хх:хх:хх
          inet addr:192.168.255.1  Bcast:192.168.255.255  Mask:255.255.255.255
          inet6 addr: fe80::2d0:5cff:fec6:903e/64 Scope:Link
          UP BROADCAST RUNNING NOARP MULTICAST  MTU:4096  Metric:1
          RX packets:183913 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:152871625 (145.7 MiB)  TX bytes:0 (0.0 B)
          Base address:0x202

eth0      Link encap:Ethernet  HWaddr 00:80:48:19:2f:96
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::280:48ff:fe19:2f96/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9641928 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7420947 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1525422717 (1.4 GiB)  TX bytes:1920890684 (1.7 GiB)
          Interrupt:19 Base address:0xc000

lo        ...

ppp9      Link encap:Point-to-Point Protocol
          inet addr:92.36.29.105  P-t-P:212.119.106.151  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:2269 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13273 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:225015 (219.7 KiB)  TX bytes:4691755 (4.4 MiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:172.хх.хх.33  P-t-P:172.хх.хх.34  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:99245 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:84581474 (80.6 MiB)

где
eth0 - интерфейс в локальную сеть
ppp9 - интерфейс исходящего канала. Скайлинковский телефон (cdma). IP динамический.
tun0 - openvpn канал до провайдера. Работает через скайлинковский канал. На нем и висит нат (/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE)
dvb0_0 - интерфейс dvb-карты (читай то что летит на тарелку), на который приходит весь трафик - причем трафик приходит не только для моего адреса а для всех - и потом отбирается по адресу назначения (адрес назначения = адресу интерфейса tun0). Ip адрес для данного интерфейса не имеет значения.
Работает это все по такой схеме (стандартной между прочим)
запрос -> tun0 -> ppp9 -> телепорт_провайдера(он осуществляет запрос нужной страницы в инете) -> спутник -> тарелка -> dvb0_0 -> ответ
Собственно вопрос вот в чем - трафик то считается - но считается только для клиентов сети (ну ещеб - слушаем то на интерфейсе в локалку). А сервер тоже потребляет некоторый трафик (например на dist-upgrade). Только вот как его считать (т е где повесить сенсоры и какие правила применить для flow-nfliter) я не знаю. Очень не хочется вешать сенсор на dvb0_0 т к мусорный поток там просто огромный и соответственно и файлы будут большими и фильтровать их напряжно. Может можно как-то считать весь трафик для самого сервера через loopback? или может еще какое-нить стандартное решение? Какие применяются способы в стандартном случае ? (те с одним интерфейсом в инет а не с такой солянкой)
Всем спасибо.

PS система debian lenny.
Спасибо сказали: