Навигация
Системное Администрирование Решения на открытых кодах Структура сети Компьютерные сети малых предприятий Сеть с централизованным управлением Управление с помощью групповых политик Организация почтового обслуживания Взаимодействие с глобальной сетью Безопасность Виртуализация Парядок настройки и определения неисправностей Средства управления системами Автоматизация установки программного обестичения Решение проблем с компьютером Разное
 
 
Избранное
Pathping. Traceroute на стероидах.
FreeNAS: создаём сетевое хранилище (NAS)
Iperf - утилита для тестирования пропускной способности сети.
Средство против «сетевой слепоты»
Преимущества и недостатки RAID 6
Дисковые массивы RAID
Надежнее, чем RAID 5
Унификация корпоративных коммуникаций
Exchange и SAN: не все так просто
Cisco против Meru
 
 
Решения на открытых кодах » Linux - Установка и настройка VPN сервера с биллинговой системой AbillS на Ubuntu 7.10

Наверно всем известно, что ситуация с ценами на интернет в Москве и по России разительно отличается.
Для сравнения в Тольятти (Самарская область) безлимитный доступ на скорости 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. ]
then
DOWNSPEED=`/usr/bin/awk  '/PPPD-Downstream-Speed-Limit/ {print }'  /var/run/radattr.`
UPSPEED=`/usr/bin/awk  '/PPPD-Upstream-Speed-Limit/ {print }'  /var/run/radattr.`
FILTERS=`/usr/bin/awk  '/Filter-Id/ {print }'  /var/run/radattr.`
#echo $DOWNSPEED
#echo $UPSPEED
#echo $FILTERS
/sbin/tc qdisc del dev  root    > /dev/null
/sbin/tc qdisc del dev  ingress > /dev/null
##### speed server->client
if [ "$UPSPEED" != "0" ] ;
then
/sbin/tc qdisc add dev  root handle 1: htb default 20 r2q 1
/sbin/tc class add dev  parent 1: classid 1:1 htb rate ${UPSPEED}kbit burst 4k
/sbin/tc class add dev  parent 1:1 classid 1:10 htb rate ${UPSPEED}kbit burst 4k prio 1
/sbin/tc class add dev  parent 1:1 classid 1:20 htb rate ${UPSPEED}kbit burst 4k prio 2
/sbin/tc qdisc add dev  parent 1:10 handle 10: sfq perturb 10 quantum 1500
/sbin/tc qdisc add dev  parent 1:20 handle 20: sfq perturb 10 quantum 1500
/sbin/tc filter add dev  parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
/sbin/tc filter add dev  parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
/sbin/tc filter add dev  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  handle ffff: ingress
/sbin/tc filter add dev  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

 Настрока 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 ;)

Источник: GloooM




 
 
 
 
Поиск по сайту
Google Поиск


Яндекс поиск
 
 
Полезное
 
 
 
 
 
systemzone.ru 2014