Jump to content

Stargazer+mysql+freeradius_mysql+vpn+stg-web


Recommended Posts

Начало.

Никакой ответственности за результаты того что здесь изложено я не несу, все действия Вы выполняете на свой страх и риск.

 

Большое спасибо разработчикам старгейзера и ребятам MAX и Alferov за их разработки. Вся эта связка работает только благодаря их "апгрейдам" для старгейзера.

 

Как все было раньше:

Стоял stargazer с модулем коллектора трафика ipq_linux и текстовой бд file_store, раздача инета реализовывалась через vpn путем синхронного добавления руками пользователей в файл chap-secrets (pptpd) и бд stargazerа конфигуратором :)

 

Что решено было сделать:

Скрутить вместе stargazer + mysql + freeradius_mysql + vpn + stg-web,

т.е. сделать все это в связке, автоматизировать процесс добавления, удаления, и т.д. пользователей.

 

Применяемая ось - Debian GNU/Linux 4.0

 

Приступим.

Необходимые компоненты и их установка:

1. stargazer

1.1 Качаем пропатченую версию stargazer с модулем mysql и конфигуратором sgconf_xml:

wget http://hs.dp.ua/stg/stg-2.4-2007.01.20-13.....pached.tar.bz2

Распаковываем, компилируем, ставим - процедура стандартна.

1.2 Ставим mod_store_mysql: Компилим его вручную:

заходим в папку stg-2.4-2007.01.20-13.47.20/projects/stargazer/plugins/store/mysql

запускаем файл build

копируем получившийся mod_store_mysql.so в папку /usr/lib/stg/

1.3 Компилим sgconf_xml:

заходим в папку stg-2.4-2007.01.20-13.47.20/projects/sgconf_xml

запускаем файл build

получившийся файл sgconf_xml будет необходим в следующих пунктах (п.4.2).

1.4 Конфигурируем stargazer:

На свое усмотрение правим скрипты в каталоге /etc/stargazer

Пример файла stargazer.conf и других скриптов можно взять http://hs.dp.ua/stg/configs.tar.bz2

 

Обратите внимание на блок в stargazer.conf

 

<StoreModule store_mysql>
   # stg_billing - название базы с которой будет работать биллинг
   # stg_sql_user - пользователь для этой базы
   # stg_sql_password - пароль для этого пользователя
   dbuser = stg_sql_user
   rootdbpass = stg_sql_password
   dbname = stg_billing
   dbhost = 127.0.0.1
</StoreModule>

Эти параметры Вам будут необходимы при настройке mysql и freeradius и веб админки.

 

2. pptpd

 

2.2. Установка:

apt-get install pptpd

 

2.2. Настройка:

 

2.2.1 Файл /etc/pptpd.conf

option /etc/ppp/options.pptpd
#Диапазоны ВПНщиков
remoteip 192.168.50.2-254
localip 192.168.50.1

 

2.2.2 Файл /etc/ppp/options.pptpd

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
# Два следующих параметра - адреса ДНС серверов
ms-dns 192.168.50.1
ms-dns 195.5.61.70
debug
proxyarp
defaultroute
lock
nobsdcomp
# Если все хорошо в п.2.2.5 то следующую строку нужно раскоментировать!
# plugin radius.so

 

2.2.3 Теперь для теста pptpd добавим в файл /etc/ppp/chap-secrets такую строку:

test	*	test	192.168.50.2

 

2.2.4 Перезапускаем pptp: /etc/init.d/pptpd restart

 

2.2.5 Настраиваем на клиентской машине впн подключение и пытаемся подключится с логином test и паролем test.

Если все нормально должно появится впн соединение с вирт IP адресом 192.168.50.2 и адресом сервера 192.168.50.1 - нужно раскоментировать последнюю строчку файла /etc/ppp/options.pptpd

 

2.2.6 Перезапускаем pptp: /etc/init.d/pptpd restart

 

