Перейти до

Рекомендованные сообщения

Опубликовано:

Начало.

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

 

Большое спасибо разработчикам старгейзера и ребятам 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

  • Відповіді 148
  • Створено
  • Остання відповідь

Top Posters In This Topic

Опубліковано:

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

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

 

+1

Опубліковано:

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

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

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

Опубліковано:

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

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

  • 5 weeks later...
Опубліковано:

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

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

Опубліковано:
Сейчас все онлайн.

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

рапида?

 

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

 

http://www.rapidshare.ru/482876

  • 2 weeks later...
Опубліковано:

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

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

 

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

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

 

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

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

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

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

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

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

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

 

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

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

 

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

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

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

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

Опубліковано:
товарищи... не хочу обидить аффтора - но лучше переписать этот мануал с VPN модулем!

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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Створити нове...