1. Приветствую гостей и пользователей нашего форума! Первый раз вы у нас или же давно участвуете в жизни ресурса, хочу напомнить несколько моментов.

    1) Пользуемся поиском по форуму! Зачастую информация может находиться не по разделу!

    2) Раздел ИНФО-продуктов относительно новый, но имеем уже более 3000 высококлассных материалов (пользуемся сортировкой по прификсам).

    3) И самое важное, КАК КАЧАТЬ БЕЗ ОГРАНИЧЕНИЙ, вся информация находится по этой ссылке КУПИТЬ VIP

    4) Временная акция, получи +5 постов за вступление в нашу группу "Вконтакте" Более подробно ТУТ

    5) Веди активную жизнь на форуме и получай рубли на личный счёт!

    Скрыть объявление
  2. На нашем форуме Null-Prog действует серьёзное правило касательно размещения материалов!

    ДЛЯ РЕЛИЗЁРОВ: категорически запрещается выкладка материалов на файлообменники типа Deposit, letitbit и другие, требующие просмотров рекламы, обрезающие скорость и тд. Нарушителям, первые 2 раза предупреждения, далее БАН. Тему по этому поводу можно посмотреть ТУТ

    Скрыть объявление
  3. В тестовом режиме на нашем форуме открыт онлайн конструктор сайтов. Вы можете попробовать создать свой сайт у НАС, интуитивно понятный интерфейс, переведёт на 95%, быстрый экспорт проекта, от вас только перетаскивать элементы и вставить в них необходимый текст!

    Все вопросы ТУТ

    Скрыть объявление

  4. Скрыть объявление
  5. Уважаемые форумчане, открывается новый раздел форума, посвящённый ремонту и эксплуатации автомобилей. Просмотреть его можно ТУТ

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

    Напоминаю, сообщения в разделе АВТО не учитываются, общение не ограничено.

    Скрыть объявление
  6. Объявляется набор Модераторов на различные раздел форума, свои заявки можно оставлять в ЭТОМ разделе, перед оставлением заявки рекомендуется ознакомиться с ПРАВИЛАМИ для модераторов.

УСТАНОВКА И НАСТОРЙКА СВОБОДНОЙ БИЛЛИНГОВОЙ СИСТЕМЫ KATRIN В CENTOS И DEBIAN.

