Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
23:10, 28 июля 2011

Установка и базовая настройка Stargazer

Blog post image

Еще одна достойная биллинг система которая позволит контролировать Интернет трафик. В сети есть очень подробная статья по установке этой системы на CentOS (форум Stargazer Local UA). Здесь будет практически тоже самое :)

Биллинг популярен, благодаря простой установки и настройки. А также большим плюсом биллинга является его открытость и бесплатность. Blog post image

Под учетной записью "root" проделаем все что здесь написано.

# cd /tmp

# mkdir stargazer

# wget http://stg.dp.ua/download/server/2.405.9.8/stargazer-2.405.9.8.centos.i386.rpm

# rpm -i stargazer-2.405.9.8.centos.i386.rpm

Если ставите на CentOS 6 x32, установите сначала библиотеку compat-expat:

# yum install compat-expat1.i686

Основные конфигурационные файлы хранятся в папке /etc/stargazer

В папке /var/stargazer хранится база MySQL и логи.

После установки  в папке /etc/stargazer/ появится 9 файлов:

1. /etc/stargazer/OnChange
2. /etc/stargazer/OnConnect
3. /etc/stargazer/OnDisconnect
4. /etc/stargazer/OnUserAdd
5. /etc/stargazer/OnUserDel
6. /etc/stargazer/first
7. /etc/stargazer/last
8. /etc/stargazer/rules
9. /etc/stargazer/stargazer.conf

Включим логирование путем раскоментирования одной строчки пяти файлов. После этих манипуляции будут писаться логи в папку  /var/stargazer/

Изменим файлы:

1  /etc/stargazer/OnChange
2. /etc/stargazer/OnConnect
3. /etc/stargazer/OnDisconnect
4. /etc/stargazer/OnUserAdd
5. /etc/stargazer/OnUserDel

Удалим знак "#" где стоит команда "echo". Тем самым раскоментировав строчку.

Чтобы изменить содержимое файлов, откроем последовательно каждый файл в текстовом редакторе nano

# cd /etc/stargazer
Откроем первый файл  OnChange :
# nano OnChange
В нем видим строчку  "#echo"
Уберем знак "#"
Нажимаем комбинацию клавишь CTRL + O, Enter,  а потом CTRL + X

CTRL + O - в текстовом редакторе дает команду сохранить файл

После чего выходит окошко с именем файла, где мы нажимаем Enter.

CTRL + X - закрывает текстовый редактор.

Такие действия повторяем с другими файлами:
# nano OnConnect -> удаляем знак # -> CTRL+O, Enter, CTRL + X
# nano OnDisconnect -> удаляем знак # -> CTRL+O, Enter, CTRL + X
# nano OnUserAdd -> удаляем знак # -> CTRL+O, Enter, CTRL + X
# nano OnUserDel -> удаляем знак # -> CTRL+O, Enter, CTRL + X

Создадим правила IPTABLES (фаервол) в папке /etc/sysconfig

# gedit /etc/sysconfig/firewall

И вставим во внутрь следующий текст (правила):

#!/bin/bash
# Интерфейс смотрящий во внешний мир
iface_world=eth0
# Подсеть клиентов
net_cli=10.168.50.0/24
#Адреса роутера
server0=10.168.50.2
#Порты, на которых работает конфигуратор и авторизатор
conf_port=5555
user_port1=5555
user_port2=5555
# IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Очищаем правила файрвола
/sbin/iptables -t filter -F
/sbin/iptables -t filter -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
# Политика по умолчанию DROP: всем всё запрещено
/sbin/iptables -t filter -P FORWARD DROP
# Разрешаем пингам ходить всюду и всегда
#/sbin/iptables -t filter -A INPUT -p icmp -j ACCEPT
#/sbin/iptables -t filter -A FORWARD -p icmp -j ACCEPT
#/sbin/iptables -t filter -A OUTPUT -p icmp -j ACCEPT
# Разрешаем всё на локальном интерфейсе
/sbin/iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT
# Stargazer configurator
/sbin/iptables -t filter -A INPUT -p tcp -s $net_cli -d $server0 --dport $conf_port -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p tcp -d $net_cli -s $server0 --sport $conf_port -j ACCEPT
# UDP stargazer InetAccess
/sbin/iptables -t filter -A INPUT -p udp -s $net_cli --sport $user_port2 -d $server0 --dport $user_port1 -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p udp -d $net_cli --dport $user_port1 -s $server0 -j ACCEPT
# NAT
/sbin/iptables -t nat -A POSTROUTING -p all -s $net_cli -o $iface_world -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -p all -d $net_cli -o $iface_world -j MASQUERADE

