abills ubuntu 10 pptpd (VPN)
рекламка
мед справки для гаи вао и гибдд
ставим бубунту, обновляем
apt-get update
apt-get dist-upgrade
чтоб проще было, переключаемся в рута
sudo -s -H
русскую локаль в убунту
apt-get install language-pack-ru-base
ставим за раз все что нам надо
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 nano
включаем модули апача и перезапускаем
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
/etc/init.d/apache2 restart
забираем последнюю стабильную версию
http://sourceforge.net/projects/abills/files/
Создаем нужные каталоги и меняем права
mkdir /usr/abills/
mkdir /usr/abills/backup/
chown -R www-data:www-data /usr/abills/backup
mkdir /usr/abills/cgi-bin/
mkdir /usr/abills/cgi-bin/admin/
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
Далее редактируем
nano /etc/sudoers
добавив права убивають vpn туннели
www-data ALL=NOPASSWD: /usr/abills/misc/pppd_kill
далее крутим радиус
nano /etc/freeradius/radiusd.conf
в секции modules
#abills_preauth
exec abills_preauth {
program = «/usr/abills/libexec/rauth.pl pre_auth»
wait = yes
input_pairs = request
shell_escape = yes
#output = no
output_pairs = config
}
#abills_postauth
exec abills_postauth {
program = «/usr/abills/libexec/rauth.pl post_auth»
wait = yes
input_pairs = request
shell_escape = yes
#output = no
output_pairs = config
}
#abills_auth
exec abills_auth {
program = «/usr/abills/libexec/rauth.pl»
wait = yes
input_pairs = request
shell_escape = yes
output = no
output_pairs = reply
}
#abills_acc
exec abills_acc {
program = «/usr/abills/libexec/racct.pl»
wait = yes
input_pairs = request
shell_escape = yes
output = no
output_pairs = reply
}
nano /etc/freeradius/modules/exec
в секции exec заменяем на
exec{
wait = yes
input_pairs = request
shell_escape = yes
output = none
output_pairs = reply
}
секции authorize, preacct, post-auth остальное в этих секциях комментируем
nano /etc/freeradius/sites-enabled/default
authorize {
preprocess
abills_preauth
mschap
files
abills_auth
}
preacct {
preprocess
abills_acc
}
post-auth {
Post-Auth-Type REJECT {
abills_postauth
}
}
потом
nano /etc/freeradius/users
в самый верх
DEFAULT Auth-Type = Accept
далее коментим все в файле
nano /etc/freeradius/clients.conf
и вставляем
client localhost {
ipaddr = 127.0.0.1
secret = radsecret
shortname = shortname
}
nano /etc/freeradius/dictionary
добавляем в конец
# Limit session traffic
ATTRIBUTE Session-Octets-Limit 227 integer
# What to assume as limit — 0 in+out, 1 in, 2 out, 3 max(in,out)
ATTRIBUTE Octets-Direction 228 integer
# Connection Speed Limit
ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer
ATTRIBUTE Acct-Interim-Interval 85 integer
и перезапускаем радиус:
/etc/init.d/freeradius restart
пишет ошибку? разгребаем команду
freeradius -X
теперь радиус клиент
nano /etc/radiusclient/servers
в самое начало
127.0.0.1 radsecret
эти файлы отвечают за поддержку mschap v2 и mppe
cd /etc/radiusclient/
wget http://cakebilling.googlecode.com/files/etc.tar.bz2
и достаем оттуда dictionary.microsoft в этот же каталог
теперь
nano /etc/radiusclient/dictionary.microsoft
в самый конец
# Limit session traffic
ATTRIBUTE Session-Octets-Limit 227 integer
# What to assume as limit — 0 in+out, 1 in, 2 out, 3 max(in,out)
ATTRIBUTE Octets-Direction 228 integer
# Connection Speed Limit
ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer
ATTRIBUTE Acct-Interim-Interval 85 integer
правим фаил
nano /etc/hosts
127.0.0.1 localhost vpn-server
127.0.1.1 localhost vpn-server
vpn-server — это имя вашего сервера, меняете на ваше усмотрение. Иначе радиус клиент не сможет соединиться с радиус-сервером.
поставим веб морду
sudo apt-get install phpmyadmin
далее
http://ip-адрес-вашего-сервера/phpmyadmin/
вводим логин root и пароль, для управления сервером и
закладка «Привилегии» –> «Добавить нового пользователя»
Имя пользователя: abills
Хост: localhost
Пароль:нажать кнопку сгенерировать, пароль запомнить или записать.
Поставить галку: Создать базу данных с именем пользователя в названии и предоставить на нее полные привилегии.
Жмем Ок, читаем что база создана.
теперь импортируем сюда дамп базы abills.sql выбрав кодировку cp1251
Настраиваем конфигурацию Abills
cd /usr/abills/libexec
cp config.pl.default config.pl
nano config.pl
и там меняем настройки на свои
$conf{dbhost}=’localhost’;
$conf{dbname}=’abills’;
$conf{dbuser}=’abills’;
$conf{dbpasswd}=’ваш пасс’;
$conf{dbcharset}=’cp1251′;
$conf{default_language}=’russian’;
#$conf{periodic_check}=’yes’;
#$conf{ERROR_ALIVE_COUNT} = 10;
$conf{secretkey}=»ваш кей»;
#$conf{RADIUS2}=1;
Отключаем лишние модули:
@MODULES = (‘Dv’,
# ‘Voip’,
# ‘Docs’,
# ‘Mail’,
‘Sqlcmd’);
далее
nano /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’;
сертификат для Apache
mkdir /etc/apache2/ssl
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
nano /etc/apache2/sites-available/default-ssl
удаляем там все и вставляем
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
DocumentRoot /usr/abills/cgi-bin/
Alias /abills «/usr/abills/cgi-bin/»
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) — [E=HTTP_CGI_AUTHORIZATION:%1]
Options Indexes ExecCGI SymLinksIfOwnerMatch
AddHandler cgi-script .cgi
Options Indexes ExecCGI FollowSymLinks
AllowOverride none
DirectoryIndex index.cgi
#Options ExecCGI
Order allow,deny
Deny from all
#Admin interface
AddHandler cgi-script .cgi
Options Indexes ExecCGI FollowSymLinks
AllowOverride none
DirectoryIndex index.cgi
order deny,allow
allow from all
ErrorLog /var/log/apache2/error-abills.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access-abills.log combined
добавляем
nano /etc/apache2/conf.d/charset
AddDefaultCharset cp1251
Создаем ссылку
ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/default-ssl
далее впн
nano /etc/pptpd.conf
раскоментим
ppp /usr/sbin/pppd
option /etc/ppp/pptpd-options
localip ваш ип
nano /etc/ppp/options
d yfxfkj
+mschap-v2
nano /etc/ppp/pptpd-options
в начало
ms-dns ваш днс
asyncmap 0
lcp-echo-failure 30
lcp-echo-interval 5
ipcp-accept-local
ipcp-accept-remote
plugin radius.so
plugin radattr.so
теперь скрипт шейпера и даем права запуска
touch /etc/ppp/ip-up.d/shaper
chmod 744 /etc/ppp/ip-up.d/shaper
nano /etc/ppp/ip-up.d/shaper
и туда
#!/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 0×10 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 0×05 0x0f at 0 match u160x0000 0xffc0 at 2 match u8 0×10 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
устанавливаем squid, делаем его прозрачным
apt-get install squid
nano /etc/squid/squid.conf
находим
http_port 3128 и дописываем transparent
получилось
http_port 3128 transparent
перезапускаем
/etc/init.d/squid restart
теперь
nano /etc/rc.local
и туда
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT —to-source 10.0.0.6
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/16 —dport 80 -j REDIRECT —to-port 3128
iptables -A INPUT -p TCP -i venet0:0 —dport 3128 -j DROP #Порты proxy
iptables -A INPUT -p TCP -i venet0:1 —dport 3128 -j DROP
iptables -A INPUT -p TCP -i venet0:0 —dport 3306 -j DROP #mysql
iptables -A INPUT -p TCP -i venet0:1 —dport 3306 -j DROP
echo «1″ > /proc/sys/net/ipv4/ip_forward
exit 0
в планировщик
nano /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
с консолью все
Открываем web-интерфейс админки по адресу https://ип-вашего-сервера/admin/
Логин/пароль abills/abills их можно будет потом сменить
а дальше на сайте автора (и вообщ по инету) много примеров использования
желаю удачи..
Оставьте свой отзыв