Источник статьи находиться по адресу: http://forum.ubuntu.ru/index.php?topic=54691.0
Автор: Nesmit
Биллинг находится здесь: http://abills.net.ua
Цель:
1.Обеспечить интернетом локальную сеть, числом 10 и более.
2.Учет трафика
3.Учет финансов
4.Создание тарифных планов.
5.Ограничение по скорости
6.Шифрование 128bit, причин много.
7.Без шифрования, но используя mschapv2.
8.Шифрование личного кабинета (apache SSL)
9.Возможность модернизации: интеграция почтового сервера с биллингом и т.д.
Список литературы:
Мною найдено 2 полезные статьи по установки abills.
http://habrahabr.ru/blogs/linux/23650/ - наша основа
http://silverghost.org.ua/2008/10/13/ustanovka-billinga-abills-na-ubuntu-804-lts-server-mikrotik-router-os-v-kachestve-servera-dostupa/ - наша основа №2
еще:
http://www.opennet.ru/base/net/abills_server.txt.html — не менее полезная, но microtik'а у нас нет.
http://www.xakep.ru/magazine/xa/112/136/1.asp — pppoe
Описание параметров в pptpd
http://www.compress.ru/article.aspx?id=18183&iid=842
Информацию будем брать из первых 2х статей, они ближе всего к нашей теме. Получится переработанная 1я статья с добавлением некоторых деталей из 2й + мои дороботки.
Ссылка на конфы фрирадиуса 1.1.7 и pptp. Этот фаил сильно облегчит поднятие сервера.
vpn-config.7z
Только права на файлы после замены восстановите!
Мой выбор пал на LTS дистрибутив Ubuntu 8.04, это уже проверенная система в которой отработан набор пакетов и немаловажная часть... длительная поддержка. Хороший Админ — ленивый Админ. Зачем нам головная боль?
После установки обновляемся, ставим все самое последнее:
#apt-get update
#apt-get dist-upgrade
В моем случае, слилось 81,5мб. И ребут.
заходим под рутом.
$ sudo -s -H
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 ssl
#a2enmod rewrite
#a2enmod suexec
#a2enmod include
#/etc/init.d/apache2 restart
#a2enmod rewrite -ОБЯЗАТЕЛЕН, иначе получите ошибку при входе в админку!
распаковываем в /usr/abills
mkdir /usr/abills/backup
chown -R www-data:www-data /usr/abills/backup
mkdir /usr/abills/cgi-bin/admin/nets
chown -R www-data:www-data /usr/abills/cgi-bin/
mkdir /usr/abills/var
mkdir /usr/abills/var/log
chown -R freerad:freerad /usr/abills/var
mkdir /usr/abills/var
Без заморочек, берите уже готовые из архива!!!! НЕ ЗАБУДТЕ ПОСЛЕ ЗАМЕНЫ ВЕРНУТЬ ОБРАТНО ПРАВА НА ФАЙЛЫ.
Редактируем /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 выдает лог и служит для поиска онных.
правим фаил /etc/hosts
vpn-server - это имя ВАШЕГО сервера, меняете на ваше усмотрение. Иначе радиус клиент не сможет соедениться с радиус-сервером.
mysql -u root -p
GRANT ALL ON abills.* TO abills@localhost IDENTIFIED BY "yourpassword";
CREATE DATABASE abills;
mysql -u root -p abills < abills.sql
Меняем кодироку на cp1251 здесь /etc/apache2/conf.d/charset
Перезапускаем apache
/etc/init.d/apache2 restart
Пишем скрипт /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 qdisc add dev $1 root handle 1: htb default 20
/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
Внимание! В строке "/sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 1" шейпера , лучше поставить "r2q 10", если у вас ругань в логах и вы используете тарифы со скоростью выше 128 кбит. (спасибо Squid007)
Открываем web-интерфейс админки по адресу http://вашхост/admin
Логин/пароль abills/abills их можно будет потом сменить.
Теперь добавляем IP POOLs
Инструкция для настройки Squid в прозрачный режим, находится тут: http://forum.ubuntu.ru/index.php?topic=3244.0
правила фаервола:
ip адрес 192.168.1.8, смотрит в сторону adsl роутера.
https://help.ubuntu.com/community/forum/server/apache2/SSL
Создаем тарифы, добавляем пользователей.
Тут главное сначала создать группы тарифов, а потом сами тарифы. Кроме этого читайте на WiKi подробно все опции. Обычно начинают орать раньше чем поймут что опции означают.
PS: По данной инструкции мной было поднято 4 сервера и успешно работают.
PPS: Если нужно убрать шифрование, делаем так:
Убираем строчку "require-mppe-128" в файле /etc/ppp/pptpd-options Это даст бОльшую стабильность VPN туннелей.
А так же используйте сетевые карты intel или 3com. PPTP протокол на реалтеках глючит.
Все, удачи.