Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: HOW-TO pptpd+mppe+abills 0.40b для малого офиса или мелкого провайдера.  (Прочитано 49732 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Биллинг находится здесь: http://abills.net.ua
Цель:
1.Обеспечить интернетом локальную сеть, числом 10 и более.
2.Учет трафика
3.Учет финансов
4.Создание тарифных планов.
5.Ограничение по скорости
6.Шифрование 128bit, причин много.
7.Без шифрования, но используя mschapv2.
8.Шифрование личного кабинета (apache SSL)
9.Возможность модернизации:  интеграция почтового сервера с биллингом и т.д.

Список литературы под сполером:
(Нажмите, чтобы показать/скрыть)

Ссылка на конфы фрирадиуса 1.1.7 и pptp. Этот фаил сильно облегчит поднятие сервера.
vpn-config.7z
Только права на файлы после замены восстановите!

1. Устанавливаем систему:
Мой выбор пал на LTS дистрибутив Ubuntu 8.04,  это уже проверенная система в которой отработан набор пакетов и немаловажная часть... длительная поддержка. Хороший Админ — ленивый Админ. Зачем нам головная боль? ;)

После установки обновляемся, ставим все самое последнее:
#apt-get update
#apt-get dist-upgrade
В моем случае, слилось 81,5мб. И ребут.

заходим под рутом.
$ sudo -s -H
2. Устанавливаем необходимые пакеты одной строчкой:
apt-get install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt libdbi-perl libdbd-mysql-perl libdigest-md4-perl libdigest-sha1-perl libcrypt-des-perl freeradius radiusclient1 radiusclient1 pptpd
Во время установки MySQL сервер 2 раза спрашивает пароль root для mysql server, скоро понадобится!
Устанавливается Freeradius, система аккаутинга. По умолчанию ставиться 1.1.x версия, это то что нужно!

Запускаем установленные модули для апача:
(Нажмите, чтобы показать/скрыть)

#a2enmod rewrite-ОБЯЗАТЕЛЕН, иначе получите ошибку при входе в админку!
 
3. Скачиваем abills версия 0.40, с сайта http://abills.net.ua ИМЕННО ЭТУ ВЕРСИЮ
распаковываем в /usr/abills

4. Создаем недостающие каталоги и меняем права:

(Нажмите, чтобы показать/скрыть)

Настраиваем конфигурационный фаил Abills
(Нажмите, чтобы показать/скрыть)

Далее редактируем /etc/sudoers добавляем строку. По этой команде убиваются vpn туннели.
Цитировать
www-data        ALL = NOPASSWD: /usr/abills/misc/pppd_kill

В /etc/crontab заносим следующее.
Цитировать
*/5 *  *  *  *   root    /usr/abills/libexec/billd -all
1    0  *  *  *   root    /usr/abills/libexec/periodic daily
1    0  1  *  *   root    /usr/abills/libexec/periodic monthly
#backup
1    3  *  *  *   root     /usr/abills/libexec/periodic backup

5. Настраиваем freeradius:
Без заморочек, берите уже готовые из архива!!!! НЕ ЗАБУДТЕ ПОСЛЕ ЗАМЕНЫ ВЕРНУТЬ ОБРАТНО ПРАВА НА ФАЙЛЫ.

Редактируем /etc/freeradius/users оставляем только следующие строки (Будте внимательны, лишний табулятор может попить вам крови):
(Нажмите, чтобы показать/скрыть)

Далее редактируем /etc/freeradius/acct_users дописываем в конец
(Нажмите, чтобы показать/скрыть)

Редактируем /etc/freeradius/clients.conf коментируем все, в конец добавляем (клиент/сервер на локальной машине, если будут на разных кодовое слово лучше поменять)

(Нажмите, чтобы показать/скрыть)

В /etc/freeradius/radiusd.conf в секции «authorize» внести pre_auth и раскомментировать mschap
(Нажмите, чтобы показать/скрыть)

Переходим к редактированию файла /etc/freeradius/dictionary добавляем в конец
(Нажмите, чтобы показать/скрыть)

После этого перезапускаем радиус:
/etc/init.d/freeradius restart
Если пишет ошибку, то команда freeradius -X выдает лог и служит для поиска онных.

6. Настраиваем radiusclient, если лень берем готовые файлы из архива:
(Нажмите, чтобы показать/скрыть)

