Наверно всем известно, что ситуация с ценами на интернет в Москве и по России разительно отличается.
Для сравнения в Тольятти (Самарская область) безлимитный доступ на скорости 512кбит/с на месяц обходится в сумму 2300р.
В столице за эту же сумму можно наверно взять уже 20Мбит.
Так вот, как бы это дико не звучало, но я собираюсь, для уменьшения расходов, делиться этим каналом (512кбит/с) еще с несколькими людьми в локальной домовой сети =)
Провайдер дает доступ к интернету через свой VPN сервер.
Юзеры в локалке имеют доступ ко внутригородским ресурсам бесплатно и без контроля трафика.
Во внешку было решено выпускать их через VPN соединение с сервером в локальной сети.
Система была опробована и работает уже почти полгода, нареканий в работе никаких не поступило, все стабильно.
Конфигурация сервера: Pentium III 1000MHz, SDRAM 512Mb
Для уменьшения нагрузки на серве, было решено не использовать сжатие и шифрование, в связи с этим в клиентах требуется дополнительно снять галочку «требовать шифрование» в настройках VPN в Windows
В этой инструкции было решено собрать весь опыт по установке и настройке.
Изначально писал для себя, но думаю общественности тоже может быть полезно.
Итак приступим к установке VPN сервера с биллингом abills
Установка Ubuntu 7.10
Описывать ее нет смысла, поэтому переходим к настройке. =) Ну единственное могу заметить, что стоит поставить серверную версию Ubuntu без графики.
Настройка ОС
Итак нам необходимо настроить NAT на сервере, чтобы выпустить локальных клиентов во внутреннюю сеть првоайдера.
В /etc/rc.local прописываем следующие строки для автоматического восстановления настроек после сбоев.
Далее в файл /etc/modules дописываем следующие строчки
Всё, теперь все пользователи из локалки могут выходить во внутреннюю сеть провайдера.
Не забываем сохранить настройки файервола
При наличии DVD диска или подключения к интернету можно просто дать команду
Редактируем файл /etc/network/interfaces чтобы получилось примерно следующее содержание
Если все прошло удачно, то можно проверить командой ifconfig появился ли интерфейс ppp0
!!! Внимание, в этот момент у вас на сервере на настроен NAT и поднять инет, т.е. все юзеры из локалки имеют неограниченый доступ в инет.!!!
Оптключить vpn можно командой poff aist
Подключить — pon aist
Установка freeradius
Далее редактируем /etc/freeradius/acct_users дописываем в конец
/etc/init.d/freeradius restart
Настройка Radiusclient
Устанавливаем Radiusclient
Устанавливаем
Устанавливаем Apache
Добавляем поддержку mod_rewrite.
Редактируем /etc/apache2/sites-enabled/000-default
* Здесь хабр кушает некоторые теги, можно взять участок отсюда
Теперь устанавливаем пакеты для perl
/etc/init.d/apache2 restart
Настройка abills
В папке /usr/abills/libexec выполняем cp config.pl.default config.pl, затем редактируем config.pl
Указываем верные реквизиты доступа к БД, также меняем
Выполняем 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-интерфейс админки по адресу вашхост/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 ;)
Кросспост из моего блога
Для сравнения в Тольятти (Самарская область) безлимитный доступ на скорости 512кбит/с на месяц обходится в сумму 2300р.
В столице за эту же сумму можно наверно взять уже 20Мбит.
Так вот, как бы это дико не звучало, но я собираюсь, для уменьшения расходов, делиться этим каналом (512кбит/с) еще с несколькими людьми в локальной домовой сети =)
Провайдер дает доступ к интернету через свой VPN сервер.
Юзеры в локалке имеют доступ ко внутригородским ресурсам бесплатно и без контроля трафика.
Во внешку было решено выпускать их через VPN соединение с сервером в локальной сети.
Система была опробована и работает уже почти полгода, нареканий в работе никаких не поступило, все стабильно.
Конфигурация сервера: Pentium III 1000MHz, SDRAM 512Mb
Для уменьшения нагрузки на серве, было решено не использовать сжатие и шифрование, в связи с этим в клиентах требуется дополнительно снять галочку «требовать шифрование» в настройках VPN в Windows
В этой инструкции было решено собрать весь опыт по установке и настройке.
Изначально писал для себя, но думаю общественности тоже может быть полезно.
Итак приступим к установке VPN сервера с биллингом abills
Установка Ubuntu 7.10
Описывать ее нет смысла, поэтому переходим к настройке. =) Ну единственное могу заметить, что стоит поставить серверную версию Ubuntu без графики.
Настройка ОС
Итак нам необходимо настроить NAT на сервере, чтобы выпустить локальных клиентов во внутреннюю сеть првоайдера.
В /etc/rc.local прописываем следующие строки для автоматического восстановления настроек после сбоев.
в файле /etc/iptables.conf будут хранится настройки iptablesecho "1" > /proc/sys/net/ipv4/ip_dynaddr echo "1" > /proc/sys/net/ipv4/ip_forward iptables-restore /etc/iptables.conf
Далее в файл /etc/modules дописываем следующие строчки
Для применения всех этих параметров можно запустить скрипт /etc/rc.local и дать командыip_conntrack ip_gre ip_nat_pptp ip_conntrack_ftp ip_nat_ftp
После этого для поднятия NAT достаточно прописать командуmodprobe ip_conntrack modprobe ip_gre modprobe ip_nat_pptp modprobe ip_conntrack_ftp modprobe ip_nat_ftp
Интерфейс eth1 — смотрит в локалкуiptables -t nat -A POSTROUTING -o ! eth1 -j MASQUERADE
Всё, теперь все пользователи из локалки могут выходить во внутреннюю сеть провайдера.
Не забываем сохранить настройки файервола
Настройка VPN (pptp) клиента для доступа сервера в интернет.iptables-save > /etc/iptables.conf
При наличии DVD диска или подключения к интернету можно просто дать команду
если нет возможности автоматической установки, то необходимо скачать пакет в папку и запустить установку вручную.apt-get install pptp-linux
Теперь приступим к настройке VPN, для этого идем в папку /etc/ppp/peers и создаем там файл к примеру aistdpkg -i pptp-linux_1.7.0-2ubuntu2_i386.deb
а в нем уже пишемvim /etc/ppp/peers/aist
Теперь перед тем как поднять VPN необходимо прописать маршрутизацию для внутренней сети провайдера, т.к. через VPN к ней доступа нет.mtu 1400 mru 1500 persist maxfail 0 lcp-echo-interval 60 lcp-echo-failure 4 pty "pptp адрес впн сервера провайдера --nolaunchpppd" name логин password пароль remotename PPTP require-mppe-128 defaultroute replacedefaultroute
Редактируем файл /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
после этого все интерфейсы будут перезапущены. VPN подключится автоматически./etc/init.d/networking restart
Если все прошло удачно, то можно проверить командой ifconfig появился ли интерфейс ppp0
!!! Внимание, в этот момент у вас на сервере на настроен NAT и поднять инет, т.е. все юзеры из локалки имеют неограниченый доступ в инет.!!!
Оптключить vpn можно командой poff aist
Подключить — pon aist
Установка freeradius
Редактируем /etc/freeradius/users оставляем только следующие строкиapt-get install freeradius
остальное коментируем или удаляем.DEFAULT Auth-Type = Accept Exec-Program-Wait = "/usr/abills/libexec/rauth.pl"
Далее редактируем /etc/freeradius/acct_users дописываем в конец
Редактируем /etc/freeradius/clients.conf коментируем все, в конец добавляем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"
А также незнаю почему, но у меня при настройке возник такой глюк и пришлось добавить таую строку с адресом на eth0client localhost { secret = radsecret shortname = shortname }
В /etc/freeradius/radiusd.conf комментируем строки mschap и eap в разделе authorizeclient 172.16.102.72 { secret = radsecret shortname = shortname }
Переходим к редактированию файла /etc/freeradius/dictionary добавляем в конецauthorize { preprocess #chap #counter #attr_filter #eap suffix files #etc_smbpasswd #sql #mschap }
После этого перезапускаем радиус# 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
Устанавливаем Radiusclient
Правим файл /etc/radiusclient/radiusclient.conf:apt-get install radiusclient1
Редактируем /etc/radiusclient/serversauthserver 127.0.0.1 acctserver 127.0.0.1
Добавляем в /etc/radiusclient/dictionary127.0.0.1 radsecret
Скачиваем биллинговую систему AbillS распаковываем ееATTRIBUTE 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
Переносим ее в папку /usr/abillstar -xf abills-0.37.tgz
Настройка MySQLmv abills /usr/
Устанавливаем
Далее необходимо создать БД для AbillSapt-get install mysql-server
Теперь дамп БД из каталога с 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-интерфейс админки по адресу вашхост/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 ;)
Кросспост из моего блога