Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается

> Собственно, а зачем оно?

Этот раздел предназначен для публикации различных статей мануалов и руководств по Ubuntu Linux. Иногда просто сталкиваешься с похожими задачами в тех или иных местах, и, как это не печально, когда что-то забыл приходится каждый раз спрашивать Яндекс / Google, поэтому этот подраздел это всего лишь попытка сделать некоторый сборник решений для наиболее часто возникающих задач, чтобы впоследствие можно было обращаться сюда.

 
Ответить в эту темуОткрыть новую тему
> Установка и настройка VPN сервера с биллинговой системой
Decker
сообщение 21.10.2009, 20:09
Сообщение #1


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



Установка и настройка VPN сервера с биллинговой системой

© http://freec.info/?p=192

Наверно всем известно, что ситуация с ценами на интернет в Москве и по России разительно отличается.
Для сравнения в Тольятти (Самарская область) безлимитный доступ на скорости 512кбит/с на месяц обходится в сумму 2300р.
В столице за эту же сумму можно наверно взять уже 20Мбит.

Так вот, как бы это дико не звучало, но я собираюсь, для уменьшения расходов, делиться этим каналом (512кбит/с) еще с несколькими людьми в локальной домовой сети =)


Провайдер дает доступ к интернету через свой VPN сервер.

Юзеры в локалке имеют доступ ко внутригородским ресурсам бесплатно и без контроля трафика.
Во внешку было решено выпускать их через VPN соединение с сервером в локальной сети.

Система была опробована и работает уже почти полгода, нареканий в работе никаких не поступило, все стабильно.

Конфигурация сервера: Pentium III 1000MHz, SDRAM 512Mb

Для уменьшения нагрузки на серве, было решено не использовать сжатие и шифрование, в связи с этим в клиентах требуется дополнительно снять галочку «требовать шифрование» в настройках VPN в Windows

В этой инструкции было решено собрать весь опыт по установке и настройке.
Изначально писал для себя, но думаю общественности тоже может быть полезно.

Итак приступим к установке VPN сервера с биллингом abills


Установка 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 и создаем там файл к примеру aist

Код
vim /etc/ppp/peers/aist



а в нем уже пишем

Код
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



Теперь перед тем как поднять 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

}



А также незнаю почему, но у меня при настройке возник такой глюк и пришлось добавить таую строку с адресом на eth0

Код
client 172.16.102.72 {

  secret = radsecret

  shortname = shortname

}



В /etc/freeradius/radiusd.conf комментируем строки mschap и eap в разделе authorize

Код
authorize {

  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

Устанавливаем Radiusclient

Код
apt-get install radiusclient1



Правим файл /etc/radiusclient/radiusclient.conf :

Код
authserver      127.0.0.1

acctserver      127.0.0.1



Редактируем /etc/radiusclient/servers

Код
127.0.0.1          radsecret



Добавляем в /etc/radiusclient/dictionary

Код
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


Скачиваем биллинговую систему AbillS распаковываем ее

Код
tar -xf abills-0.37.tgz



Переносим ее в папку /usr/abills

Код
mv abills /usr/


Настройка MySQL

Устанавливаем

Код
apt-get install mysql-server



Далее необходимо создать БД для AbillS

Код
mysql -u root -p

CREATE DATABASE abills;



Теперь дамп БД из каталога с 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

Код
apt-get install libdbi-perl libdbd-mysql-perl libdigest-md4-perl libdigest-sha1-perl libcrypt-des-perl



Перезапускаем apache
/etc/init.d/apache2 restart
Настройка abills

В папке /usr/abills/libexec выполняем cp config.pl.default config.pl , затем редактируем config.pl
Указываем верные реквизиты доступа к БД, также меняем

Код
$conf{MAX_SESSION_TRAFFIC} = 2047;

$conf{periodic_check}='yes';

$conf{ERROR_ALIVE_COUNT} = 10;



Далее редактируем /etc/sudoers добавляем строку

Код
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



Устанавливаем права на чтение и запись вебсервером для файлов веб интерфейса

Код
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

Код
$SNMPWALK = '/usr/bin/snmpwalk';

$GZIP = '/bin/gzip';

$MYSQLDUMP = '/usr/bin/mysqldump';



2.9 Установка pptpd

Код
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 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 6.6.2025, 9:46
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования