Итак приступим к установке VPN сервера с биллингом abills
В /etc/rc.local прописываем следующие строки для автоматического восстановления настроек после сбоев.
Далее в файл /etc/modules дописываем следующие строчки
Всё, теперь все пользователи из локалки могут выходить во внутреннюю сеть провайдера.
Не забываем сохранить настройки файервола
Редактируем файл /etc/network/interfaces чтобы получилось примерно следующее содержание
Если все прошло удачно, то можно проверить командой ifconfig появился ли интерфейс ppp0
!!! Внимание, в этот момент у вас на сервере на настроен NAT и поднять инет, т.е. все юзеры из локалки имеют неограниченый доступ в инет.!!!
Оптключить vpn можно командой poff aist
Подключить - pon aist
Далее редактируем /etc/freeradius/acct_users дописываем в конец
/etc/init.d/freeradius restart
Добавляем поддержку mod_rewrite.
Редактируем /etc/apache2/sites-enabled/000-default
Теперь устанавливаем пакеты для perl
/etc/init.d/apache2 restart
Указываем верные реквизиты доступа к БД, также меняем
Выполняем apt-get install snmp
Правим файл /usr/abills/Abills/defs.conf
Редактируем /etc/ppp/options
Редактируем /etc/ppp/pptpd-options
Редактируем /etc/pptpd.conf
Перезапускаем pptpd /etc/init.d/pptpd restart
Для работы ограничителя скорости добавляем в /etc/ppp/ip-up
3 Настрока 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
Далее остается создать тарифы и юзеров, enjoy ;)
Установка Ubuntu 7.10
Описывать ее нет смысла, поэтому переходим к настройке. =) Ну единственное могу заметить, что стоит поставить серверную версию Ubuntu без графики.Настройка ОС
Итак нам необходимо настроить NAT на сервере, чтобы выпустить локальных клиентов во внутреннюю сеть првоайдера.В /etc/rc.local прописываем следующие строки для автоматического восстановления настроек после сбоев.
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables-restore /etc/iptables.conf
в файле /etc/iptables.conf будут хранится настройки iptablesДалее в файл /etc/modules дописываем следующие строчки
ip_conntrack
ip_gre
ip_nat_pptp
ip_conntrack_ftp
ip_nat_ftp
Для применения всех этих параметров можно запустить скрипт /etc/rc.local и дать командыmodprobe ip_conntrack
modprobe ip_gre
modprobe ip_nat_pptp
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
После этого для поднятия NAT достаточно прописать командуiptables -t nat -A POSTROUTING -o ! eth1 -j MASQUERADE
Интерфейс eth1 - смотрит в локалкуВсё, теперь все пользователи из локалки могут выходить во внутреннюю сеть провайдера.
Не забываем сохранить настройки файервола
iptables-save > /etc/iptables.conf
Настройка VPN (pptp) клиента для доступа сервера в интернет.
При наличии DVD диска или подключения к интернету можно просто дать командуapt-get install pptp-linux
если нет возможности автоматической установки, то необходимо скачать пакет в папку и запустить установку вручную.dpkg -i pptp-linux_1.7.0-2ubuntu2_i386.deb
Теперь приступим к настройке VPN, для этого идем в папку /etc/ppp/peers и создаем там файл к примеру aistvim /etc/ppp/peers/aist
а в нем уже пишемmtu 1400
mru 1500
persist
maxfail 0
lcp-echo-interval 60
lcp-echo-failure 4
pty "pptp server.avtograd.ru --nolaunchpppd"
name логин
password пароль
remotename PPTP
require-mppe-128
defaultroute
replacedefaultroute
Теперь перед тем как поднять VPN необходимо прописать маршрутизацию для внутренней сети провайдера, т.к. через VPN к ней доступа нет.Редактируем файл /etc/network/interfaces чтобы получилось примерно следующее содержание
auto lo eth1 eth0
iface lo inet loopback
iface eth1 inet static
address 192.168.110.1
netmask 255.255.255.0
iface eth0 inet dhcp
up route add -net 172.16.0.0 netmask 255.240.0.0 dev eth0
up route add -net 10.0.0.0 netmask 255.0.0.0 dev eth0
up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0
up pon aist
pre-down poff aist
Для проверки можно воспользоваться командой/etc/init.d/networking restart
после этого все интерфейсы будут перезапущены. VPN подключится автоматически.Если все прошло удачно, то можно проверить командой ifconfig появился ли интерфейс ppp0
!!! Внимание, в этот момент у вас на сервере на настроен NAT и поднять инет, т.е. все юзеры из локалки имеют неограниченый доступ в инет.!!!
Оптключить vpn можно командой poff aist
Подключить - pon aist
Установка freeradius
apt-get install freeradius
Редактируем /etc/freeradius/users оставляем только следующие строки
DEFAULT Auth-Type = Accept
Exec-Program-Wait = "/usr/abills/libexec/rauth.pl"
остальное коментируем или удаляем.Далее редактируем /etc/freeradius/acct_users дописываем в конец
DEFAULT Acct-Status-Type == Start
Exec-Program = "/usr/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Alive
Exec-Program = "/usr/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Stop
Exec-Program = "/usr/abills/libexec/racct.pl"
Редактируем /etc/freeradius/clients.conf коментируем все, в конец добавляемclient localhost {
secret = radsecret
shortname = shortname
}
А также незнаю почему, но у меня при настройке возник такой глюк и пришлось добавить таую строку с адресом на eth0client 172.16.102.72 {
secret = radsecret
shortname = shortname
}
В /etc/freeradius/radiusd.conf комментируем строки mschap и eap в разделе authorizeauthorize {
preprocess
#chap
#counter
#attr_filter
#eap
suffix
files
#etc_smbpasswd
#sql
#mschap
}
Переходим к редактированию файла /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
Настройка Radiusclient
Устанавливаем Radiusclientapt-get install radiusclient1
Правим файл /etc/radiusclient/radiusclient.conf :authserver 127.0.0.1
acctserver 127.0.0.1
Редактируем /etc/radiusclient/servers127.0.0.1 radsecret
Добавляем в /etc/radiusclient/dictionaryATTRIBUTE Acct-Interim-Interval 85 integer
ATTRIBUTE Session-Octets-Limit 227 integer
ATTRIBUTE Octets-Direction 228 integer
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
Скачиваем биллинговую систему AbillS распаковываем ее
tar -xf abills-0.37.tgz
Переносим ее в папку /usr/abillsmv abills /usr/
Настройка MySQL
Устанавливаемapt-get install mysql-server
Далее необходимо создать БД для AbillSТеперь дамп БД из каталога с abills нужно занести в БДmysql -u root -p
CREATE DATABASE abills;
mysql -u root -p abills < abills.sql
Устанавливаем Apache
apt-get install apache2
Добавляем поддержку mod_rewrite.
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
Редактируем /etc/apache2/sites-enabled/000-default
<VirtualHost *>
DocumentRoot /usr/abills/cgi-bin/
Alias /abills "/usr/abills/cgi-bin/"
<Directory "/usr/abills/cgi-bin">
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]
Options Indexes ExecCGI SymLinksIfOwnerMatch
</IfModule>
AddHandler cgi-script .cgi
Options Indexes ExecCGI FollowSymLinks
AllowOverride none
DirectoryIndex index.cgi
#Options ExecCGI
<Files ~ "\.(db|log)$">
Order allow,deny
Deny from all
</Files>
</Directory>
#Admin interface
<Directory "/usr/abills/cgi-bin/admin">
AddHandler cgi-script .cgi
Options Indexes ExecCGI FollowSymLinks
AllowOverride none
DirectoryIndex index.cgi
order deny,allow
allow from all
</Directory>
</VirtualHost>
Теперь устанавливаем пакеты для perl
Перезапускаем apacheapt-get install libdbi-perl libdbd-mysql-perl libdigest-md4-perl libdigest-sha1-perl libcrypt-des-perl
/etc/init.d/apache2 restart
Настройка abills
В папке /usr/abills/libexec выполняем cp config.pl.default config.pl , затем редактируем config.plУказываем верные реквизиты доступа к БД, также меняем
Далее редактируем /etc/sudoers добавляем строку$conf{MAX_SESSION_TRAFFIC} = 2047;
$conf{periodic_check}='yes';
$conf{ERROR_ALIVE_COUNT} = 10;
В /etc/crontab заносимwww-data ALL = NOPASSWD: /usr/abills/misc/pppd_kill
Устанавливаем права на чтение и запись вебсервером для файлов веб интерфейса*/5 * * * * root /usr/abills/libexec/billd -all
1 0 * * * root /usr/abills/libexec/periodic daily
1 0 1 * * root /usr/abills/libexec/periodic monthly
Создаем недостающие каталоги:chown -Rf www-data /usr/abills/cgi-bin
mkdir /usr/abills/backup
chown www-data /usr/abills/backup
Выполняем apt-get install snmp
Правим файл /usr/abills/Abills/defs.conf
2.9 Установка pptpd$SNMPWALK = '/usr/bin/snmpwalk';
$GZIP = '/bin/gzip';
$MYSQLDUMP = '/usr/bin/mysqldump';
apt-get install pptpd
Редактируем /etc/ppp/options
+chap
Редактируем /etc/ppp/pptpd-options
#require-mppe-128
#require-mschap-v2
plugin radius.so
plugin radattr.so
debug
ms-dns 192.168.160.1
Редактируем /etc/pptpd.conf
ppp /usr/sbin/pppd
option /etc/ppp/pptpd-options
debug
localip 192.168.160.1
Перезапускаем pptpd /etc/init.d/pptpd restart
Для работы ограничителя скорости добавляем в /etc/ppp/ip-up
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`
FILTERS=`/usr/bin/awk '/Filter-Id/ {print $2}' /var/run/radattr.$1`
#echo $DOWNSPEED
#echo $UPSPEED
#echo $FILTERS
/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
3 Настрока 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
Далее остается создать тарифы и юзеров, enjoy ;)
1 комментарий:
Отличная статья! Я сам являюсь пользователем ADSL. настроил подключение по вашей статье, единственное что пришлось добавить "--nobuffer" к pty (c ним скорость, почему-то, немного повыше стала) и "unit 0" в конфиг пира, что бы привязать подключение к ppp0, что бы не облажаться c регистрацией адреса на dyndns.org, т.к. подключаю несколько впн соединений на сервере. Спасибо! Пишите еще! :-)
Отправить комментарий