2.2.7 Проблемы: Очень часто проблемы возникают с опцией require-mppe-128, ее можно убать, а у пользователей в настройках VPN в закладке безопасность выставить необязательное шифрование.

Если проблемы другого рода то: логи, маны, гугль :(

 

3. mysql

3.1 Установка mysql сервера тривиальна:

apt-get install mysql-server

 

3.2 Создадем пользователя и базу для биллинга:

mysql -u root

Далее выполняем

CREATE DATABASE `stg_billing`;
GRANT ALL ON `stg_billing` . * TO 'stg_sql_user'@'localhost' IDENTIFIED BY 'stg_sql_password';
\q

Где: stg_billing - название базы с которой будет работать биллинг

stg_sql_user - пользователь для этой базы

stg_sql_password - пароль для этого пользователя

Смотрим п.1.4 (файлик stargazer.conf)

 

3.3 Забираем дамп базы и заливаем его в mysql сервер

wget [url="http://hs.dp.ua/stg/dump.sql"]http://hs.dp.ua/stg/dump.sql[/url]
mysql -u stg_sql_user -p stg_billing < dump.sql

 

4 Админка stg-web

4.1 Качаем админку у замечательного человека Alferov'a:

wget http://alf.uzlovaya.ru/stg/stg-web/stg-web_0.07.tar.gz

4.2 Устанавливаем админку:

Нам понадобятся только несколько пунктов из его описания установки:

- "Скопировать файлы из каталога html/ в каталог, где будет размещаться веб-интерфейс (в каталоге html_koi8r находятся файлы в кодировке KOI8-R)"

- "Полученный исполняемый sgconf_xml (из пункта 1.3 /stg-2.4-2007.01.20-13.47.20/projects/sgconf_xml) файл перенести куда-нибудь, где доступ к нему будет иметь веб-сервер."

- "Отредактировать файл /includes/config.php (вписать свои параметры для соединения с БД, STG и пр. - см.комментарии к переменным)" Корелируем параметры для доступа к базе с п.1.4 и п.3.2

- "В настройках PHP (php.ini) необходимо сделать следующее ( !!! ВАЖНО !!! ):

    safe_mode=off

    register_globals=on

    allow_call_time_pass_reference=on"

 

5. FreeRADIUS

5.1.1 Установка freeradius:

apt-get install freeradius

5.1.2 Дополнительно устанавливаем:

apt-get install freeradius-mysql

apt-get install radiusclient1

 

5.2 Настройка:

5.2.1 Берем файлы http://hs.dp.ua/stg/etc.tar.bz2

5.2.2 Заменяем существующие каталоги /etc/freeradius и /etc/radiusclient

Правим файл /etc/freeradius/sql.conf на предмет:

 

 server = "localhost"
       login = "stg_sql_user"
       password = "stg_sql_password"
       radius_db = "stg_billing"

 

Все эти параметры должны быть одинаковы для всех пунктов (п.1.4, п.3.2, п.4.2.3, п.5.2).

 

5.3 Тестирование:

5.3.1 Запускаем stargazer:

stg-2.4-2007.01.20-13.47.20/projects/stargazer/startstg

Смотрим логи, если все ОК, то:

5.3.2 Заходим в веб админку (обычно по адресу http://сервер_статистики/root/) используя логин admin и пароль 123456

В админке добавляем пользователя с параметром "Всегда онлайн" и логином test паролем test

5.3.3 Запускаем радиус в режим отладки freeradius -X и пытаемся присоединится c клиента по впн с логином test и паролем test

Смотрим что сыпет в консоль, если подключение устанавливается, запускаем freeradius как демон.

5.3.4 Снова подключаем ВПН и пробуем пинг внешнего хоста с клиента, если все ок - радуемся, процедура завершена!

 

АДДОНЧИК:

Если вы уже работаете с текстовой базой то наброски скрипта по конвертированию этой базы в мускуль берем

http://hs.dp.ua/stg/scrit.sh и ПРАВИМ перед запуском под свои нужды!

его нужно поместить в каталог с текстовой бд, обычно /var/stargazer и запустить.

 

 

Вобщемто, все что сдесь написано - тривиально. За опечатки и неточности прошу не пинать а на них указывать.

 

ЗЫ (добавил спустя 1.5 часа)

Поскольку по словам Фауста модуль для базы mysql будет входить в дистр stargazera официально - есть предложение на сайте stargazerа сделать пример конфигов для связки stg + store_mysql + freeradius_mysql.

Есс-но от радиуса можно авторизировать множество разных сервисов (банально вайфай напрмер). Такая связка в значительной степени расширит область применения биллинга, на мой взгляд.

 

Еще очень бы хотелось заиметь модуль postgresql_store, к сожелению я не программер и написание такого модуля не осилю.

 

 

ЗЗЫ (добавил 14.01.2008)

Новый довесочек к этой сборке - шейпер входящего и исходящего трафика впн соединений реализованный следующим образом:

Создаем файл с произвольным именем в каталоге /etc/ppp/ip-up.d, например route с таким кодом

#!/bin/bash

INTERFACE=$1
LOCAL_IP=$4
REMOTE_IP=$5
IPPARAM=$6

LOGIN="stg_sql_user"
PASSWORD="stg_sql_password"
DB="stg_billing"

IPTABLES=/sbin/iptables

RES=`echo $REMOTE_IP | grep "^192\.168\.5.*" -c`
if [[ $RES = 1  ]]
then
  DOWN=`/usr/bin/mysql -u $LOGIN --password="$PASSWORD" -e "select Userdata1  from users where ip = '$REMOTE_IP'" $DB| /usr/bin/tail -n 1`
  UP=`/usr/bin/mysql -u $LOGIN --password="$PASSWORD" -e "select Userdata2  from users where ip = '$REMOTE_IP'" $DB| /usr/bin/tail -n 1`
  if [[ $DOWN = '' ]]
  then
      DOWN='2048'
  fi
  if [[ $UP = '' ]]
  then
      UP='128'
  fi
  DEVICE=$INTERFACE
  /sbin/tc qdisc del dev $DEVICE root
  /sbin/tc qdisc add dev $DEVICE root tbf rate ${DOWN}Kbit latency 50ms burst $[$DOWN*1024]
  /sbin/tc qdisc del dev $DEVICE handle ffff: ingress
  /sbin/tc qdisc add dev $DEVICE handle ffff: ingress
  /sbin/tc filter add dev $DEVICE parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${UP}Kbit burst $[$DOWN*1024] drop flowid :1
fi

 

 

Где:

LOGIN="stg_sql_user"

PASSWORD="stg_sql_password"

DB="stg_billing"

логин, пароль и название базы SQL используемой stg сервером

 

Скорость загрузки у пользователя в конфигураторе пишем в поле Userdata1, а скорость аплоада у пользователя пишем в Userdata2 в килобитах. Если эти значения не указаны используются DOWN='2048', и UP='128' - загрузка 2Мбита и аплоад 128 Кбит соотв.

 

Строчка RES=`echo $REMOTE_IP | grep "^192\.168\.5.*" -c` определяет является ли это подключение впн соединением пользователя (в данном случае это сеть 192.168.5*, если у Вас другая, то необходимо сделать соотв. изменения.)

 

Для удобства в веб админке 8 версии (web_0.08) можно поля Userdata1 и Userdata2 можно назвать Download и Upload соотв. Это можно сделать в пункте Userdata раздела Настройки.

 

Жду критики.

Спасибо за внимание.

Адрес для связи: omega@ua.fm

Link to post
Share on other sites
  • Replies 148
  • Created
  • Last Reply

Top Posters In This Topic

единственное что мне тут непонятно, так это зачем использовать пакет радиуса? Когда есть модуль для стг (ВПН) который выполняет эти функции....

Link to post
Share on other sites
единственное что мне тут непонятно, так это зачем использовать пакет радиуса? Когда есть модуль для стг (ВПН) который выполняет эти функции....

 

+1

Link to post
Share on other sites

Думаю, какой из методов использовать, дело каждого.

К томуже радиус протокол во фрирадиусе реализован неплохо, да и потдержка его тоже не запаздывает. Потому я его и выбрал.

Это не значит что ваш радиус модуль плох, очень хорошо что он есть, просто я предпочитаю фрирадиус. Уверен есть люди которые также предпочтут его.

Link to post
Share on other sites

Кстати почитал ветку про этот модуль и могу сказать:

А зачем нужен был радиус модуль если уже давно есть готовое, качественное и бесплатное решение с хорошей потдержкой и обновлением в виде фрирадуиса ? :)

Link to post
Share on other sites
  • 5 weeks later...
5.2.1 Берем файлы http://hs.dp.ua/stg/etc.tar.bz2

сервер недоступен :)