правим фаил /etc/hosts
Цитировать
127.0.0.1   localhost vpn-server
127.0.1.1   localhost vpn-server
vpn-server - это имя ВАШЕГО сервера, меняете на ваше усмотрение. Иначе радиус клиент не сможет соедениться с радиус-сервером.

7. Далее необходимо создать БД для AbillS
(Нажмите, чтобы показать/скрыть)

8. Редактируем /etc/apache2/sites-enabled/000-default
(Нажмите, чтобы показать/скрыть)
Меняем кодироку на cp1251 здесь /etc/apache2/conf.d/charset
Цитировать
AddDefaultCharset cp1251

Перезапускаем apache
/etc/init.d/apache2 restart
9. Установка pptpd, можно взять из архива.
(Нажмите, чтобы показать/скрыть)

Пишем скрипт /etc/ppp/ip-up.d/shaper и даем права запуска. РАБОТАЕТ НА 0.40b

(Нажмите, чтобы показать/скрыть)
Внимание! В строке "/sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 1" шейпера , лучше поставить "r2q 10", если у вас ругань в логах и вы используете тарифы со скоростью выше 128 кбит. (спасибо Squid007)

10. Настрока Abills
Открываем web-интерфейс админки по адресу http://вашхост/admin
Логин/пароль abills/abills их можно будет потом сменить.
Цитировать
Идем System configuration->NAS
Ip пишем 127.0.0.1
Выбираем тип pppd:pppd + Radius
Alive (sec.): 120
RADIUS Parameters (,): Acct-Interim-Interval=60
Теперь добавляем IP POOLs
Цитировать
ставим 192.168.160.2-192.168.160.254

11. По желанию, устанавливаем squid, делаем его прозрачным.
Инструкция для настройки Squid в прозрачный режим, находится тут: https://forum.ubuntu.ru/index.php?topic=3244.0

12. Включаем нат и прописываем следущие строчки в фаил  rc.local
 правила фаервола:
ip адрес 192.168.1.8, смотрит в сторону adsl роутера.
(Нажмите, чтобы показать/скрыть)


13. Apache2 + SSL можно сделать по следующей инструкции:
https://help.ubuntu.com/community/forum/server/apache2/SSL

14.Правим конф /usr/abills/Abills/defs.conf
(Нажмите, чтобы показать/скрыть)

Создаем тарифы, добавляем пользователей.
Тут главное сначала создать группы тарифов, а потом сами тарифы. Кроме этого читайте на WiKi подробно все опции. Обычно начинают орать раньше чем поймут что опции означают.

PS: По данной инструкции мной было поднято 4 сервера и успешно работают.
PPS: Если нужно убрать шифрование, делаем так:
Убираем строчку "require-mppe-128" в файле /etc/ppp/pptpd-options  Это даст бОльшую стабильность VPN туннелей.
А так же используйте сетевые карты intel или 3com. PPTP протокол на реалтеках глючит.

Все, удачи :)
« Последнее редактирование: 17 Марта 2010, 22:38:54 от Nesmit »

Оффлайн satch

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1561
  • Kubuntu 15.10 amd64
    • Просмотр профиля
занятно! как больничный кончится надо будет попробовать :)
Наше желание помочь прямопропорционально вашему желанию решить проблему

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Еще буду дорабатывать.
Разберусь с  ограничением скорости и попробую добавить модули.

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Правим конф
/usr/abills/Abills/defs.conf
меняем только приведенные ниже строки
Цитировать
$SNMPWALK = '/usr/bin/snmpwalk';
$SNMPSET = '/usr/bin/snmpset';
$GZIP = '/bin/gzip';
$TAR='/bin/tar';
$MYSQLDUMP = '/usr/bin/mysqldump';
$IFCONFIG='/sbin/ifconfig';
теперь работает backup.
Всплыла проблема расчета ежедневной абоненской платы, она не считает.
« Последнее редактирование: 20 Апреля 2009, 20:24:39 от Nesmit »

Оффлайн Allexar

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 24 Апреля 2009, 12:54:51 от Allexar »

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
зайдите в безопасном режиме, там руут по умолчанию
root@vpn:~# mcedit /etc/sudoers
после "www-data   ALL = NOPASSWD: /usr/abills/misc/pppd_kill"
должна быть пустая строка, так во всех конфах должно быть.

Вот мой фаил, целиком.
root@vpn:~# cat /etc/sudoers
Цитировать
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults   env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root   ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
www-data   ALL = NOPASSWD: /usr/abills/misc/pppd_kill


