Results 1 to 15 of 220

Thread: Статистика и ограничение доступа по ip и mac

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Apr 2009
    Location
    Тамбов
    Posts
    123

    Post Статистика и ограничение доступа по ip и mac

    Новый скрипт (февраль 2011)
    Старую версию перенес сюда.

    Для работы этого скрипта необходимы установленные и настроенные пакеты lighttpd, php и cron.

    Для чего этот скрипт:
    Этот скрипт предназначен только для подсчета трафика. Также в нем существует возможность автоматически отключать интернет пользователям, которые превысили лимит трафика за месяц.

    Настройка подсчета трафика

    1.Создаем директории и необходимые файлы
    Code:
    touch /usr/local/sbin/lst/ip_piring.lst
    touch /usr/local/sbin/makestat
    touch /usr/local/sbin/makefilter
    chmod +x /usr/local/sbin/makestat
    chmod +x /usr/local/sbin/makefilter
    распаковываем содержимое statistic.zip в DocumentRoot lighttpd (/opt/share/www/)

    2.Создаем таблицу пользователей
    Code:
    touch /usr/local/etc/ethers
    в этот файл (/usr/local/etc/ethers) вписываем MAC и IP адреса пользователей для которых хотим открыть доступ к интернету и считать статистику
    Пример:
    Code:
    00:00:1c:1c:1a:00 192.168.1.2
    00:00:11:11:11:00 192.168.1.11
    00:00:1a:1a:1a:00 192.168.1.15
    После последнего пользователя необходимо ставить перевод строки.

    3.Создаем файл с пиринговыми сетями провайдера
    У моего провайдера есть пиринговые зоны для которых я хочу отдельно считать статистику
    В файл /usr/local/sbin/lst/ip_piring.lst пишем пиринговые зоны провайдера.
    Мой файл выглядит так (провайдер Домолинк-Тамбов):
    Code:
    78.132.128.0/17
    213.135.128.0/19
    193.203.60.0/22
    93.186.96.0/20
    193.33.62.0/23
    91.202.20.0/22
    193.34.12.0/22
    82.179.144.0/20
    195.19.96.0/19
    178.75.64.0/18
    4.Редактируем crontab
    Добавляем строчку
    Code:
    4-59/5 * * * * root cd /opt/share/www/statistic/ &&  /opt/bin/php ./billing.php > /dev/null 2>&1
    Будьте внимательны: если у вас имя пользователя отличается от root и DocumentRoot отличается от /opt/share/www/, то пропишите свои значения.

    5.Редактируем файл /usr/local/sbin/post-firewall
    Добавляем в него
    Code:
    #!/bin/sh
    /usr/local/sbin/makefilter
    - ограничение доступа в интернет по mac и ip.
    Фильтр работает независимо от того подключен или не подключен у вас жесткий диск/флешка.

    6.Редактируем файл /usr/local/sbin/makefilter
    код скрипта в прикрепленном файле

    7.Добавляем цепочки для подсчетата трафика:
    В файл /usr/local/sbin/post-boot добавим строчки:
    Code:
    #!/bin/sh
    /usr/local/sbin/makestat
    8.Редактируем файл /usr/local/sbin/makestat
    код скрипта в прикрепленном файле

    Сделаем файлы исполняемыми
    Code:
    chmod +x /usr/local/sbin/post-firewall
    chmod +x /usr/local/sbin/post-boot
    Code:
    flashfs save && flashfs commit && flashfs enable
    Можно запустить подсчет трафика не перезагружая роутер запустив:
    Code:
    /usr/local/sbin/makefilter
    /usr/local/sbin/makestat
    Дополнительно
    Если у вас не безлимитный трафик и необходимо отключать интернет пользователям при достижении определенного лимита внешнего трафика, делаем следующие:

    Разархивируйте limit.php (из архива limit.zip) в каталог со статистикой (/opt/share/www/statistic/).
    В каталоге billing (/opt/share/www/statistic/billing) создайте файл limit
    с таким форматом
    1)ip-адрес пользователя; 2)лимит входящего трафика; 3)лимит исходящего трафика; 4)суммарный лимит трафика.
    все лимиты задаются в мегабайтах
    например:
    Code:
    192.168.100.97 1750 275 2010
    Все лимиты задаются целыми числами.
    пользователю дано 1750МБ входящего, 275МБ исходящего трафик и 2010МБ суммарного трафика (входящий+исходящий). При достижении пользователем хотя бы одного из ограничений он будет отключен.
    В этот файл можно не вписывать всех пользователей, если мы не хотим задавать для них лимит.

    + Необходимо настроить кроны:
    В кронтаб добавить:
    Code:
    */5 * * * * root cd /opt/share/www/statistic/ &&  /opt/bin/php ./limit.php > /dev/null 2>&1
    1 0 1 * * root /user/local/sbin/makefilter
    Будьте внимательны: если у вас имя пользователя отличается от root и DocumentRoot отличается от /opt/share/www/, то пропишите свои значения.
    Первого числа каждого месяца все пользователи, заблокированные по лимиту трафика, будут разблокированы.


    Дополнительно у меня работает nshaper http://wl500g.info/showpost.php?p=161206&postcount=138
    сам скрипт у меня находится здесь /user/local/sbin/nshaper чтоб работать независимо от подключенной флешки/жесткого диска
    В настройках nshaper необходимо прописать путь к уже созданным файлам
    Code:
    # zone IP files search path
    ZONE_PATH="/usr/local/sbin/lst/ip_%ZONE%.lst"
    В /usr/local/sbin/post-firewall добавить строчку
    Code:
    /usr/local/sbin/nshaper start
    для сохранения настроек выполнить
    Code:
    flashfs save && flashfs commit && flashfs enable && reboot


    Немного о работе скрипта:
    Статистику смотрим http://192.168.1.1:8081/statistic/ или там где у вас находится роутер и настроен lighttpd.
    Скрипт считает весь трафик проходящий через роутер к пользователям прописанным в /usr/local/etc/ethers и внешний трафик самого роутера.
    World - внешний трафик (Интернет).
    City - пиринговый трафик (заданный в файле ip_piring.lst).

    DELTA - трафик за последние 5 минут.

    Содержимое страниц обновляется раз в 5 минут.

    Подсчет статистики за новый месяц будет начнется "с чистого листа". Статистику за прошлые месяцы работы скрипта можно будет посмотреть по адресу http://192.168.1.1:8081/statistic/2010-08.html - август 2010 года (аналогично другие месяцы).
    Attached Images Attached Images  
    Attached Files Attached Files
    Last edited by KinoMan; 28-02-2011 at 16:13. Reason: UPDATE

Similar Threads

  1. Роутер Asus как точка доступа для HotSpot ?
    By balamut in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 118
    Last Post: 20-03-2014, 14:30
  2. Вопросы по перепрошивке dir-320
    By gweri in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 344
    Last Post: 29-10-2011, 10:36
  3. Pppoe doesn't work on Oleg fw 1.9.2.7-10
    By mandgeo in forum WL-500gP Firmware Discussion
    Replies: 7
    Last Post: 18-01-2009, 15:04

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
  •