Тема в разделе "Linux", создана пользователем Sam Jack, 3 июн 2015.

  1. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    13.755
    Симпатии:
    4.750
    Свободная биллинговая система Katrin

    Базовые модули написаны на языке Си, в качестве СУБД используется MySQL. Поддерживается сбор информации о трафике через netflow и ipcad организация работы пользователей через pppd и iptables (модули pppoe и radius в планах). Для разработки Web интерфейса задействован Python фреймоворк Django.

    Из возможностей реализовано: Учет трафика по зонам; Действия тарифов по определенным дням недели; Зависимость цены от времени суток, выходных/праздничных дней и т.д.; Установление пропускной способности в тарифных планах.

    Планируется: Тарификация по времени; Периодические отчисления (месячная и дневная абонплата); Изменение тарифного плана по расписанию; Создание месячных предоплаченых по трафику пакетов; Система предоплаченых карт.

    Возможность учета трафика на платформах виртуализации OpenVz и Xen.

    Поддерживаемые операционные системы из rpm и deb пакетов: ALT Linux, Debian, CentOs.

    Установка в Debian 4-5-6 x86-x64.

    Устанавливаем MySql.

    apt-get update
    sudo apt-get install mysql-server


    Во время установки MySql от вас будет запрошен пароль для MySql.

    Создаем базу mysql:

    Далее конектимся к консоли MySql от имени супер пользователя root.

    mysql -u root -p


    после чего у вас будет запрошен пароль от MySql введите пароль.

    Создадим базу командой.

    create database katrin CHARSET=utf8;


    Для выхода из консоли упаравления MySql введите команду:

    exit

    Устанавливаем необходимые пакеты для сборки и нормальной работы билинговой системы katrin.

    sudo apt-get install libconfuse0 python-dateutil python-mysqldb python-django screen


    Устанавливаем сенсор ipcad по средством которого мы будем учитывать весь трафик на сервере.

    sudo apt-get install ipcad


    либо из готового deb.пакета

    wget http://katrin.distance.ru/downloads/debian/ipcad_3.7.3-1_amd64.deb

    sudo dpkg -i ipcad_3.7.3-1_amd64.deb


    Далее настраиваем конфиг ipcad.

    IPCAD может получать информацию о трафике различными методами. Первым делом необходимо указать в /etc/ipcad.conf куда ipcad будет отправлять
    netflow поток:
    netflow export destination 127.0.0.1 9996;


    По умолчанию - с помощью libpcap. При использовании этого метода в самом простом случае прописать интерфейс, на котором необходимо захватывать пакеты.
    interface eth0;


    Чтобы информация о трафике была наиболее точной, настраивать ipcad необходимо с ULOG. Для этого заменяем
    "interface eth0;"
    на
    interface ulog group 3;


    и настраиваем iptables чтобы необходимые пакеты попадали в ULOG, например:
    sudo iptables -I FORWARD -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50


    вот пример готового конфига ipcad:
    #
    # Configuration file for ipcad - Cisco IP accounting simulator daemon.
    # Copyright (c) 2001, 2002, 2003, 2004, 2005
    # Lev Walkin <vlm@lionet.info>.
    #
    # Please see ipcad.conf(5) for additional explanations.
    # Please contact me if you have troubles configuring ipcad. My goal is to make
    # initial configuration easier for new users, so your input is valuable.
    #

    ##################
    # GLOBAL OPTIONS #
    ##################

    #
    # Enable or disable capturing UDP and TCP port numbers, IP protocol and
    # ICMP types for RSH output.
    #
    # capture-ports {enable|disable};
    #
    # Enabling this will BREAK Cisco RSH output format compatibility,
    # increase memory requirements and may slow down traffic processing.
    # This option takes effect IMMEDIATELY, that is, it can be specified
    # multiple times, even between interfaces configuration.
    # This option has NO effect on NetFlow operation (NetFlow always captures
    # port information).
    #

    capture-ports disable;

    #
    # Buffers to be used for transferring the data from the kernel,
    # if applicable (BPF, ULOG).
    # Using larger buffers may increase the performance but will
    # affect responsiveness.
    #
    # buffers = <number>[{k|m}];
    #
    # Reasonable defaults are used if this parameter is not set.
    #

    ## buffers = 64k;


    #####################
    # INTERFACE OPTIONS #
    #####################

    #
    # interface <iface> [ promisc ] [ input-only ]
    # [ netflow-disable ] [ filter "<pcap_filter>" ];
    # OR
    # interface ulog group <group> [, group <group> ...]
    # [ netflow-disabled ];
    # OR
    # interface ipq [ netflow-disabled ]; # man libipq(3)
    # OR
    # interface {divert|tee} port <divert-port> # man divert(4)
    # [ input-only ] [ netflow-disabled ];
    # OR
    # interface file <tcpdump-output.pcap> [ netflow-disabled ];
    #
    # Options meaning:
    #
    # promisc:
    # Put interface into promiscuous mode.
    # This enables listening for the packets which are not destined for
    # this host and thus ipcad will count and display all the traffic within
    # the local network. Note that the interface might be in promiscuous mode
    # for some other reason.
    #
    # input-only:
    # Use kernel feature of counting only incoming packets.
    #
    # netflow-sampled: (DO NOT ENABLE THIS OPTION, unless you have to!)
    # If the NetFlow export mechanism is used, this option instructs
    # the interface to supply only one out of N packets to the NetFlow
    # accounting code, thus lowering the CPU requirements. The value of N
    # is configured explicitly in a NetFlow configuration section.
    # NOTE: This option is NOT used to enable NetFlow on the interface,
    # it just modifies the NetFlow behavior on this interface.
    # DO NOT ENABLE THIS OPTION, UNLESS YOU HAVE TO!
    #
    # netflow-disable:
    # By default, all interfaces are included into NetFlow accounting.
    # This option is used to disable NetFlow on a particular interface.
    #
    # filter:
    # Install a custom filter on packets instead of basic
    # IP protocol filter. Requires libpcap (even if BPF is being used).
    # May be employed to eliminate CPU overhead on passing unnecessary
    # data between the kernel and user space (by installing the filter
    # directly into the kernel).
    #
    # NOTES:
    # * "input-only" directive must be supported by kernel.
    # Probably, you were noticed about it during the compilation process
    # if it was not supported.
    # FreeBSD 3.x and elder kernels do not support this feature.
    # * ULOG packet source (interface ulog) is supported under
    # Linux >= 2.4.18-pre8.
    # You should configure iptables to dump the packet stream
    # into the appropriate group, i.e.:
    # iptables -A OUTPUT -j ULOG --ulog-nlgroup <group>
    # Given ULOG groups will be OR'ed together.
    # * A wildcard (*) may be specified as part of an interface name.
    #
    #interface eth0;
    #interface ed1 promisc filter "ip and not dst net 192.168.0.0/16";
    #interface sbni0 input-only netflow-disable; # Disable NetFlow.
    #interface ppp*; # Dynamically pick up PPP interfaces.
    interface ulog group 3; # Use ULOG, do not disable NetFlow.
    #interface ipq; # Use Linux IPQ (libipq(3))
    #interface tee port 123; # Use BSD ipfw(8)'s tee.
    #interface divert port 321 netflow-disable; # Use ipfw(8)'s divert(4).

    #
    # aggregate <ip>/<masklen> strip <maskbits>;
    #
    # Aggregate addresses from the specified network (<ip>/<masklen>),
    # by AND'ing with specified mask (<maskbits>).
    #
    #

    #aggregate 192.168.0.0/16 strip 32; /* Don't aggregate internal range */
    #aggregate 0.0.0.0/0 strip 24; /* Aggregate external networks */

    #
    # aggregate <port_range_start>[-<port_range_end>] into <port>;
    #
    # Aggregate port numbers. Meaningful only if capture-ports is enabled.
    #

    aggregate 1024-65535 into 65535; /* Aggregate wildly */
    aggregate 3128-3128 into 3128; /* Protect these ports */
    aggregate 150-1023 into 1023; /* General low range */


    ##########################
    # NetFlow EXPORT OPTIONS #
    ##########################

    #
    # Enable Cisco NetFlow export method.
    # NetFlow uses UDP to feed flow information to the receiver.
    # If the destination is not specified, NetFlow is disabled.
    #

    netflow export destination 127.0.0.1 9996;
    netflow export version 5; # NetFlow export format version {1|5}
    netflow timeout active 1; # Timeout when flow is active, in minutes
    netflow timeout inactive 5; # Flow inactivity timeout, in seconds
    netflow engine-type 73; # v5 engine_type; 73='I' for "IPCAD"
    netflow engine-id 1; # Useful to differentiate multiple ipcads.

    # The following option is enabled by the "netflow-sampled" interface flag.
    #netflow sampling-mode packet-interval 10; # 1 out of 10 packets accounted
    # DO NOT ENABLE THIS UNLESS YOU KNOW WHAT ARE YOU DOING.

    #
    # NetFlow protocol exports an SNMP id instead of the interface name
    # (i.e., "eth0", "ppp32"). The following statements options define
    # mapping between the interface names and a set of "SNMP identifiers".
    #
    netflow ifclass eth mapto 0-99; # i.e., "eth1"->1, "eth3"->3
    netflow ifclass fxp mapto 0-99; # i.e., "fxp4"->4, "fxp0"->0
    netflow ifclass ppp mapto 100-199; # i.e., "ppp32"->532, "ppp7"->507
    netflow ifclass gre mapto 200-299;
    netflow ifclass tun mapto 300-399; # i.e., "tun0"->300

    ######################
    # RSH SERVER OPTIONS #
    ######################

    #
    # Enable RSH Server:
    #
    # rsh {enable|yes|on|disable|no|off} [at <listen_ip>];
    #
    # If "at <listen_ip>" omitted, rsh server listens on IP address 0.0.0.0,
    # which may be undesirable.
    #

    rsh enable at 127.0.0.1;

    #
    # RSH access rules:
    #
    # rsh [<user>@]<host_addr> {admin|backup|[default]|view-only|deny};
    #

    rsh root@127.0.0.1 admin; /* Can shutdown ipcad */
    rsh staff@127.0.0.1 backup; /* Can dump/restore/import accounting table */
    rsh yourself@127.0.0.1; /* Can view and modify accounting tables */
    /* Note the order! */
    rsh luser@127.0.0.1 deny; /* Deny this user from even viewing tables */
    rsh 127.0.0.1 view-only; /* Other users can view current tables */

    # Keep IP packet time to live reasonably low to avoid remote attacks.
    # (The rsh client must reside no more than three hops away from the
    # router running ipcad.)
    rsh ttl = 3;

    # Set rsh timeout for the same purpose.
    rsh timeout = 30;

    #
    # Dump active IP accounting table to this file on exit and read on startup.
    # (read about -s and -r options in ipcad(8) manual page)
    # NOTE: This setting has no effect on NetFlow operation. The flow cache
    # contents are flushed to the collector upon ipcad termination.
    #

    dumpfile = ipcad.dump; # The file is inside chroot(), see below...

    #################
    # OTHER OPTIONS #
    #################

    #
    # Chroot to this directory before processing.
    #
    # Of course, you could disable chroot()'ing by commenting it out,
    # but it is not recommended, so I left this confusing default
    # to encourage you to change it.
    #

    #chroot = /adm/tmp;

    #
    # File to keep getpid() in it. ipcad will also hold a lock.
    #
    # WARNING: Pidfile is created AFTER chroot()'ing, so if you're using
    # chroot statement above, make sure the path to the pidfile exists
    # inside chrooted environment.
    #

    pidfile = /var/run/ipcad.pid;

    #
    # UID/GID privileges dropping
    # Please note: RSH service will be UNAVAILABLE when uid is not zero.
    # Use it only when you know what are you doing (i.e., NetFlow without RSH).
    #
    # uid = 65534;
    # gid = 65534;

    #
    # Few useful settings.
    #

    #
    # Memory usage limit for storing per-stream entries.
    #
    # memory_limit = <number>[{k|m|e}];
    # Where k, m and g are for kilobytes, megabytes or table "entries".
    #

    memory_limit = 10m;


    перезапускаем ipcad
    /etc/init.d/ipcad restart


    На этом все готово для установки katrin.

    Ставим ядро.

    wget http://katrin.distance.ru/downloads/debian/katrin_1.5.0-1_amd64.deb
    sudo dpkg -i katrin_1.5.0-1_amd64.deb


    после чего правим конфиг katrin
    nano /etc/katrin/katrin.conf

    а именно необходимо ввести имя бд и пароль от бд.
    После чего не забываем сохранить изминения в файле.

    Устанавливаем web-интерфейс из пакета:

    wget http://katrin.distance.ru/downloads/debian/katrin-web_1.5.0-1_amd64.deb
    sudo dpkg -i katrin-web_1.5.0-1_amd64.deb


    в файле /var/www/katrin-web/settings.py настраиваем параметры доступа к базе данных а так-же раскоментируем необходимые модули например traf.

    nano /var/www/katrin-web/settings.py


    Конфиг для наглядности:

    from settings_default import *

    # Katrin-web specific settings
    KATRIN_MODULES = (
    # Uncomment line with service, which you want see at web-interface
    # 'user', # User interface
    'traff', # Traffic module
    # 've', # Rent virtual enviroment, based on OpenVZ
    # 'tel', # Tel module
    )


    # Database connect settings
    DATABASE_NAME = 'katrin'
    DATABASE_USER = 'root'
    DATABASE_PASSWORD = '1111'
    DATABASE_HOST = '' # Set to empty string for localhost.
    DATABASE_PORT = '' # Set to empty string for default.

    # Value Added Tax (in Russia NDS)
    VAT_PERCENT = 18


    #Traff service specific settings
    # Show stats without cost
    WITHOUT_COST = False
    # Lines per stat page
    LINES_PER_STAT_PAGE = 100

    # Amount ip in detail stat of traffic module
    AMOUNT_IP = 25


    # Django root urls schema
    ROOT_URLS = ''

    # Don't remove this
    INSTALLED_APPS += KATRIN_MODULES


    Cоздаем структуру базы данных:
    cd /var/www/katrin-web/

    ./manage.py syncdb


    Будет запрошен логин и пароль для суперпользователя - запомните. Это потребуется для входа в панель администрирования.

    Далее выставим права на необходимые файлы:

    chmod 755 /usr/bin/katrind
    chmod 755 /usr/bin/katrin-dropd
    chmod 755 /usr/bin/katrin-functions


    Далее напишем скрипты для атоматической блокировки и разблокировки ip:

    Для платформы виртуализации XEN:

    nano /usr/bin/traff-ip-drop

    и впишем туда

    #!/bin/bash

    . katrin-functions

    function usage() {
    traff_usage
    }

    init_and_validate "$@"

    if [ $abonent = "client" ]; then
    validate_ip "$ip"
    USER_IP=$ip
    NUM_RULES=`iptables -L KATRIN -v -n |grep $USER_IP|grep MARK|wc -l`

    if [ $NUM_RULES = 0 ]; then
    iptables -I KATRIN -s $USER_IP -j MARK --set-mark 2
    iptables -I KATRIN -d $USER_IP -j MARK --set-mark 2
    fi

    mailto_client "disabled"
    else
    mailto_clientgroup "Traff" "disabled"
    fi


    Пишем скрипт разблокировки

    nano /usr/bin/traff-ip-enable


    #!/bin/bash

    . katrin-functions

    function usage() {
    traff_usage
    }

    init_and_validate "$@"

    if [ $abonent = "client" ]; then
    validate_ip "$ip"
    USER_IP=$ip
    NUM_RULES=`iptables -L KATRIN -v -n |grep $USER_IP|grep MARK|wc -l`

    for i in `seq 1 $NUM_RULES`; do
    iptables -D KATRIN -s $USER_IP -j MARK --set-mark 2
    iptables -D KATRIN -d $USER_IP -j MARK --set-mark 2
    done
    mailto_client "enabled"
    else
    mailto_clientgroup "Traff" "enabled"
    fi

    Далее делаем скриты исполняемыми.

    chmod 755 /usr/bin/traff-ip-enable
    chmod 755 /usr/bin/traff-ip-drop


    теперь нам необходимо написать соответствующие правила iptables для katrin.
    в своем примере буду использовать два диапазона ip адресов localnet - это будет внутрений и бесплатный трафик и inet внешний платный трафик.

    Создадим файл со списокм внутрених и бесплатных ресурсов.

    nano /root/localnet.txt


    И впишем туда диапазоны ip адресов
    1.0.0.0/8
    82.209.192.0/18
    86.57.128.0/17
    93.84.0.0/15
    178.120.0.0/13
    194.158.192.0/19
    194.226.120.0/22
    194.226.124.0/23
    193.232.248.0/22

    после чего сохраняем данный файл.

    Далее создадим файл с правилами iptables

    nano /root/ip.sh


    и впишем туда

    #!/bin/bash
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -F
    iptables -X

    # Цепочка для помещений правил ANTISPOOF скриптом xen /etc/xen/scripts/vif-common.sh
    # В данной версии скрипта антиспуфинг не задействован.
    iptables -N ANTISPOOF

    # MARKS:
    # 2 - запрещенные katrin
    # 7 - локальная сеть
    # 8 - разрешенные katrin

    # Маркируем локальные сети
    ipset -L localnets -n >/dev/null 2>&1 || ipset -N localnets nethash
    ipset -F localnets
    iptables -N LOCALNETS
    for NET in `cat /root/localnet.txt`
    do
    ipset -A localnets $NET
    done
    iptables -A LOCALNETS -m set --set localnets src -m set --set localnets dst -j MARK --set-mark 7


    # Цепочка katrin в которой биллинг будет управлять доступом
    iptables -N KATRIN


    # Отправляем на проверку в LOCALNETS
    iptables -A FORWARD -j LOCALNETS

    # Если локальная сеть, то отправляем данные в ipcad через ULOG
    iptables -A FORWARD -m mark --mark 7 -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50

    # Т.к. данные уже отправлены можем их разрешить
    iptables -A FORWARD -m mark --mark 7 -j ACCEPT

    # Весь остальной (не локальный трафик) отправляем на проверку правилами, которые добавлены katrin
    # Предварительно помечаем пакеты как разрешенные
    iptables -A FORWARD -j MARK --set-mark 8
    iptables -A FORWARD -j KATRIN

    # Запрещаем трафик запрещенный katrin
    iptables -A FORWARD -m mark --mark 2 -j REJECT

    # Записываем и разрешаем весь трафик, разрешенный katrin
    iptables -A FORWARD -m mark --mark 8 -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50
    iptables -A FORWARD -m mark --mark 8 -j ACCEPT

    # Если нужно учитывать входящий трафик с внешних хостов, когда клиент блокирован,
    # то перенесите блокировку с mark 2 сюда.

    iptables -P FORWARD DROP

    # Выставляем все пользователям статус не заблокированных для того чтобы katrin-dropd
    # заполнил цепочку KATRIN запрящающими правилами и обновил статусы в базе.
    mysql -u root -p1111 katrin -e 'update accounts set blocked=0;'


    Далее поместим данный скрипт в атозагрузку:

    nano /etc/rc.local


    и впишем туда

    sh /root/ip.sh


    так-же впишем сюда запуск web-интефейса:

    cd /var/www/katrin-web/ && screen -d ./manage.py runserver 0.0.0.0:81


    "-d" - означает что screen сразу "свернет" сессию.
    сохраняем файл rc.local.

    Для платформы виртуализации OpenVz

    В своем примере буду использовать два диапазона ip адресов localnet - это будет внутрений и бесплатный трафик и inet внешний платный трафик.

    Создадим файл со списокм внутрених и бесплатных ресурсов.

    nano /root/localnet.txt


    И впишем туда диапазоны ip адресов
    1.0.0.0/8
    82.209.192.0/18
    86.57.128.0/17
    93.84.0.0/15
    178.120.0.0/13
    194.158.192.0/19
    194.226.120.0/22
    194.226.124.0/23
    193.232.248.0/22

    после чего сохраняем данный файл.

    Далее создадим файл с правилами iptables

    nano /root/ip.sh


    и впишем туда

    #!/bin/bash
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -F
    iptables -X

    # Цепочка для помещений правил ANTISPOOF скриптом xen /etc/xen/scripts/vif-common.sh
    # В данной версии скрипта антиспуфинг не задействован.
    iptables -N ANTISPOOF
    iptables -N KATRIN
    iptables -F KATRIN
    iptables -F FORWARD -t mangle

    # MARKS:
    # 2 - запрещенные katrin
    # 7 - локальная сеть
    # 8 - разрешенные katrin
    # 5 - признак попадания SCR в локальные сети

    # Маркируем локальные сети

    for NET in `cat /root/localnet.txt`
    do
    iptables -A FORWARD -t mangle -s $NET -j MARK --set-mark 5
    done

    for NET in `cat /root/localnet.txt`
    do
    iptables -A FORWARD -t mangle -m mark --mark 5 -d $NET -j MARK --set-mark 7
    done

    # Если локальная сеть, то отправляем данные в ipcad через ULOG
    iptables -A FORWARD -m mark --mark 7 -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50

    # Т.к. данные уже отправлены можем их разрешить
    iptables -A FORWARD -m mark --mark 7 -j ACCEPT

    iptables -A FORWARD -j KATRIN

    # Записываем и разрешаем весь трафик, разрешенный katrin
    iptables -A FORWARD -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50
    iptables -A FORWARD -j ACCEPT

    iptables -P FORWARD DROP

    # Выставляем все пользователям статус не заблокированных для того чтобы katrin-dropd
    # заполнил цепочку KATRIN запрящающими правилами и обновил статусы в базе.
    mysql -u root -p1111 katrin -e 'update accounts set blocked=0;'



    Далее поместим данный скрипт в атозагрузку:

    nano /etc/rc.local


    и впишем туда

    sh /root/ip.sh


    так-же впишем сюда запуск web-интефейса:

    cd /var/www/katrin-web/ && screen -d -m ./manage.py runserver 0.0.0.0:81


    "-d" - означает что screen сразу "свернет" сессию.
    сохраняем файл rc.local.

    Далее напишем скрипты для атоматической блокировки и разблокировки ip:

    nano /usr/bin/traff-ip-drop


    #!/bin/bash
    PATH=/root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin

    . katrin-functions

    function usage() {
    traff_usage
    }

    init_and_validate "$@"

    if [ $abonent = "client" ]; then
    validate_ip "$ip"
    USER_IP=$ip
    NUM_RULES=`iptables -L KATRIN -v -n |grep $USER_IP|grep REJECT|wc -l`

    if [ $NUM_RULES = 0 ]; then
    iptables -A KATRIN -s $USER_IP -j REJECT
    iptables -A KATRIN -d $USER_IP -j REJECT
    fi

    mailto_client "disabled"
    else
    mailto_clientgroup "Traff" "disabled"
    fi



    nano /usr/bin/traff-ip-enable


    #!/bin/bash
    PATH=/root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin

    . katrin-functions

    function usage() {
    traff_usage
    }

    init_and_validate "$@"

    if [ $abonent = "client" ]; then
    validate_ip "$ip"
    USER_IP=$ip
    NUM_RULES=`iptables -L KATRIN -v -n |grep $USER_IP|grep REJECT|wc -l`

    for i in `seq 1 $NUM_RULES`; do
    iptables -D KATRIN -s $USER_IP -j REJECT
    iptables -D KATRIN -d $USER_IP -j REJECT
    done
    mailto_client "enabled"
    else
    mailto_clientgroup "Traff" "enabled"
    fi


    Далее делаем скритпы исполняемыми:

    chmod 755 /usr/bin/traff-ip-drop
    chmod 755 /usr/bin/traff-ip-enable


    сообственно с настройкой все.

    Запускаем katrin командой:

    katrind


    Запускаем web-интерфейс:

    Запускаем screen командой:

    screen


    Переходим в нужный каталог

    cd /var/www/katrin-web/

    ./manage.py runserver 0.0.0.0:81


    сворачиваем сесию screen сочитанием клавиш Ctrl+A+D.

    На этом всё установка в debian завершена.


    Запуск web-сервера в режиме отладки:
    sudo ./manage.py runserver 0.0.0.0:80
    (если у вас 80-ый порт уже используется то нужно выполнять sudo ./manage.py runserver 0.0.0.0:81
    Будет запрошен логин и пароль для суперпользователя - запомните. Это потребуется для входа в панель администрирования.
    Страница пользователя http://server/ Раздел администратора http://server/admin


    Свободная биллинговая система Katrin

    Базовые модули написаны на языке Си, в качестве СУБД используется MySQL. Поддерживается сбор информации о трафике через netflow и ipcad организация работы пользователей через pppd и iptables (модули pppoe и radius в планах). Для разработки Web интерфейса задействован Python фреймоворк Django.

    Из возможностей реализовано: Учет трафика по зонам; Действия тарифов по определенным дням недели; Зависимость цены от времени суток, выходных/праздничных дней и т.д.; Установление пропускной способности в тарифных планах.

    Планируется: Тарификация по времени; Периодические отчисления (месячная и дневная абонплата); Изменение тарифного плана по расписанию; Создание месячных предоплаченых по трафику пакетов; Система предоплаченых карт.

    Возможность учета трафика на платформах виртуализации OpenVz и Xen.

    Поддерживаемые операционные системы из rpm и deb пакетов: ALT Linux, Debian, CentOs.

    Установка в Debian 4-5-6 x86-x64.

    Устанавливаем MySql.

    apt-get update
    sudo apt-get install mysql-server


    Во время установки MySql от вас будет запрошен пароль для MySql.

    Создаем базу mysql:

    Далее конектимся к консоли MySql от имени супер пользователя root.

    mysql -u root -p


    после чего у вас будет запрошен пароль от MySql введите пароль.

    Создадим базу командой.

    create database katrin CHARSET=utf8;


    Для выхода из консоли упаравления MySql введите команду:

    exit


    Устанавливаем необходимые пакеты для сборки и нормальной работы билинговой системы katrin.

    sudo apt-get install libconfuse0 python-dateutil python-mysqldb python-django screen


    Устанавливаем сенсор ipcad по средством которого мы будем учитывать весь трафик на сервере.

    sudo apt-get install ipcad


    либо из готового deb.пакета

    wget http://katrin.distance.ru/downloads/debian/ipcad_3.7.3-1_amd64.deb

    sudo dpkg -i ipcad_3.7.3-1_amd64.deb


    Далее настраиваем конфиг ipcad.

    IPCAD может получать информацию о трафике различными методами. Первым делом необходимо указать в /etc/ipcad.conf куда ipcad будет отправлять
    netflow поток:
    netflow export destination 127.0.0.1 9996;


    По умолчанию - с помощью libpcap. При использовании этого метода в самом простом случае прописать интерфейс, на котором необходимо захватывать пакеты.
    interface eth0;


    Чтобы информация о трафике была наиболее точной, настраивать ipcad необходимо с ULOG. Для этого заменяем
    "interface eth0;"
    на
    interface ulog group 3;


    и настраиваем iptables чтобы необходимые пакеты попадали в ULOG, например:
    sudo iptables -I FORWARD -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50


    вот пример готового конфига ipcad:
    #
    # Configuration file for ipcad - Cisco IP accounting simulator daemon.
    # Copyright (c) 2001, 2002, 2003, 2004, 2005
    # Lev Walkin <vlm@lionet.info>.
    #
    # Please see ipcad.conf(5) for additional explanations.
    # Please contact me if you have troubles configuring ipcad. My goal is to make
    # initial configuration easier for new users, so your input is valuable.
    #

    ##################
    # GLOBAL OPTIONS #
    ##################

    #
    # Enable or disable capturing UDP and TCP port numbers, IP protocol and
    # ICMP types for RSH output.
    #
    # capture-ports {enable|disable};
    #
    # Enabling this will BREAK Cisco RSH output format compatibility,
    # increase memory requirements and may slow down traffic processing.
    # This option takes effect IMMEDIATELY, that is, it can be specified
    # multiple times, even between interfaces configuration.
    # This option has NO effect on NetFlow operation (NetFlow always captures
    # port information).
    #

    capture-ports disable;

    #
    # Buffers to be used for transferring the data from the kernel,
    # if applicable (BPF, ULOG).
    # Using larger buffers may increase the performance but will
    # affect responsiveness.
    #
    # buffers = <number>[{k|m}];
    #
    # Reasonable defaults are used if this parameter is not set.
    #

    ## buffers = 64k;


    #####################
    # INTERFACE OPTIONS #
    #####################

    #
    # interface <iface> [ promisc ] [ input-only ]
    # [ netflow-disable ] [ filter "<pcap_filter>" ];
    # OR
    # interface ulog group <group> [, group <group> ...]
    # [ netflow-disabled ];
    # OR
    # interface ipq [ netflow-disabled ]; # man libipq(3)
    # OR
    # interface {divert|tee} port <divert-port> # man divert(4)
    # [ input-only ] [ netflow-disabled ];
    # OR
    # interface file <tcpdump-output.pcap> [ netflow-disabled ];
    #
    # Options meaning:
    #
    # promisc:
    # Put interface into promiscuous mode.
    # This enables listening for the packets which are not destined for
    # this host and thus ipcad will count and display all the traffic within
    # the local network. Note that the interface might be in promiscuous mode
    # for some other reason.
    #
    # input-only:
    # Use kernel feature of counting only incoming packets.
    #
    # netflow-sampled: (DO NOT ENABLE THIS OPTION, unless you have to!)
    # If the NetFlow export mechanism is used, this option instructs
    # the interface to supply only one out of N packets to the NetFlow
    # accounting code, thus lowering the CPU requirements. The value of N
    # is configured explicitly in a NetFlow configuration section.
    # NOTE: This option is NOT used to enable NetFlow on the interface,
    # it just modifies the NetFlow behavior on this interface.
    # DO NOT ENABLE THIS OPTION, UNLESS YOU HAVE TO!
    #
    # netflow-disable:
    # By default, all interfaces are included into NetFlow accounting.
    # This option is used to disable NetFlow on a particular interface.
    #
    # filter:
    # Install a custom filter on packets instead of basic
    # IP protocol filter. Requires libpcap (even if BPF is being used).
    # May be employed to eliminate CPU overhead on passing unnecessary
    # data between the kernel and user space (by installing the filter
    # directly into the kernel).
    #
    # NOTES:
    # * "input-only" directive must be supported by kernel.
    # Probably, you were noticed about it during the compilation process
    # if it was not supported.
    # FreeBSD 3.x and elder kernels do not support this feature.
    # * ULOG packet source (interface ulog) is supported under
    # Linux >= 2.4.18-pre8.
    # You should configure iptables to dump the packet stream
    # into the appropriate group, i.e.:
    # iptables -A OUTPUT -j ULOG --ulog-nlgroup <group>
    # Given ULOG groups will be OR'ed together.
    # * A wildcard (*) may be specified as part of an interface name.
    #
    #interface eth0;
    #interface ed1 promisc filter "ip and not dst net 192.168.0.0/16";
    #interface sbni0 input-only netflow-disable; # Disable NetFlow.
    #interface ppp*; # Dynamically pick up PPP interfaces.
    interface ulog group 3; # Use ULOG, do not disable NetFlow.
    #interface ipq; # Use Linux IPQ (libipq(3))
    #interface tee port 123; # Use BSD ipfw(8)'s tee.
    #interface divert port 321 netflow-disable; # Use ipfw(8)'s divert(4).

    #
    # aggregate <ip>/<masklen> strip <maskbits>;
    #
    # Aggregate addresses from the specified network (<ip>/<masklen>),
    # by AND'ing with specified mask (<maskbits>).
    #
    #

    #aggregate 192.168.0.0/16 strip 32; /* Don't aggregate internal range */
    #aggregate 0.0.0.0/0 strip 24; /* Aggregate external networks */

    #
    # aggregate <port_range_start>[-<port_range_end>] into <port>;
    #
    # Aggregate port numbers. Meaningful only if capture-ports is enabled.
    #

    aggregate 1024-65535 into 65535; /* Aggregate wildly */
    aggregate 3128-3128 into 3128; /* Protect these ports */
    aggregate 150-1023 into 1023; /* General low range */


    ##########################
    # NetFlow EXPORT OPTIONS #
    ##########################

    #
    # Enable Cisco NetFlow export method.
    # NetFlow uses UDP to feed flow information to the receiver.
    # If the destination is not specified, NetFlow is disabled.
    #

    netflow export destination 127.0.0.1 9996;
    netflow export version 5; # NetFlow export format version {1|5}
    netflow timeout active 1; # Timeout when flow is active, in minutes
    netflow timeout inactive 5; # Flow inactivity timeout, in seconds
    netflow engine-type 73; # v5 engine_type; 73='I' for "IPCAD"
    netflow engine-id 1; # Useful to differentiate multiple ipcads.

    # The following option is enabled by the "netflow-sampled" interface flag.
    #netflow sampling-mode packet-interval 10; # 1 out of 10 packets accounted
    # DO NOT ENABLE THIS UNLESS YOU KNOW WHAT ARE YOU DOING.

    #
    # NetFlow protocol exports an SNMP id instead of the interface name
    # (i.e., "eth0", "ppp32"). The following statements options define
    # mapping between the interface names and a set of "SNMP identifiers".
    #
    netflow ifclass eth mapto 0-99; # i.e., "eth1"->1, "eth3"->3
    netflow ifclass fxp mapto 0-99; # i.e., "fxp4"->4, "fxp0"->0
    netflow ifclass ppp mapto 100-199; # i.e., "ppp32"->532, "ppp7"->507
    netflow ifclass gre mapto 200-299;
    netflow ifclass tun mapto 300-399; # i.e., "tun0"->300

    ######################
    # RSH SERVER OPTIONS #
    ######################

    #
    # Enable RSH Server:
    #
    # rsh {enable|yes|on|disable|no|off} [at <listen_ip>];
    #
    # If "at <listen_ip>" omitted, rsh server listens on IP address 0.0.0.0,
    # which may be undesirable.
    #

    rsh enable at 127.0.0.1;

    #
    # RSH access rules:
    #
    # rsh [<user>@]<host_addr> {admin|backup|[default]|view-only|deny};
    #

    rsh root@127.0.0.1 admin; /* Can shutdown ipcad */
    rsh staff@127.0.0.1 backup; /* Can dump/restore/import accounting table */
    rsh yourself@127.0.0.1; /* Can view and modify accounting tables */
    /* Note the order! */
    rsh luser@127.0.0.1 deny; /* Deny this user from even viewing tables */
    rsh 127.0.0.1 view-only; /* Other users can view current tables */

    # Keep IP packet time to live reasonably low to avoid remote attacks.
    # (The rsh client must reside no more than three hops away from the
    # router running ipcad.)
    rsh ttl = 3;

    # Set rsh timeout for the same purpose.
    rsh timeout = 30;

    #
    # Dump active IP accounting table to this file on exit and read on startup.
    # (read about -s and -r options in ipcad(8) manual page)
    # NOTE: This setting has no effect on NetFlow operation. The flow cache
    # contents are flushed to the collector upon ipcad termination.
    #

    dumpfile = ipcad.dump; # The file is inside chroot(), see below...

    #################
    # OTHER OPTIONS #
    #################

    #
    # Chroot to this directory before processing.
    #
    # Of course, you could disable chroot()'ing by commenting it out,
    # but it is not recommended, so I left this confusing default
    # to encourage you to change it.
    #

    #chroot = /adm/tmp;

    #
    # File to keep getpid() in it. ipcad will also hold a lock.
    #
    # WARNING: Pidfile is created AFTER chroot()'ing, so if you're using
    # chroot statement above, make sure the path to the pidfile exists
    # inside chrooted environment.
    #

    pidfile = /var/run/ipcad.pid;

    #
    # UID/GID privileges dropping
    # Please note: RSH service will be UNAVAILABLE when uid is not zero.
    # Use it only when you know what are you doing (i.e., NetFlow without RSH).
    #
    # uid = 65534;
    # gid = 65534;

    #
    # Few useful settings.
    #

    #
    # Memory usage limit for storing per-stream entries.
    #
    # memory_limit = <number>[{k|m|e}];
    # Where k, m and g are for kilobytes, megabytes or table "entries".
    #

    memory_limit = 10m;



    перезапускаем ipcad
    /etc/init.d/ipcad restart



    На этом все готово для установки katrin.

    Ставим ядро.

    wget http://katrin.distance.ru/downloads/debian/katrin_1.5.0-1_amd64.deb
    sudo dpkg -i katrin_1.5.0-1_amd64.deb


    после чего правим конфиг katrin
    nano /etc/katrin/katrin.conf

    а именно необходимо ввести имя бд и пароль от бд.
    После чего не забываем сохранить изминения в файле.

    Устанавливаем web-интерфейс из пакета:

    wget http://katrin.distance.ru/downloads/debian/katrin-web_1.5.0-1_amd64.deb
    sudo dpkg -i katrin-web_1.5.0-1_amd64.deb


    в файле /var/www/katrin-web/settings.py настраиваем параметры доступа к базе данных а так-же раскоментируем необходимые модули например traf.

    nano /var/www/katrin-web/settings.py


    Конфиг для наглядности:

    from settings_default import *

    # Katrin-web specific settings
    KATRIN_MODULES = (
    # Uncomment line with service, which you want see at web-interface
    # 'user', # User interface
    'traff', # Traffic module
    # 've', # Rent virtual enviroment, based on OpenVZ
    # 'tel', # Tel module
    )


    # Database connect settings
    DATABASE_NAME = 'katrin'
    DATABASE_USER = 'root'
    DATABASE_PASSWORD = '1111'
    DATABASE_HOST = '' # Set to empty string for localhost.
    DATABASE_PORT = '' # Set to empty string for default.

    # Value Added Tax (in Russia NDS)
    VAT_PERCENT = 18


    #Traff service specific settings
    # Show stats without cost
    WITHOUT_COST = False
    # Lines per stat page
    LINES_PER_STAT_PAGE = 100

    # Amount ip in detail stat of traffic module
    AMOUNT_IP = 25


    # Django root urls schema
    ROOT_URLS = ''

    # Don't remove this
    INSTALLED_APPS += KATRIN_MODULES


    Cоздаем структуру базы данных:
    cd /var/www/katrin-web/

    ./manage.py syncdb


    Будет запрошен логин и пароль для суперпользователя - запомните. Это потребуется для входа в панель администрирования.

    Далее выставим права на необходимые файлы:

    chmod 755 /usr/bin/katrind
    chmod 755 /usr/bin/katrin-dropd
    chmod 755 /usr/bin/katrin-functions


    Далее напишем скрипты для атоматической блокировки и разблокировки ip:

    Для платформы виртуализации XEN:

    nano /usr/bin/traff-ip-drop

    и впишем туда

    #!/bin/bash

    . katrin-functions

    function usage() {
    traff_usage
    }

    init_and_validate "$@"

    if [ $abonent = "client" ]; then
    validate_ip "$ip"
    USER_IP=$ip
    NUM_RULES=`iptables -L KATRIN -v -n |grep $USER_IP|grep MARK|wc -l`

    if [ $NUM_RULES = 0 ]; then
    iptables -I KATRIN -s $USER_IP -j MARK --set-mark 2
    iptables -I KATRIN -d $USER_IP -j MARK --set-mark 2
    fi

    mailto_client "disabled"
    else
    mailto_clientgroup "Traff" "disabled"
    fi



    Пишем скрипт разблокировки

    nano /usr/bin/traff-ip-enable


    #!/bin/bash

    . katrin-functions

    function usage() {
    traff_usage
    }

    init_and_validate "$@"

    if [ $abonent = "client" ]; then
    validate_ip "$ip"
    USER_IP=$ip
    NUM_RULES=`iptables -L KATRIN -v -n |grep $USER_IP|grep MARK|wc -l`

    for i in `seq 1 $NUM_RULES`; do
    iptables -D KATRIN -s $USER_IP -j MARK --set-mark 2
    iptables -D KATRIN -d $USER_IP -j MARK --set-mark 2
    done
    mailto_client "enabled"
    else
    mailto_clientgroup "Traff" "enabled"
    fi

    Далее делаем скриты исполняемыми.

    chmod 755 /usr/bin/traff-ip-enable
    chmod 755 /usr/bin/traff-ip-drop


    теперь нам необходимо написать соответствующие правила iptables для katrin.
    в своем примере буду использовать два диапазона ip адресов localnet - это будет внутрений и бесплатный трафик и inet внешний платный трафик.

    Создадим файл со списокм внутрених и бесплатных ресурсов.

    nano /root/localnet.txt


    И впишем туда диапазоны ip адресов
    1.0.0.0/8
    82.209.192.0/18
    86.57.128.0/17
    93.84.0.0/15
    178.120.0.0/13
    194.158.192.0/19
    194.226.120.0/22
    194.226.124.0/23
    193.232.248.0/22

    после чего сохраняем данный файл.

    Далее создадим файл с правилами iptables

    nano /root/ip.sh


    и впишем туда

    #!/bin/bash
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -F
    iptables -X

    # Цепочка для помещений правил ANTISPOOF скриптом xen /etc/xen/scripts/vif-common.sh
    # В данной версии скрипта антиспуфинг не задействован.
    iptables -N ANTISPOOF

    # MARKS:
    # 2 - запрещенные katrin
    # 7 - локальная сеть
    # 8 - разрешенные katrin

    # Маркируем локальные сети
    ipset -L localnets -n >/dev/null 2>&1 || ipset -N localnets nethash
    ipset -F localnets
    iptables -N LOCALNETS
    for NET in `cat /root/localnet.txt`
    do
    ipset -A localnets $NET
    done
    iptables -A LOCALNETS -m set --set localnets src -m set --set localnets dst -j MARK --set-mark 7


    # Цепочка katrin в которой биллинг будет управлять доступом
    iptables -N KATRIN


    # Отправляем на проверку в LOCALNETS
    iptables -A FORWARD -j LOCALNETS

    # Если локальная сеть, то отправляем данные в ipcad через ULOG
    iptables -A FORWARD -m mark --mark 7 -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50

    # Т.к. данные уже отправлены можем их разрешить
    iptables -A FORWARD -m mark --mark 7 -j ACCEPT

    # Весь остальной (не локальный трафик) отправляем на проверку правилами, которые добавлены katrin
    # Предварительно помечаем пакеты как разрешенные
    iptables -A FORWARD -j MARK --set-mark 8
    iptables -A FORWARD -j KATRIN

    # Запрещаем трафик запрещенный katrin
    iptables -A FORWARD -m mark --mark 2 -j REJECT

    # Записываем и разрешаем весь трафик, разрешенный katrin
    iptables -A FORWARD -m mark --mark 8 -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50
    iptables -A FORWARD -m mark --mark 8 -j ACCEPT

    # Если нужно учитывать входящий трафик с внешних хостов, когда клиент блокирован,
    # то перенесите блокировку с mark 2 сюда.

    iptables -P FORWARD DROP

    # Выставляем все пользователям статус не заблокированных для того чтобы katrin-dropd
    # заполнил цепочку KATRIN запрящающими правилами и обновил статусы в базе.
    mysql -u root -p1111 katrin -e 'update accounts set blocked=0;'


    Далее поместим данный скрипт в атозагрузку:

    nano /etc/rc.local


    и впишем туда

    sh /root/ip.sh


    так-же впишем сюда запуск web-интефейса:

    cd /var/www/katrin-web/ && screen -d -m ./manage.py runserver 0.0.0.0:81


    "-d" - означает что screen сразу "свернет" сессию.
    сохраняем файл rc.local.

    Для платформы виртуализации OpenVz

    В своем примере буду использовать два диапазона ip адресов localnet - это будет внутрений и бесплатный трафик и inet внешний платный трафик.

    Создадим файл со списокм внутрених и бесплатных ресурсов.

    nano /root/localnet.txt


    И впишем туда диапазоны ip адресов
    1.0.0.0/8
    82.209.192.0/18
    86.57.128.0/17
    93.84.0.0/15
    178.120.0.0/13
    194.158.192.0/19
    194.226.120.0/22
    194.226.124.0/23
    193.232.248.0/22

    после чего сохраняем данный файл.

    Далее создадим файл с правилами iptables

    nano /root/ip.sh


    и впишем туда

    #!/bin/bash
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -F
    iptables -X

    # Цепочка для помещений правил ANTISPOOF скриптом xen /etc/xen/scripts/vif-common.sh
    # В данной версии скрипта антиспуфинг не задействован.
    iptables -N ANTISPOOF
    iptables -N KATRIN
    iptables -F KATRIN
    iptables -F FORWARD -t mangle

    # MARKS:
    # 2 - запрещенные katrin
    # 7 - локальная сеть
    # 8 - разрешенные katrin
    # 5 - признак попадания SCR в локальные сети

    # Маркируем локальные сети

    for NET in `cat /root/localnet.txt`
    do
    iptables -A FORWARD -t mangle -s $NET -j MARK --set-mark 5
    done

    for NET in `cat /root/localnet.txt`
    do
    iptables -A FORWARD -t mangle -m mark --mark 5 -d $NET -j MARK --set-mark 7
    done

    # Если локальная сеть, то отправляем данные в ipcad через ULOG
    iptables -A FORWARD -m mark --mark 7 -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50

    # Т.к. данные уже отправлены можем их разрешить
    iptables -A FORWARD -m mark --mark 7 -j ACCEPT

    iptables -A FORWARD -j KATRIN

    # Записываем и разрешаем весь трафик, разрешенный katrin
    iptables -A FORWARD -j ULOG --ulog-nlgroup 3 --ulog-cprange 24 --ulog-qthreshold 50
    iptables -A FORWARD -j ACCEPT

    iptables -P FORWARD DROP

    # Выставляем все пользователям статус не заблокированных для того чтобы katrin-dropd
    # заполнил цепочку KATRIN запрящающими правилами и обновил статусы в базе.
    mysql -u root -pubhjdrfhjvfy katrin -e 'update accounts set blocked=0;'



    Далее поместим данный скрипт в атозагрузку:

    nano /etc/rc.local


    и впишем туда

    sh /root/ip.sh


    так-же впишем сюда запуск web-интефейса:

    cd /var/www/katrin-web/ && screen -d ./manage.py runserver 0.0.0.0:81


    "-d" - означает что screen сразу "свернет" сессию.
    сохраняем файл rc.local.

    Далее напишем скрипты для атоматической блокировки и разблокировки ip:

    nano /usr/bin/traff-ip-drop


    Код:
    #!/bin/bash
    PATH=/root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin
    
    . katrin-functions
    
    function usage() {
     traff_usage
    }
    
    i
     

Поделиться этой страницей

iHax Community
Рейтинг@Mail.ru Яндекс.Метрика мониторинг сайтов
Форум программного обеспечения/
Загрузка...