это только у меня так?

Не только у тебя. Автору респект с просьбой перевыложить где-нибудь исходники патченых вещей

Link to post
Share on other sites

Сейчас все онлайн.

Если у когото есть возможность перетяните и выложите в надежное место. (у меня нет такой возможности к сожалению)

Link to post
Share on other sites
Сейчас все онлайн.

Если у когото есть возможность перетяните и выложите в надежное место. (у меня нет такой возможности к сожалению)

рапида?

 

залили все выше используемые файлы. ( только stg-web версии 0.08 )

 

http://www.rapidshare.ru/482876

Link to post
Share on other sites
  • 2 weeks later...

Модуль VPN у меня не завелся :argh: ..в логах pppd написало, что сервер не ответил вовремя на запрос...хотя с обычным фрирадиусом всё гуд. Может, конечно, я не разобрался в чем то, но там всегото надо прописать секрет в конфиге модуля+ Ип НАСа..или оставить 0.0.0.0. ...посему, думаю, пускай этот мануал останется именно таким какой есть..

только у меня не ВПН, а рррое-сервер, хотя разницы я не вижу

 

Да еще -закконектился под пользаком - старгазер абсолютно не считает траффик. Может тут есть какая то хитрость?

Link to post
Share on other sites
только у меня не ВПН, а рррое-сервер, хотя разницы я не вижу

 