Сохраняем файл /etc/sysconfig/firewall нажав комбинацию CTRL + S

Даем права на запуск:
# chmod 750 /etc/sysconfig/firewall

И сразу же проверяем как он работает:
# /etc/sysconfig/firewall

После выполнения скрипта, ошибок не должно быть.

Данные правила фаерволла после перезагрузки компьютера пропадут. Все дело в том, что их надо вставить в автозагрузку.

Это делается следующим образом:

# nano /etc/rc.d/rc.local

В конец файл rc.local добавляется строчка с путем к нашим правилам:
/etc/sysconfig/firewall

Осталось дописать правила включения и отключения доступа компьютеров в Интернет.
Откроем файл OnConnect :
# nano /etc/stargazer/OnConnect

И добавим в конец файла строчки строчки:

# Add iptables rules
/sbin/iptables -t filter -A FORWARD -s $IP -j ACCEPT
/sbin/iptables -t filter -A FORWARD -d $IP -j ACCEPT

Сохраняем файл - CTRL + O, Enter, CTRL + X

Также изменим файл  /etc/stargazer/OnDisconnect
# nano /etc/stargazer/OnDisconnect

Добавим следующие строчки в конец файла:

# Delete iptables rules
/sbin/iptables -t filter -D FORWARD -p all -s $IP -j ACCEPT
while [ $? -eq 0 ]
do
/sbin/iptables -t filter -D FORWARD -p all -s $IP -j ACCEPT
done
/sbin/iptables -t filter -D FORWARD -p all -d $IP -j ACCEPT
while [ $? -eq 0 ]
do
/sbin/iptables -t filter -D FORWARD -p all -d $IP -j ACCEPT
done

Сохраняем файл - CTRL + O, Enter, CTRL + X

Теперь включим автозагрузку Stargazer:

# chkconfig stargazer on

И запустим демон биллинга:

# service stargazer start

На этом установка и настройка Stargazer завершена!


Настройка кеширующего DNS сервера

В консоле вводим:

# yum install bind -y

Создаем файлы зоны:

Установим пакет Bind, который позволит добавить функцию кэширующего DNS сервера на наш шлюз:

# yum install bind -y

Поставим его в автозагрузку:

# chkconfig named on

Настроим его, откроем файл /etc/named.conf и изменим содержимое:

# vi /etc/named.conf

# Прописываем IP адрес который будет слушаться

