Results 1 to 6 of 6

Thread: Подсчет трафика по IP с передачей данных на сервер, Реализация.

  1. #1

    Post Подсчет трафика по IP с передачей данных на сервер, Реализация.

    пытаюсь настроить программу установив php и lighttpd из нового репозитория
    возникает ошибка php при запуске:
    Code:
    <b>Fatal error</b>:  Call to undefined function bcadd() in <b>/opt/share/www/IptablesExtractor.php</b> on line <b>94</b><br />
    написал в соответствующую ветку: http://wl500g.info/showthread.php?12...930#post255930

    В итоге это оказалось преодалимым с помощью двух самописных функций: bcadd и bcdiv .
    их реализации содрал с интернета, поиск по bcadd.php, bcdiv.php, bcmath.php сами функции не проверял,
    т.к. уперся в более важную проблемму.

    Не подсчитывается входящий траффик на RT-N16 ставил интерфейсы, как:
    Code:
    iptables -t mangle -I FORWARD -i vlan2 -j selector
    iptables -t mangle -I FORWARD -o vlan2 -j selector
    Нашел исходную статью, где описано подробно про подсчет цепочками: http://topola.unity.net/trafcoll

    Сделал пример: подлючил к сетке роутер и мой компьютеркомпьютер к нему.
    Получился такой скрипт добавления пользователских цепочек:
    Code:
    iptables -t mangle -N worldin
    iptables -t mangle -N worldout
    iptables -t mangle -A worldin -d 192.168.1.2 -j RETURN
    iptables -t mangle -A worldout -s 192.168.1.2 -j RETURN
    
    iptables -t mangle -N trafin
    iptables -t mangle -N trafout
    iptables -t mangle -I FORWARD -i vlan2 -j trafin
    iptables -t mangle -I FORWARD -o vlan2 -j trafout
    
    iptables -t mangle -A trafout -j worldout
    iptables -t mangle -A trafout -j RETURN
    iptables -t mangle -A trafin -j worldin
    iptables -t mangle -A trafin -j RETURN
    Проверял накопленные данные командой:
    Code:
    iptables -nvxL -t mangle
    Проблема в том, что цепочки вели подстчет только исходящего трафика
    для моего компа (192.168.1.2), а был и входящий, и его было гораздо больше.

    Посоветуйте, как изменить скрипт, для RT-N16 (WAN = vlan2) без испольования VPN соединения?
    (если испльзовать VPN и интерфейс ppp0 то все работает, я проверил)
    Last edited by Omega; 31-10-2012 at 13:59. Reason: 2 posts merged

  2. #2

    Post Подсчет трафика по IP с передачей данных на сервер, Реализация.

    набор из 5ти скриптов создан по мотивам темы: Статистика и ограничение доступа по ip и mac

    т.к. задача была скромнее: определить "почему сейчас интернет работает медленно?",
    то результаты я мог проанализировать и в Excel на отдельной машине.

    1. заготавливаем необходимые цепочки:

    Code:
    #!/bin/sh
    USERS="/tmp/local/root/usersmac"
    
    iptables -t mangle -N world
    iptables -t mangle -I FORWARD -i vlan2 -j world
    iptables -t mangle -I FORWARD -o vlan2 -j world
    
    
    cat $USERS | while read MACCL IPCL
    do
       iptables -t mangle -A world -s $IPCL -j RETURN
       iptables -t mangle -A world -d $IPCL -j RETURN
    done
                
    iptables -t mangle -A world -j RETURN
    (привожу только world, но можно добавить любые интересные "направления")

    2 обрубаем всех, кто не в списке пользователей от услуг подключения
    к интернет (так они быстрее прибегут, что бы дополнить список)

    Code:
    #!/bin/sh
    USERS="/tmp/local/root/usersmac"
    
      iptables -F MAC_IP
    
      iptables -N MAC_IP
      iptables -I FORWARD 1 ! -o br0 -j MAC_IP
    
        
    cat $USERS | while read MACL IPCL
    do
     iptables -A MAC_IP -s $IPCL -m mac --mac-source $MACL -j RETURN
    done
    
    iptables -A MAC_IP -j DROP
    - с этого момента начинает подсчитываться трафик, но смотреть командой iptables -nvxL -t mangle
    не удобно, да и счетчики, как мне показалось "забиваются".

    3. скрипт для периодического сброса информации и обнуления счетчиков,
    т.к. нужно смотеть в Excel то я скидываю в csv, формат данных можете подстроить под свои нужды:

    Code:
    #!/bin/sh
    wdir=/tmp/local/root/
    timeshtamp=$(date +"%Y-%m-%d %H:%M:%S")
    datafile=$(date +"%Y%m%d%H%M%S")"iptr.log"
    read timeshtampold<$wdir"reporttime"
    
    chain=world
    
    getChainRes()
    {
    /usr/sbin/iptables -t mangle -nvxL $chain|grep RETURN| grep -v grep|/usr/bin/tail -n 200|while read _pkts _bytes _target _prot _opt _in _out _source _destination; do
    echo ${timeshtampold}";"${timeshtamp}";"$chain";"$_bytes";"$_source";"$_destination>>$wdir"log/"$datafile
    
    done
    /usr/sbin/iptables -t mangle -Z $chain
    }
    
    if [[ `df | grep opt | awk '{print $4}'` -gt 2048 ]]
    
    then
    
    getChainRes;
    echo ${timeshtamp}>$wdir"reporttime";
    
    else 
    
    echo ${timeshtamp}" disk full">$wdir"reporttime";
    
    fi
    сейчас это запускается раз в 5 минут cronом.

    4. Передаем накопленные файлы на сервер:

    (т.к. заставить scp запускаясь по cron отправлять файлы не получилось,
    мне пришлось rsync, а для этого запустить rsync --daemon на сервере)

    Code:
    #!/bin/sh
    /opt/bin/rsync -avz --remove-source-files --password-file=/tmp/local/root/iplog.pw /tmp/local/root/log rsync://rsynccl@192.168.3.104:873/logfiles
    Тут замечу, что в --password-file на клиенте записывается только пароль!!!,
    в отличие от rsyncd сервера, где список пользователей идет с паролями, я потерял на этом 1час.

    5. ну и на сервере, все это закладывается в базу mysql скриптом:

    Code:
    #!/bin/sh
    LOGPATH=/home/admin/log
    
    find $LOGPATH -name '*iptr.log'|while read FILENAME; do
    mv $FILENAME $LOGPATH"/route.csv"
    mysqlimport -v --local --columns=time0,time1,chain,traff,srs,dst --fields-enclosed-by='' --fields-terminated-by=';' --lines-terminated-by='\n' -u iplog -ppassword iplog $LOGPATH"/route.csv"
    rm $LOGPATH"/route.csv"
    done
    В общем скрипт не претендует на точность,
    но теперь, я в курсе, кто виноват за "клин" в интернете.

    Все излагал кратко, все, что нужно есть на этом форуме и в сети.

    Буду рад услышать критику.

    P.S. первым был пойман CIO за открытием по сети 5Gb архива, уже осознал.
    Last edited by kpush; 07-03-2013 at 15:57.

  3. #3
    А насколько сильно этот скрипт загружает роутер?
    У меня стоит 500gpv2, на нем порядка 30 пользователей, потянет ли роутер этот скрипт?

  4. #4
    Роуер asus-500gp прошивка стоит последняя из ветки rtn.
    Изначально на роутер устанавливается скрипт Для Чайников из этой ветки http://wl500g.info/showthread.php?27...0%EA%F6%E8%FF)
    После чего точно следуя инструкциям устанавливаю приведенный скрипт, но в /statistic/ не отображаются заведенные ip и все по нулям (вебформа совершенно пустая)

    Code:
     iptables -nvxL -t mangle
    Chain PREROUTING (policy ACCEPT 8910 packets, 733961 bytes)
        pkts      bytes target     prot opt in     out     source               destination
    
    Chain INPUT (policy ACCEPT 4573 packets, 431887 bytes)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 r_selector_input  all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0
    
    Chain FORWARD (policy ACCEPT 3728 packets, 246521 bytes)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 selector   all  --  *      ppp0    0.0.0.0/0            0.0.0.0/0
           0        0 selector   all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0
    
    Chain OUTPUT (policy ACCEPT 2128 packets, 1097658 bytes)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 r_selector_output  all  --  *      ppp0    0.0.0.0/0            0.0.0.0/0
    
    Chain POSTROUTING (policy ACCEPT 2497 packets, 1121762 bytes)
        pkts      bytes target     prot opt in     out     source               destination
    
    Chain city (0 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.2
           0        0 RETURN     all  --  *      *       192.168.1.2          0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.11
           0        0 RETURN     all  --  *      *       192.168.1.11         0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.15
           0        0 RETURN     all  --  *      *       192.168.1.15         0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.246
           0        0 RETURN     all  --  *      *       192.168.1.246        0.0.0.0/0
    
    Chain r_city_input (0 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain r_city_output (0 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain r_selector_input (1 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 r_world_input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain r_selector_output (1 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 r_world_output  all  --  *      *       0.0.0.0/0            0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain r_world_input (1 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain r_world_output (1 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain selector (2 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 world      all  --  *      *       0.0.0.0/0            0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain world (1 references)
        pkts      bytes target     prot opt in     out     source               destination
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.2
           0        0 RETURN     all  --  *      *       192.168.1.2          0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.11
           0        0 RETURN     all  --  *      *       192.168.1.11         0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.15
           0        0 RETURN     all  --  *      *       192.168.1.15         0.0.0.0/0
           0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.246
           0        0 RETURN     all  --  *      *       192.168.1.246        0.0.0.0/0
    Я так понимаю что частично скрипт выполняется, т.к. ip которые не были занесены в список не имеют доступа в интернет.

  5. #5
    Ищу пакет для подсчета трафика по ip/mac, то есть мне нужен отдельный подсчет трафика для каждого устройства, а не общий.
    Поиск по пакетам не помог найти что-либо подходящее.
    Если не по теме, заранее извиняюсь.

  6. #6

    Нужен скрипт для подсчета траффика.

    Имею связку Asus wl-520gu (прошивка tomato-1.28) + UM150.
    Интертелеком, "Вiльний доступ".
    Все настроено и работает отлично.
    Подскажите скрипт, который бы подсчитывал суммарный траффик за сутки и, до приближения к порогу 500 МБ изменил бы до конца суток стандартные логин/пароль для подключения к Интертелекому (IT/IT) на тестовые (IT_TEST/IT_TEST) .

Similar Threads

  1. Экономия трафика (Privoxy + Polipo)
    By igor77777 in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 143
    Last Post: 24-08-2016, 15:21
  2. Контроль трафика через роутер (iftop)
    By Sharky in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 69
    Last Post: 04-08-2013, 15:17
  3. VPN сервер на WL-500gP
    By Coolty in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 154
    Last Post: 22-01-2013, 03:41
  4. Анализ трафика на wl500gP
    By mihalich in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 178
    Last Post: 19-05-2012, 14:59
  5. Gmail - отправка почты и backup данных
    By DaemoniZ in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 44
    Last Post: 15-05-2012, 07:09

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •