В данной записке написано как установить биллинг под названием ABillS. Данная биллинговая система предназначена для учета и тарификации следующего трафика: Dialup, VPN, Hotspot, VoIP и IPTV. Система многофункциональна, по средством использования дополнительных модулей можно расширить ее функционал, разумеется модули не бесплатны. Биллинг популярен, им пользуются многие провайдеры и пользователи.
Главная задача установки биллинга - учет трафика пользователей локальной сети, это актуально для сетей где еще платят за трафик.
Установку биллинга разобьем на шаги:
1. Установка зависимостей
2. Установка PPP/PPTP
3. Установка Freeradius2
4. Добавление в автозагрузку демонов и запуск их
5. Закачка Abills 0.55b и распаковка его в папку /usr
6. Создаем недостающие каталоги
7. Настройка FreeRadius2
8. Настройка Radiusclient
9. Генерация сертификата Apache
10. Настройка Apache
11. Отключаем SeLinux
12. Создание БД для AbillS
13. Настройка конфигурационных файлов Abills
14. Настройка pptpd
15. Настройка iptables
16. Настройка Abills
17. Настройка кэширующего DNS сервера
Итак приступим!
1. Установка зависимостей
Подключаем необходимые репозитарии:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
Abills версии 0.55 работает совместно с MySQL 5.6, в репозитариях такой версии СУБД нет. Поэтому первым делом установим в ручную нужную версию, это очень важно, так как с версией MySQL 5.1 у вас возникнет кучу проблем!
# wget http://mirror.yandex.ru/mirrors/ftp.mysql.com/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.13-1.el6.i686.rpm
# wget http://mirror.yandex.ru/mirrors/ftp.mysql.com/Downloads/MySQL-5.6/MySQL-server-5.6.13-1.el6.i686.rpm
# wget http://mirror.yandex.ru/mirrors/ftp.mysql.com/Downloads/MySQL-5.6/MySQL-client-5.6.13-1.el6.i686.rpm
Сперва устанавливаем пакет MySQL-shared-compat, это важно, потому что он содержит новый MySQL-Libs версии 5.6.
# yum install MySQL-shared-compat-5.6.13-1.el6.i686.rpm -y
# yum install MySQL-server-5.6.13-1.el6.i686.rpm -y
# yum install MySQL-client-5.6.13-1.el6.i686.rpm -y
СУБД MySQL 5.6 установлена, теперь установим другие пакеты:
# yum install expat mod_ssl php php-curl php-devel php-gd php-imap perl-Crypt-SSLeay perl-DBI perl-DBD-MySQL perl-Digest-SHA1 php-common ImageMagick-devel perl-Crypt-PasswdMD5.noarch php-intl perl-Digest-MD4 php-idn php-mcrypt libmcrypt gedit net-snmp-utils cronie crontabs -y
2. Установка PPP/PPTP
# rpm -Uvh http://pptpclient.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
# yum install pptpd ppp pptp -y
3. Устанавливаем FreeRadius:
# yum install freeradius freeradius-mysql -y
# wget http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/radiusclient-0.3.2-0.2.el6.rf.i686.rpm
# rpm -ivh radiusclient-0.3.2-0.2.el6.rf.i686.rpm
4. Добавление в автозагрузку демонов и запуск их
# chkconfig --level 35 radiusd on
# chkconfig --level 35 httpd on
# chkconfig --level 35 mysql on
# chkconfig --level 35 pptpd on
# service radiusd start
# service httpd start
# service mysql start
# service pptpd start
5. Закачка Abills 0.55b и распаковка его в папку /usr
Установим Abills в папку "/usr" следующими командами:
# cd /usr
# cvs -d:pserver:anonymous@abills.cvs.sourceforge.net:/cvsroot/abills login
# cvs -z3 -d:pserver:anonymous@abills.cvs.sourceforge.net:/cvsroot/abills checkout -r rel-0-5 abills
Теперь биллинг установлен в папку "/usr/abills/".
Есть альтернативный способ установки:
# wget http://sourceforge.net/projects/abills/files/abills/0.55/abills-0.55_rc1.tgz/download
# tar xvf abills-0.55_rc1.tgz -C /usr/
Теперь осталось настроить его...
6. Создаем недостающие каталоги:
# mkdir /usr/abills/backup
# mkdir /usr/abills/var
# mkdir /usr/abills/var/log
# touch /usr/abills/var/log/abills.log
# mkdir /usr/abills/cgi-bin/admin/nets
# chown -Rf apache /usr/abills/backup
# chown -Rf radiusd /usr/abills/var
# chown -Rf apache /usr/abills/cgi-bin
Далее редактируем файл /etc/sudoers, добавляем строку. По этой команде убиваются vpn туннели.
# nano /etc/sudoers
Добавляем строку (можно в конец файла):
apache ALL=NOPASSWD: /usr/abills/misc/pppd_kill
Сохраняем файл, жмем “CTRL+O” чтобы сохранить внесенные нами изменения, а потом жмем “CTRL”+ ”X” - для выхода из редактора.
7. Настройка FreeRadius
Для настройки Free Radius измените следующие файлы:
№ | Имя файла |
1 | /etc/raddb/radiusd.conf |
2 | /etc/raddb/modules/exec |
3 | /etc/raddb/sites-enabled/default |
4 | /etc/raddb/users |
5 | /etc/raddb/clients.conf |
6 | /etc/raddb/dictionary |
Как видно, нам надо внести не которые изменения в 6-ти файлах, после чего заработает Radius Server.
Приступим редактированию этих 6-ти файлов.
Откроем и отредактируем первый файл /etc/raddb/radiusd.conf
# cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.original
# gedit /etc/raddb/radiusd.conf
Найдите секцию “modules” , вставим в нее следующий текст, не удаляя содержимое этой секции.
Строка 659: вставляем следующий текст:
#abills_preauth exec abills_preauth { program = "/usr/abills/libexec/rauth.pl pre_auth" wait = yes input_pairs = request shell_escape = yes #output = no output_pairs = config } #abills_postauth exec abills_postauth { program = "/usr/abills/libexec/rauth.pl post_auth" wait = yes input_pairs = request shell_escape = yes #output = no output_pairs = config } #abills_auth exec abills_auth { program = "/usr/abills/libexec/rauth.pl" wait = yes input_pairs = request shell_escape = yes output = no output_pairs = reply } #abills_acc exec abills_acc { program = "/usr/abills/libexec/racct.pl" wait = yes input_pairs = request shell_escape = yes output = no output_pairs = reply }
Отредактируем второй файл /etc/raddb/modules/exec
# cp /etc/raddb/modules/exec /etc/raddb/modules/exec.original
# gedit /etc/raddb/modules/exec
В нем найдем секцию “exec” и приведем ее к следующему виду:
Строка 24:Удалем ее содержимое и вставляем свой конфиг
exec { wait = yes input_pairs = request shell_escape = yes output = none output_pairs = reply }
Правим третий файл /etc/raddb/sites-enabled/default
# cp /etc/raddb/sites-enabled/default /etc/raddb/sites-enabled/default.original
# gedit /etc/raddb/sites-enabled/default
Найдите секции “authorize”,” preacct”, “post-auth”.
Удалите или закомментируйте содержимое этих секции.
Строка 69:Удалем содержимое секции “authorize” и вставляем следующий текст:
authorize { preprocess abills_preauth mschap files abills_auth }
Строка 185:Удаляем содержимое секции “preacct” и вставляем следующее содержимое:
preacct { preprocess abills_acc }
Строка 276:Удалем внутренность этой секции и вставляем следующее:
post-auth { Post-Auth-Type REJECT { abills_postauth } }
Отредактируйте файл /etc/raddb/users
# cp /etc/raddb/users /etc/raddb/users.original
# gedit /etc/raddb/users
Добавьте строчку в конец файла:
DEFAULT Auth-Type = Accept
Редактируем /etc/raddb/clients.conf
# cp /etc/raddb/clients.conf /etc/raddb/clients.conf.original
# gedit /etc/raddb/clients.conf
Закомментируем все, в конец добавляем (клиент/сервер на локальной машине, если будут на разных кодовое слово лучше поменять):
client localhost { ipaddr = 127.0.0.1 secret = radsecret shortname = shortname }
Переходим к редактированию файла /etc/raddb/dictionary
# cp /etc/raddb/dictionary /etc/raddb/dictionary.original
# gedit /etc/raddb/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
После этого перезапускаем Radius:
# service radiusd restart
Если при запуске сервиса radiusd вы видите ошибки, выявить откуда растут корни этой ошибки можно с помощью команды radiusd -X , она выдает лог. Если сервис стартанул нормально, но вы все равно хотите видеть лог, вам надо остановить демон радиуса командой service radiusd stop, а потом уже вводить команду radiusd -X
8. Настройка Radiusclient
Редактируем /etc/radiusclient/servers
# cp /etc/radiusclient/servers /etc/radiusclient/servers.original
# gedit /etc/radiusclient/servers
В конец добавляем строчку:
127.0.0.1 radsecret
Скачиваем файл dictionary.microsoft отсюда http://cakebilling.googlecode.com/files/etc.tar.bz2
# cd /tmp
# wget –P /tmp http://cakebilling.googlecode.com/files/etc.tar.bz2
# tar xvjf etc.tar.bz2
Скаченный dictionary.microsoft кладем в /etc/radiusclient/
Файл dictionary.microsoft отвечают за поддержку mschap v2 и mppe
# cp etc/radiusclient/dictionary.microsoft /etc/radiusclient/
Открываем /etc/radiusclient/dictionary
# cp /etc/radiusclient/dictionary /etc/radiusclient/dictionary.original
# gedit /etc/radiusclient/dictionary
Добавляем строки:
INCLUDE /etc/radiusclient/dictionary.microsoft INCLUDE /etc/radiusclient/dictionary.merit # 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
9. Генерация сертификата для Apache
Создадим ключи SSL для Apache.
Для генерации приватного ключа, выполним команду в терминале:
# openssl genrsa -out server.key 1024
Генерация запроса на сертификат CSR:
# openssl req -new -key server.key -out server.csr
Генерация самоподписанного ключа:
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Перемещение полученных файлов в правильные места (папка /usr/abills/Certs):
# mkdir /usr/abills/Certs/
# mv server.* /usr/abills/Certs/
Затем нам нужно обновить конфигурационный файл Apache SSL.
Откройте файл /etc/httpd/conf.d/ssl.conf
# gedit /etc/httpd/conf.d/ssl.conf
Измените, путь до места, где хранится файл ключа. Если вы воспользовались способом, описанным выше, то он будет:
Строка 105:Меняем ее на следующее
SSLCertificateFile /usr/abills/Certs/server.crt
Затем установите правильный путь к файлу сертификата. Если вы следовали инструкциям которые описаны выше то он будет таким:
Строка 112:Меняем ее на следующее
SSLCertificateKeyFile /usr/abills/Certs/server.key
Сохраните файл и перезагрузите Apache.
# service httpd restart
10. Настройка Apache
В конец файла /etc/httpd/conf/httpd.conf добавляем текст:
#Abills version 0.5 Listen 9443 <VirtualHost localhost:9443> DocumentRoot "/usr/abills/cgi-bin" #ServerName www.example.com:9443 #ServerAdmin admin@example.com ErrorLog /var/log/httpd/abills-error.log #TransferLog /var/log/httpd/abills-access.log CustomLog /var/log/httpd/abills-access_log common <IfModule ssl_module> # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/abills/Certs/server.crt SSLCertificateKeyFile /usr/abills/Certs/server.key <FilesMatch "\.(cgi)$"> SSLOptions +StdEnvVars </FilesMatch> BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog /var/log/abills-ssl_request.log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </IfModule> # User interface <Directory "/usr/abills/cgi-bin"> <IfModule ssl_module> SSLOptions +StdEnvVars </IfModule> <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 Order allow,deny Allow from all <Files ~ "\.(db|log)$"> Order allow,deny Deny from all </Files> #For hotspot solution #ErrorDocument 404 "/abills/" #directoryIndex "/abills" index.cgi </Directory> #Admin interface <Directory "/usr/abills/cgi-bin/admin"> <IfModule ssl_module> SSLOptions +StdEnvVars </IfModule> AddHandler cgi-script .cgi Options Indexes ExecCGI FollowSymLinks AllowOverride none DirectoryIndex index.cgi order deny,allow allow from all </Directory> </VirtualHost>
Смотрим кодировку здесь /etc/httpd/conf/httpd.conf
Строка 759:Меняем ее на следующую
AddDefaultCharset UTF-8
Перезапускаем apache
# service httpd restart
11. Отключаем SE LINUX
Чтобы отключить “SELINUX” отредактируйте файл /etc/selinux/config
# gedit /etc/selinux/config
Строка 7:Меняем “SELINUX=permissive” на “SELINUX=disabled”
SELINUX=disabled
Также отключите встроенную цепочку Iptables:
# setup
Далее в окошке выбираем -> FireWall Configuration -> Firewall Enabled -> Убрать звездочку
12. Создание БД для AbillS
Задаем пароль на доступ в MySQL:
# /etc/init.d/mysql stop
# /usr/bin/mysqld_safe --skip-grant-tables &
# mysql
mysql> use mysql;
mysql> update user set password=PASSWORD("password") where user='root';
mysql> flush privileges;
mysql> quit
Запускаем MySQL:
# /etc/init.d/mysql restart
# mysql -u root -p
Создаем базу и разрешаем пользователю abills@localhost доступ к БД:
> SET PASSWORD = PASSWORD('password'); > GRANT ALL ON abills.* TO abills@localhost IDENTIFIED BY "yourpassword";
> CREATE DATABASE abills; > quit
Теперь дамп БД из каталога с abills нужно занести в БД
# cd /usr/abills/db
# mysql -u root -p abills < abills.sql
13. Настройка конфигурационных файлов Abills
В папке /usr/abills/libexec выполняем
# cd /usr/abills/libexec
# cp config.pl.default config.pl
Затем редактируем config.pl
# gedit /usr/abills/libexec/config.pl
Указываем верные реквизиты доступа к БД, также меняем некоторые параметры:
$conf{dbhost}='localhost'; $conf{dbname}='abills'; $conf{dbuser}='abills'; $conf{dbpasswd}='yourpassword'; $conf{dbcharset}=''; $conf{default_language}='russian'; $conf{secretkey}="test12345678901234567890"; #$$conf{periodic_check}='yes'; #$conf{ERROR_ALIVE_COUNT} = 10; #$conf{RADIUS2}=1; #$conf{MAX_SESSION_TRAFFIC} = 2047; #без этой строчки должник отключается на второй минуте, с этим параметром сразу происходит отключение. Но при выкачке 2Гб связь будет рватся.
Отключаем лишние модули:
@MODULES = ('Dv', # 'Voip', # 'Docs', # 'Mail', 'Sqlcmd');
Правим конф /usr/abills/Abills/defs.conf
Меняем только приведенные ниже строки
$SNMPWALK = '/usr/bin/snmpwalk'; $SNMPSET = '/usr/bin/snmpset'; $GZIP = '/usr/bin/gzip'; $TAR='/bin/tar'; $MYSQLDUMP = '/usr/bin/mysqldump'; $IFCONFIG='/sbin/ifconfig'; $PING='/bin/ping'; $SUDO='/usr/bin/sudo';
Проверяем работу сервера, заходим по адресу:
https://127.0.0.1:9443/admin/
Обязательно вводите ip адрес, если ввести "https://localhost:9443/admin" будут проблемы в виде SQL Error во время создания учетной записи!
Вводим логин/пароль: abills/abills
И видим после вот это:
Если вдруг у вас появятся ошибки, смотрите логи.
Местонахождение логов:
Abills:
/var/log/httpd
PPTPD:
/var/log/messages
Radius:
/var/log/radius
14. Настройка pptpd
Откроем и отредактируем файл /etc/pptpd.conf
# gedit /etc/pptpd.conf
Добавляем строчку в файл:
ppp /usr/sbin/pppd
option /etc/ppp/pptpd-options
connections 500
localip 192.168.160.1
remoteip 192.168.160.1-254
Отроем и отредактируем файл /etc/ppp/options
# gedit /etc/ppp/options
Добавляем строку в файл:
+mschap-v2
Откроем и отредактируем файл /etc/ppp/options.pptpd
# gedit /etc/ppp/options.pptpd
Добавляем строки:
ms-dns 192.168.160.1 # или любой удобный для вас днс сервер asyncmap 0 lcp-echo-failure 30 lcp-echo-interval 5 ipcp-accept-local ipcp-accept-remote plugin radius.so plugin radattr.so
По умолчанию конфиг настроен на авторизацию mschap-v2+mppe.
Пишем скрипт шейпера и даем права запуска.
# mkdir /etc/ppp/ip-up.d/
# touch /etc/ppp/ip-up.d/shaper
# chmod 744 /etc/ppp/ip-up.d/shaper
# nano /etc/ppp/ip-up.d/shaper
Вставляем текст:
#!/bin/sh 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` # echo $DOWNSPEED # echo $UPSPEED > /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 qdisc add dev $1 root handle 1: htb default 20 /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 0x100xff flowid 1:10 /sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol1 0xff flowid 1:10 /sbin/tc filter add dev $1 parent 1: protocol ip prio 10 u32 match ip protocol6 0xff match u8 0x05 0x0f at 0 match u160x0000 0xffc0 at 2 match u8 0x10 0xffat 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
15. Настройка iptables
Сетевая защита сервера важный этап настройки. Здесь я приведу очень короткий конфиг сетевого экрана. Допустим, наш сервер имеет две сетевые карты, один адаптер подключен к поставщику услуг Интернета, подключение по кабелю “Ethernet”. Важный момент, выход в Интернет имеют только пользователи VPN сети с адресом 192.168.160.0/24.
Для настройки iptables и NAT, потребуется создать файл правил iptables:
# gedit /etc/sysconfig/firewall.sh
Далее в этот файл вставьте следующий текст:
Правила iptables для Abills
# chkconfig: 345 30 99
# description: Starts and stops iptables based firewall# Очистка всех цепочек iptables
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Политика по умолчанию, запретить все что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP # Разрешаем обращение к lo интерфейсу
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT # Разрешаем обращение к внутреннему интерфейсу eth1
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT # Пропускать уже инициорванные, а также их дочерние
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Пропускать новые, иницированные, а также их дочерние
iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Разрешить форвардинг для новых, иницированных, а также их дочерних
iptables -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Разрешаем DNS запросы с виртуальной сети по протоколу UDP и TCP до нашего сервера
iptables -A INPUT -i ppp+ -s 192.168.160.0/24 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o ppp+ -d 192.168.160.0/24 -p udp --sport 53 -j ACCEPT iptables -A INPUT -i ppp+ -s 192.168.160.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -o ppp+ -d 192.168.160.0/24 -p tcp --sport 53 -j ACCEPTiptables -A OUTPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPTiptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPTiptables -A FORWARD -p udp -m udp --dport 53 -m state --state NEW -j ACCEPTiptables -A OUTPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT iptables -A FORWARD -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
# Настройка NAT, подсеть 192.168.160.0/255.255.255.0 - у нас виртуальная
# Выход в Интернет имеет только виртуальная подсети 192.168.160.0/24
iptables -t nat -A POSTROUTING -s 192.168.160.0/24 -j MASQUERADE
Где:
192.168.160.0/255.255.255.0 - виртуальная подсеть
ppp+ - это любой ppp интерфейс, обычно создаются ppp0 или ppp1
Сделаем наш скрипт исполняемым:
# chmod 750 /etc/sysconfig/firewall.sh
Добавим его в автозагрузку, для этого откроем файл:
# gedit /etc/rc.d/rc.local
И впишем в него строчку (в конец файла):
/etc/sysconfig/firewall.sh
Включим форвардинг /etc/sysctl.conf:
Строка 7: Поменять значение на 1
net.ipv4.ip_forward = 1
Перезагружаем сервер
# shutdown –r now
Настройка планировщика Cron
Откроем файл:
# gedit /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 #backup 1 3 * * * root /usr/abills/libexec/periodic backup
16. Настройка Abills
Настройка самой системы состоит из следующей последовательности:
- Создание NAS сервера доступа
- Создание группы тарифов
- Создание тарифного плана, привязка его к тарифной группе и определение его настроек
- Заведение учетных записей пользователей
- Тестирование и работа с системой.
Обязательно следуйте той последовательности которая выше. В противном случае пользователь не сможет законектится (ошибка 691 или "Неверный пароль") , при этом в логах будет пусто :)
И так приступим к настройке.
Создание NAS сервера доступа
Открываем web-интерфейс админки по адресу https://127.0.0.1:9443/admin/
Логин: abills
Пароль: abills
Их можно будет потом сменить.
По умолчанию сервер доступа NAS и тариф уже созданы. Мы изменим их под свои условия.
Заходим в меню:
Система->Сервер доступа
Как на картинке снизу.
Удалим существующий NAS, и создадим свой. Для удаления щелкним крестик в правой части который обведен красной линией.
Теперь создадим свой NAS, для этого щелкним зеленный крестик как на картинке внизу:
Заполним некоторые поля:
Название | My NAS server |
IP адрес вбиваем: | 127.0.0.1 |
Выбираем тип pppd: | pppd + Radius plugin (Linux) |
Alive (sec.): | 120 |
RADIUS Parameters (,): | Acct-Interim-Interval=120 |
Alive (sec) или Radius Parameters (,) должны быть одинаковыми по значению.
По окончанию ввода, нажмите кнопку Добавить
Теперь нам нужно добавить IP pool для нашего нового NAS. Для этого мы должны щелкнуть IP Pools как на картинке.
Удаляем здесь уже созданный IP Pool, создадим свой.
Значения берите из таблицы снизу:
Название | My first IP pool |
First IP | 192.168.160.2 |
Количество | 253 |
MASK | 24 |
Жмем кнопочку “Добавить”
Жмем кнопочку “Установить”
Создание группы тарифов
Заводим группы тарифов:
Система -> Internet -> Тарифные планы -> Группы
Добавим группу под именем “Manageri”:
GID: | 0 |
Название: | Manageri |
По окончанию редактирования нажмите на кнопке “Добавить”.
Создание тарифного плана и определение его настроек
Создадим тарифный план, в нем мы можем четко определить квоты на Интернет трафик, а также установить скорости. Для примера установим квоту в размере 1 000 мбайт на входящий трафик, так как в большинстве случаев учитывается именно он.
Для этого идем в меню:
Система -> Internet -> Тарифные планы
Добавим тарифный план:
#: | 1 |
Название: | 1000Mb |
Группа: | «1:Gruppa100mb» |
Дневная а/п: | 10 |
Лимиты трафика (мб), поле МЕСЯЦ | 1000 |
По окончанию ввода нажмите кнопку “Добавить”, расположенную внизу окна.
Теперь можно определить скорости, для этого надо щелкнуть значок под названием “Интервалы” в строке нашего тарифного плана.
Появится вот такое окно:
Здесь надо нажать кнопку “Добавить”, тем самым мы добавили Интервал в наш тарифный план.
После этого появится окошко, где надо щелкнут значок “Трафик”. На картинке внизу он обведен красной линией.
Вписываем цену за мегабайт и скорости, по окончанию нажимаем по кнопке “Добавить”.
Заведение учетных записей пользователей
Теперь заводим пользователя, для этого идем в меню:
Клиенты -> Логины -> Internet -> Пользователи Добавить ->
Создаем клиентскую учетную запись, вводим:
логин | vasya или ludmila |
ФИО | Вася или Людмилка |
Пароль | Qwerty123 |
Кредит | 1000 |
Сумма | 1000 |
Логин вводим маленькими буквами.
Если требуется убрать шифрование, делаем так:
Убираем строчку "require-mppe-128" в файле /etc/ppp/options.pptpd . Это даст большую стабильность VPN туннелей и разгрузит ЦПУ.
Тестирование и работа с системой
Заведите учетную запись в системе, например - vasya, пароль - 123456
Закиньте ему на счет не которую сумму...
На клиентском компьютере:
Создайте новое подключение с параметрами -
- Введите IP адрес VPN сервера локальной сети
- Шифрование: Не обязательное (Подключится даже если нет шифрования)
- Протоколы: MS CHAP v2
- Тип VPN: PPTP VPN
____
17. Настройка кэширующего DNS сервера
Запускаем Terminal (консоль/черный экран) который находится в меню: Applications -> Accessories -> Terminal. Если у вас сервер без графического окружения, то можете вводить команды сразу в консоль.
Вводим следующие команды:
# yum install bind -y
Отредактируем конфигурационный файл пакета BIND (службы named):
# gedit /etc/named.conf
В нем надо вставить адрес нашей локальной подсети и IP адрес виртуального сетевого интерфейса ppp0, для этого надо поменять четыре строчки:
listen-on { 127.0.0.1; 192.168.160.1; }; # IP адрес вирт. интерфейса ppp0 allow-query { localhost; 192.168.160.0/24 ;}; # Адрес вирт. сети allow-recursion { localhost; 192.168.160.0/24 ;}; allow-query-cache { localhost; 192.168.160.0/24 ;};
Сохраняем файлик.
Правильность настройки можно проверить банальным запуском службы “named”, чем мы и займемся. В консоли введите следующие команды:
# service named start
После ввода команды старта демона “named” (службы/сервиса), должна появится строчка похожая на следующею:
Starting named: [ OK ]
Это говорит нам что служба “named” запустилась нормально, значить наши изменения внесенные в конфигурационный файл сделаны правильно.
Теперь добавим службу” named” в автозагрузку:
# chkconfig --level 35 named on
__________________________________________________________________
Рабочие конфиги тут - http://download.files.namba.kz/files/3074328
FAQ Abills - http://abills.net.ua/wiki/doku.php/abills:docs:faq:ru
Ручное отключение юзеров от Интернета, скрипт:
/usr/abills/libexec/billd -all
__________________________________________________________________
Другие биллинги:
1. Cake Billing http://yvision.kz/yv/180495
2. NetAMS http://yvision.kz/yv/183280 и http://yvision.kz/yv/180494
3. Stargazer - http://yvision.kz/yv/180500
4. ibs NG - http://yvision.kz/yv/180991
5. Netup UTM5 - http://yvision.kz/yv/180489
6. TraffPro free - http://yvision.kz/yv/180488