options {listen-on port 53 { 127.0.0.1; 10.168.50.2;};

# Добавляем строчку и указываем DNS провайдера

forwarders { 217.15.11.11;};

# Указываем кому разрешено брать DNS запросы

allow-query { localhost; 10.168.50.0/24; };

forward first;

auth-nxdomain no;

Запускаем службу named:

# service named start

 

Настройка Stargazer

Без настройки самого Stargazer не  обойтись, так как по умолчанию биллинг показывает Интернет трафик в графе Локального трафика. Надо это исправить...

Открываем /etc/stargazer/stargazer.conf и в соответствии с файлом /etc/stargazer/rules.cfg меняем содержимое stargazer.conf:

# gedit /etc/stargazer/stargazer.conf

##################################################

##############################
#                        Файл настроек сервера stargazer                       #
################################################################################

# Имя лог-файла куда пишутся события
LogFile = /var/log/stargazer.log

# Имя файла в котором определяются правила подсчета трафика
Rules = /etc/stargazer/rules

# Время через которое пишется d БД детальная статистика пользователя
# Значения: 1, 1/2, 1/4, 1/6.
# 1 - раз в чаc, 1/2 - раз в пол часа, 1/4 - раз в 15 мин, 1/6 - раз в 10 мин
DetailStatWritePeriod=1/6

# Периодичность записи записи в БД информации о статистике пользователя (минуты)
# При большом кол-ве пользователей эту величину стоит увеличить, т.к.
# запись в БД может занимать длительное время.
# Значения: 1...1440 (минуты)
StatWritePeriod = 10

# День снятия абонплаты
# Значения: 0...31. 0 - Последний день месяца
DayFee = 1

# Абонплата снимается в последний (yes) или первый (no) день учетного периода.
# Это влияет на то, как будет снята абонплата (АП) при переходе на новый тариф.
# Если у пользователя был тариф A с АП=100 и он хочет перейти на тариф B с АП=200,
# то при переходе на новый тариф со счета пользователя снимется 100, если
# DayFeeIsLastDay = yes и 200, если DayFeeIsLastDay = no
DayFeeIsLastDay = yes

# День сброса данных о трафике за месяц и день перехода пользователей на новые тарифы
# Значения: 0...31. 0 - Последний день месяца
DayResetTraff = 1

# "Размазанное" снятие абонплаты. Снятие АП не раз в месяц, а каждый
# день 1/30 или 1/31 части АП
# Значения: yes, no
SpreadFee = no

# Данная опция определяет может ли пользователь получить доступ в интерент
# если у него на счету нет денег, но остался предоплаченный трафик
# Значения: yes, no
FreeMbAllowInet = no

# Эта опция определяет что будет писаться в стоимость трафика в detail_stat.
# Если у пользователя еще есть предоплаченный трафик и WriteFreeMbTraffCost = no,
# то в detail_stat стоимость будет 0. Если у пользователя уже нет
# предоплаченного трафика и WriteFreeMbTraffCost = no, то в detail_stat
# будет записана стоиость трафика. При WriteFreeMbTraffCost = yes стоимость
# трафика будет записана в любом случае.
WriteFreeMbTraffCost = no

# Необязательный параметр. Указывает снимать полную абонплату у пользователя даже
# если он быз заморожен только часть учетного периода.
# По умолчанию установлен в no
# FullFee=no

# Необязательный параметр указывающий показывать на счету и позволять
# использовать пользователю абонплату. По умолчанию установлен в yes
# ShowFeeInCash=yes

# Названия направлений. Направления без названий не будут отображаться в
# авторизаторе и конфигураторе. Названия состоящие из нескольких слов должны
# быть взяты в кавычки
<DirNames>
DirName0 = Internet
DirName1 = City
DirName2 = Local
DirName3 =
DirName4 =
DirName5 = "Local Games"
DirName6 =
DirName7 =
DirName8 =
DirName9 =
</DirNames>

# Кол-во запускаемых процессов stg-exec.
# Эти процессы отвечают за выполнение скриптов OnConnect, OnDisconnect, ...
# Кол-во процессов означает сколько скриптов могут выполнятся одновременно.
# Значения: 1...1024
ExecutersNum = 1

# Message Key для stg-exec.
# Идентификатор очереди сообщений для выполнятеля скриптов.
# Его изменение может понадобится если есть необходимость запустить несколько
# экземпляров stg. Если вы не понимаете, что это, не трогайте этот параметр!
# Значения: 0...2^32
# Значение по умолчанию: 5555
# ExecMsgKey = 5555

# Путь к директории, в которой находятся модули сервера
ModulesPath = /usr/lib/stg

# Определяет директорию, в которой будут находится файлы "монитора"
# работы сервера. В этой директории будут созданы пустые файлы, время
# модификации которых будет меняться примерно раз в минуту. Если какой-то
# компонент сервера зависнет, файл(ы) перестанет обновлятся, и по этому
# признаку можно определить сбой в работе сервера и при надобности
# перезапустить. Если параметр не указан или пустой, мониторинг производится
# не будет. Параметр не является обязательным, по умолчанию пустой.
# MonitorDir=/var/stargazer/monitor

################################################################################
# Store module
# Настройки плагина работающего с БД сервера

# Второй параметр - это имя модуля без mod_ в начале и .so в конце
# Т.е. полное имя модуля mod_store_files.so
<StoreModule store_files>

# Рабочая директория сервера, тут содержатся данные о тарифах, пользователях,
# администраторах и т.д.
WorkDir = /var/stargazer

# Владелец, группа и права доступа на файлы статистики (stat) пользователя
ConfOwner = root
ConfGroup = root
ConfMode = 600

# Владелец, группа и права доступа на файлы конфигурации (conf) пользователя
StatOwner = root
StatGroup = root
StatMode = 640

# Владелец, группа и права доступа на лог-файлы (log) пользователя
UserLogOwner = root
UserLogGroup = root
UserLogMode = 640

</StoreModule>

#<StoreModule store_firebird>
#    # Адрес сервера БД
#    server=localhost
#
#    # Путь к БД на сервере или ее алиас
#    database=/var/stg/stargazer.fdb
#
#    # Имя пользователя БД
#    user=stg
#
#    # Пароль пользователя БД
#    password=123456
#</StoreModule>

#<StoreModule store_mysql>
#    # Имя пользователя БД
#    dbuser = stg
#
#    # Пароль пользователя БД
#    rootdbpass = 123456
#
#    # Имя БД на сервере
#    dbname = stg
#
#    # Адрес сервера БД
#    dbhost = localhost
#</StoreModule>

################################################################################
# Прочие модули

<Modules>

# Настройки плагина авторизации Always Online "mod_auth_ao.so"
# Второй параметр - это имя модуля без mod_ в начале и .so в конце
# Т.е. полное имя модуля mod_auth_ao.so
<Module auth_ao>
</Module>

# Настройки плагина авторизации InetAccess "mod_auth_ia.so"
# Второй параметр - это имя модуля без mod_ в начале и .so в конце
# Т.е. полное имя модуля mod_auth_ia.so
<Module auth_ia>

# Порт на котором принимаются обращения от авторизатора
# Значения: 1...65534
Port = 5555

# Время между посылками запроса пользователю жив ли он
# и обновлением данных статистики (секунды)
# Значения: 5...600
UserDelay = 15

#Таймаут для пользователя. Если в течение этого времени авторизатор
#не отвечает, пользователь будет отключен
# Значения: 15...1200
UserTimeout = 65

# Этот параметр определяет что будет передаваться программе InetAccess от сервера
# как отстаток предоплаченного трафика
# Значения:
# FreeMb = 0 - кол-во бесплатных мегабайт в пресчете на цену нулевого направления
# FreeMb = 1 - кол-во бесплатных мегабайт в пресчете на цену первого направления
# FreeMb = 2 - кол-во бесплатных мегабайт в пресчете на цену второго направления
# FreeMb = 3 - кол-во бесплатных мегабайт в пресчете на цену третьего направления
# ........................
# FreeMb = 9 - кол-во бесплатных мегабайт в пресчете на цену девятого направления
# FreeMb = cash - кол-во денег на которые юзер может бесплатно качать
# FreeMb = none - ничего не передавать
FreeMb = cash

</Module>

# Модули можно использовать несколько раз с разными параметрами
#<Module auth_ia>
#    Port = 7777
#    UserDelay = 15
#    UserTimeout = 65
#    FreeMb = 0
#</Module>

# Настройки модуля конфигурации SgConfig "mod_conf_sg.so"
# Второй параметр - это имя модуля без mod_ в начале и .so в конце
<Module conf_sg>

# Порт по которому сервер взаимодействует с конфигуратором
# Значения: 1...65535
Port = 5555

</Module>

# Модуль захвата трафика "mod_cap_ether.so"
# Второй параметер - это имя модуля без mod_ в начале и .so в конце
# Без параметров. Только имя модуля.
<Module cap_ether>
# Модуль без параметров
</Module>

# Настройки модуля пингующего пользователей "mod_ping.so"
# Второй параметр - это имя модуля без mod_ в начале и .so в конце
<Module ping>

# Время, в секундах, между пингами одного и того же пользователя
# Значения: 10...3600
PingDelay = 15

</Module>

#    # Настройки модуля для удаленного выполнения скриптов OnConnect и
#    # OnDisconnect "mod_remote_script.so"
#    # Второй параметр - это имя модуля без mod_ в начале и .so в конце
#    <Module remote_script>
#
#        # Время, в секундах, между посылками подтверждений, того, что пользователь
#        # всё еще онлайн
#        # Значения: 10...600
#        SendPeriod = 15
#
#        # Соответствие подсетей, в которой находится пользователь и
#        # соответствующего роутера. Первая часть строки - подсеть, заданная
#        # как IP-адрес и маска, через пробел - IP-адрес роутера на котором
#        # должны выполняться скрипты
#        # Например эта запись "192.168.1.0/24 192.168.1.1" означает, что для
#        # всех пользователей из подсети 192.168.1.0/24, скрипты будут
#        # выполняться на роутере с адресом 192.168.1.1
#        # Subnet0...Subnet100
#        Subnet0 = 192.168.1.0/24 192.168.1.7
#        Subnet1 = 192.168.2.0/24 192.168.2.5
#        Subnet2 = 192.168.3.0/24 192.168.2.5
#        Subnet3 = 192.168.4.0/24 192.168.2.5
#
#        # Пароль для шифрования пакетов между stg-сервером и сервером,
#        # выполняющим скрипты
#        Password = 123456
#
#        # Этот параметр определяет какие параметры пользователя передаются
#        # на удаленный сервер
#        # Cash, FreeMb, Passive, Disabled, AlwaysOnline, TariffName, NextTariff, Address,
#        # Note, Group, Email, RealName, Credit, EnabledDirs, Userdata0...Userdata9
#        UserParams=Cash Tariff EnabledDirs
#
#        # Порт по которому сервер отсылает сообщения на роутер
#        # Значения: 1...65535
#        Port = 9999
#
#    </Module>

#    <Module radius>
#        Password = 123456
#        ServerIP = 127.0.0.1
#        Port = 6666
#        AuthServices = Login-User
#        AcctServices = Framed-User
#    </Module>

</Modules>
################################################################################

Жирным отметил то что я менял. Тут мы изменили названия направлений по которым ведется учет трафика.

DirName0 = Internet ->    Это сеть Интернет 0.0.0.0/0
DirName1 = City ->    А это городская сеть с адресом 10.0.0.0/8
DirName2 = Local ->    Соответственно это трафик генерируемый нашей локальной сетью

Теперь для проверки откроем файл /etc/stargazer/rules

ALL     10.168.50.0/24 DIR1
ALL     10.0.0.0/8      DIR2
ALL     0.0.0.0/0       DIR0

Здесь я вставил адрес моей локальной сети, он отмечен жирным шрифтом.  Также тут перечислены адреса городской сети и всего Интернета.

Осталось проверить как работает биллинг система. Для этого нам потребуется компьютер в локальной сети под управлением операционной системы Windows XP. На эту машину мы должны установить программу для  администрирования  Stargazer под названием Stargazer Configurator. Данная программа поможет вам администрировать биллинг Stargazer - добавлять пользователей в систему, запрещать доступ в Интернет, пополнять счета и т.д. А также на клиентский компьютер требуется установить авторизатор под названием InetAccess. Эта программа поможет вам узнавать количество скаченного трафика, оставшеюся сумму на счету, ну и конечно главной задачей этой InetAccess является авторизация пользователя в системе.

И так мы нашли свободный компьютер в нашей локальной сети. Произведем первоначальную настройку сетевого адаптера компьютера, для этого  требуется прописать следующие IP -адреса:

IP адрес:          10.168.50.10

Маска:             255.255.255..0

Адрес шлюза:   10.168.50.2

DNS:                10.168.50.2

 

Далее, скачайте Stargazer Configurator и запустите его на нашем компьютере (прямая ссылка http://stg.dp.ua/download/sgconfig/1.91.9/sgconfig.1.91.9.win.exe)

После того как вы установили конфигуратор, ему следует указать IP адрес нашего шлюза  в локальной сети, у нас он имеет адрес 10.168.50.2.

Это делается через главное меню - Настройки -> Настройки...

Blog post image

Теперь подключимся к шлюзу.

Blog post image

При подключении к серверу у вас спросят логин и пароль, которые по умолчанию имеют вид:

Логин:    admin

Пароль:  123456

Blog post image

Настроим тарифный план через главное меню "Правка -> Тарифные планы..."

Здесь правим направление "Internet", вводим цену за мегабайт израсходованный на этом направлении.

У на провайдер Intelsoft, который берет 1 рубль за скаченный мегабайт. Красной рамкой я пометил то что нужно изменить. Считать локальный трафик мы не будем. После всех изменений нажмите на кнопке "Сохранить"

Blog post image

Заведем в системе первого пользователя user1 и добавим ему на счет не которую сумму денег :). В нашем случае мы добавили 100 рупий.

Blog post image

После добавления пользователя, нажмите кнопку Обновить

После данной операции Интернета на клиентском компьютере не будет. Чтобы он появился, потребуется запустить приложение InetAccess которое вы можете скачать с оф. сайта разработчика (прямая ссылка http://stg.dp.ua/download/inetaccess/2.61.8/inetaccess.2.61.8.win.exe)

В InetAccess введите логин и пароль только что созданного пользователя, и нажмите кнопку Подключится:

Логин:   user1

Пароль: 123456 (или ваш пароль)

Blog post image

Должен загорется зеленный индикатор сигнализирующий о том что доступ в Интернет открыт. Запустите бразуер и введите в нем для проверки:

www.google.ru

Должна появится страничка Google...

Если у вас что-то не получилось, значить надо все проверить еще раз.

__

Stargazer может работать без клиентского авторизатора, чтобы задействовать этот режим требуется войти в конфигуратор, и выставить  галку в настройках клиента: "всегда онлайн"

0
2291
0