![]() |
Здравствуйте, гость ( Вход | Регистрация )
Этот раздел предназначен для публикации различных статей мануалов и руководств по Ubuntu Linux. Иногда просто сталкиваешься с похожими задачами в тех или иных местах, и, как это не печально, когда что-то забыл приходится каждый раз спрашивать Яндекс / Google, поэтому этот подраздел это всего лишь попытка сделать некоторый сборник решений для наиболее часто возникающих задач, чтобы впоследствие можно было обращаться сюда.
![]() ![]() |
![]() |
![]()
Сообщение
#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 -------------------- |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 6.6.2025, 9:46 | |
|