Пользователь решил продолжить мысль 21 Апреля 2009, 14:36:05:
Может кто подскажет, что с шейпером?
# tc -d class show
А в ответ тишина, даже после выполнения скрипта по шагам. radatr.pppх успешно читается, все нужное там есть.

« Последнее редактирование: 21 Апреля 2009, 14:36:05 от Nesmit »

Оффлайн Allexar

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Кстати, вот ещё кое какое несовпадение. У вас по тексту:
>В /etc/freeradius/radiusd.conf секция authorize, приводим к такому виду
>В секции mschap включаем шифрование:

Недолго мучался, в конце конфига прочел следующее:

(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)
В sub-директории modules нашел файл "mschap". Поправил. А вот "секцию" authorize найти не могу (то бишь файлика такого в modules нет).  С английским дружу не на ты - где же его найти?

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
данная часть была лишней :) Просто продублировал 2 раза одно и то же. Извиняюсь.
Цитировать
В секции «authorize» внести pre_auth и раскомментировать mschap
authorize {
  preprocess
  pre_auth
  mschap
  files
}
не понял на счет mschap
mschap есть секция в этом же конфе, где и нужно включить шифрование.

Оффлайн Allexar

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Ну, можете сами глянуть на конфиг... нету там "мчапа" больше. Поскольку с версии 2.0 эти секции переведены в самостоятельный модуль в папке modules. А где "authorize" искать - не имею вообще понятия, в конфиге что-то об этом сказано (см.в пред.посте) а что - перевести по-человечески не могу... Может самому надо создать модуль такой и дописать в конфиг, но я настолько нуб, что боюсь, всё должно решаться гораздо проще... Может я недоглядел в конфиге. Вот он - убедитесь сам, повторюсь, теперь секций "авторизации" и "мчап" там нет.
(Нажмите, чтобы показать/скрыть)

PS
Спустя 4ре дня - всё ещё мучаю, пока не работает... :(
« Последнее редактирование: 24 Апреля 2009, 23:04:53 от Allexar »

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
упс, второй раз мне впихивают 2.0 Я где нибудь писал, что ставим исключительно 2.0?
Тут речь идет о пакете freeradius по умолчанию, а по умолчанию в 8,04 ставится исключительно 1.1.7.
Это она из тех вещей почему я ставил именно 8.04!
1.х и 2.х отличаются конфами, это даже на сайте Абиллса написано.

Завтра выложу копию всех conf файлов для фрирадиуса, уж больно тяжко с ним бороться и искать свои ошибки.
« Последнее редактирование: 22 Апреля 2009, 09:24:40 от Nesmit »

Оффлайн morphay

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Всплыла проблема расчета ежедневной абоненской платы, она не считает.

ага, вроде в 0,37 считала... поставили 0,41 и началась мистика, 1 день посчитала и все...

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
ну значит не зря писали, что афтор ставит палки в колеса :)

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
http://abills.net.ua/forum/viewtopic.php?t=4676&postdays=0&postorder=asc&start=0
тут на форуме пытаются прикрутить 2й фрирадиус и что то пока никак

Оффлайн morphay

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
http://abills.net.ua/forum/viewtopic.php?t=4676&postdays=0&postorder=asc&start=0
тут на форуме пытаются прикрутить 2й фрирадиус и что то пока никак

у меня freeradius 2.1.1-1.27, только opensuse, могу конфиг выложить..

Оффлайн Nesmit

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
было бы замечательно :)
С шейпером случаем не колдовали?

PS: Вот ссылка на конфы фрирадиуса 1.1.7
vpn-config.7z
только права на файлы после замены восстановите!
и в /ppp/options ms-dns поменять на нужный.
правим /etc/hosts
127.0.0.1   localhost vpn-server
127.0.1.1   localhost vpn-server

Ну и все, фактически это 90% всех проблем с биллингом.
Абонентка считается, ставьте правильно галки, проверено на версии 41
В настройках пользователя нельзя устанавливать номер порта. Пользователь не соединяется.
IP_POOLS неработает, нужно выставлять в файле /etc/pptpd.conf диапазон ip, в 40й версии таких проблем небыло.
Вообщем то мне осталось разобраться только с шейпингом.



Пользователь решил продолжить мысль 20 Мая 2009, 21:17:35:
Еще одна ссылочка, в которой много интересного.
http://www.volmed.org.ru/wiki/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B1%D0%B8%D0%BB%D0%BB%D0%B8%D0%BD%D0%B3%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_abills_%2B_VPN_%2B_radius_%2B_mysql#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_.D0.B4.D0.BB.D1.8F_freeradius_2..2A
спасибо morphay