Да еще -закконектился под пользаком - старгазер абсолютно не считает траффик. Может тут есть какая то хитрость?

1. Использовать модуль ipq_cap (для VPN это обязательное условие);

2. Проверить правила iptables чтобы они нормально передавали в очередь пакеты;

3. Проверить rules;

4. Проверить ip-адрес пользователя.

Link to post
Share on other sites
Модуль VPN у меня не завелся :argh: ..в логах pppd написало, что сервер не ответил вовремя на запрос...хотя с обычным фрирадиусом всё гуд. Может, конечно, я не разобрался в чем то, но там всегото надо прописать секрет в конфиге модуля+ Ип НАСа..или оставить 0.0.0.0. ...посему, думаю, пускай этот мануал останется именно таким какой есть..

только у меня не ВПН, а рррое-сервер, хотя разницы я не вижу

 

Да еще -закконектился под пользаком - старгазер абсолютно не считает траффик. Может тут есть какая то хитрость?

страрайся лучше :00:

 

у меня всё отлично заработало ( хотя 3 дня посапел над связко - по неопытности, и задал MAXu 1000 глупых вопросов :huh: )

НО модуль это просто чудо! сразувидно кто юзает инет - кто нет!

Ip вадавался у мню самим ptppd

А вот разница между pppoE и pptp большая :)

Link to post
Share on other sites
товарищи... не хочу обидить аффтора - но лучше переписать этот мануал с VPN модулем!

Зачем просиш? Переписал бы и выложил. Все бы спасибо сказали.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...