Установка всех пакетов 1 строчкой.
apt-get install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt libdbi-perl libdbd-mysql-perl libdigest-md4-perl libdigest-sha1-perl libcrypt-des-perl freeradius radiusclient1 radiusclient1 pptpd

Пользователь решил продолжить мысль 22 Мая 2009, 11:01:45:
Рекомендую ставить  0.40, в 0.41 не работают словари для фрирадиуса, которые относятся к выделению ip адреса, nas порта и видимо еще что то.
Зато, разобрался с шейпером, все проще некуда.
 Шейпер

Взято тут: http://abills.net.ua/forum/viewtopic.php?t=4348

Что бы включить шейпер, пишем скрипт /etc/ppp/ip-up.d/shaper и даем права запуска.
Цитировать
#!/bin/sh

TC="/sbin/tc"
TCQA="$TC qdisc add dev $IFNAME"
TCQD="$TC qdisc del dev $IFNAME"

$TCQD root &>/dev/null
$TCQD ingress &>/dev/null

$TCQA root handle 1: htb
$TCQA handle ffff: ingress

/usr/abills/libexec/linkupdown ipn up $IFNAME $PEERNAME $IPREMOTE OS=Linux
Предварительно убрав все старые скрипты шейпера, если таковые имели место быть.

Трафик будет шейпится согласно классам, описанным в интервалах ТП (независимо от наличия модуля Ipn) или в соответствии с / Клиенты/ Логины/ Информация/ Сервисы/ Dialup / VPN/Скорость (kb): (более высокий приоритет, независимо от ТП)

в config.pl желательно прописать:

Цитировать
$conf{IPN_FW_START_RULE}="/usr/bin/sudo /usr/abills/libexec/linkupdown ipn up eth0 %LOGIN %IP".' &>/dev/null';
$conf{IPN_FW_STOP_RULE}="/usr/bin/sudo /usr/abills/libexec/linkupdown ipn down eth0 %LOGIN %IP".' &>/dev/null';

$conf{IPN_FW_FIRST_RULE}=1;
$conf{IPN_FW_RULE_UID}=1;

Все работает.
PS: а я ушел ставить 0.40 и тестить все это там.

Пользователь решил продолжить мысль 22 Мая 2009, 17:10:48:

Застрелиться, все что работало в 0,41 в 0,40 неработает.
в 0,40 по прежнему нельзя задавать номер порта и неработает скрипт шейпера с оф сайта, зато получилось заставить работать так:

Пишем скрипт /etc/ppp/ip-up.d/shaper и даем права запуска. РАБОТАЕТ НА 0.40b
#!/bin/sh

if [ -f /var/run/radattr.$1 ]
   then
   DOWNSPEED=`/usr/bin/awk  '/PPPD-Downstream-Speed-Limit/ {print $2}'  /var/run/radattr.$1`
   UPSPEED=`/usr/bin/awk  '/PPPD-Upstream-Speed-Limit/ {print $2}'  /var/run/radattr.$1`
  
# echo $DOWNSPEED
# echo $UPSPEED >
 
    /sbin/tc qdisc del dev $1 root    > /dev/null
    /sbin/tc qdisc del dev $1 ingress > /dev/null

 ##### speed server->client
   if [ "$UPSPEED" != "0" ] ;
   then
     /sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 1
     /sbin/tc class add dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}kbit burst 4k
     /sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate ${UPSPEED}kbit burst 4k prio 1
     /sbin/tc class add dev $1 parent 1:1 classid 1:20 htb rate ${UPSPEED}kbit burst 4k prio 2
     /sbin/tc qdisc add dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 1500
     /sbin/tc qdisc add dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 1500
     /sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
     /sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
     /sbin/tc filter add dev $1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u160x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10
   fi
 ##### speed client->server
   if [ "$DOWNSPEED" != "0" ] ;
   then
     /sbin/tc qdisc add dev $1 handle ffff: ingress
     /sbin/tc filter add dev $1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNSPEED}kbit burst 12k drop flowid :1
   fi
 fi

Эпопея  для меня похоже закончена.
Постораюсь на следующей неделе собрать пакет, чтобы больше никому не пришлось так страдать :)))))
« Последнее редактирование: 14 Августа 2009, 14:11:33 от Nesmit »

 

Страница сгенерирована за 0.062 секунд. Запросов: 25.