Решил поставить абиллс, т.к.:
-бесплатна
-есть нормальное четкое описание(+/-)
-еще много других прибамбасов
Живем студентами в небольшой квартире оформили интернет, но всвязи с препирательствами, понадобилась система учета , хотя с другой стороны я рад, хоть что то новое узнал....
Ставлю его уже недели 4 и за это время нашел самые более менее вменяемые описания:
С вашего позволения, и с вашей помощью, прошу написать(в написании) мануал по установке с нуля так сказать...
Код: Выделить всё
Характиристики всей системы:
около 40 человек +/- 10 еще(возможно в сентябре еще люди приедут, не знаю(новый учебный год скоро ведь :) ))
2 сетевухи, одна смотрит на хаб, вторая на вафлю, на обе идет интернет, все юзвери сидят на хабе, небольшая такая сеть из 7-ми хабов
ип компа-сервера 10,6,10,183 (rl0)
подсеть 10,6,10,*
ип вафли 10,66,33,6 (dl0)
процессор 1,4 Ггц х86
512М памяти
40 ГБайт винчестер
Гора энтузиазма
Прямые, но не обработанные руки
На данный момент нужно чтоб юзвери соединялись постредством VPN(как показало дальше исследования, за это отвечают PPPOE, MPD(только какой, так и не понял), PPTP, MPPE, MS CHAP), возможность применения тарифов по времени и безлимиту...
процитирую лучше:
Возможность создания помегабайтных тарифных планов и безлимитов(с)
Я ставил все вышеназначенным способом, либо не работало вообще, либо работало, но через пень колоду, либо вроде как все запускалось(еррор логи были пустые), но проц был не вменяем, до такой степени, что страничка админки открывалась процентов на 40 и все, система висла...
Имеется freebsd 7.2(отдельная история как я начал ее установку...сам иногда ржу теперь)
Я ставил все вышеназначенным способом, либо не работало вообще, либо работало, но через пень колоду, либо вроде как все запускалось, но проц был не вменяем.
после долгих раздумий выбрал в качестве "основного" (http://www.openkazan.info), с учетом всех остальных мануалов...
1. ставим ось:
по редомендациям автора было выбрано:
swap 512M
/ 512M
/tmp 1G
/var 10G
/usr 10G
/home остальное
ось ставил по этому мануалу:
с изменением только в пунктах как ставить ядро, было выбрано еще
Developer
Kern-Developer
User
custom/src/sys
ну и ессно, ип-адреса на машине...
поставить, поставили...начал ядро компилить:
что из этого надо ставить в ядро:
это все прописал в конец файла GATE-GENERIC
Код: Выделить всё
# cd /usr/src/sys/i386/conf
# cp GENERIC GATE-GENERIC
# ee GATE-GENERIC
#не долго думая воткнул все в ядро, надеюсь поможете разобраться....#------------------------------------------------
options NETGRAPH #подключаем NETGRAPH в ядро
options NETGRAPH_IPFW #узел ng_ipfw
options LIBALIAS # нужен для работы ng_nat
options NETGRAPH_NAT #узел ng_nat
options NETGRAPH_NETFLOW #узел ng_netflow для сбора статистики
### Требуется для работы MPD ###
options NETGRAPH_SPLIT
options NETGRAPH_KSOCKET
options NETGRAPH_SOCKET
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_TCPMSS
options NETGRAPH_VJC
options NETGRAPH_TEE
options NETGRAPH_CAR
### --- ###
options IPFIREWALL #ipfw. Куда же без него
options IPFIREWALL_VERBOSE # Поможет в отладке
options IPFIREWALL_FORWARD # Пригодится к примеру для transparent-proxy
options IPFIREWALL_DEFAULT_TO_ACCEPT #Дело привычки
# For Abills
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options NETGRAPH
options NETGRAPH_PPPOE
options IPFILTER
options IPFILTER_LOG
options IPDIVERT
Код: Выделить всё
# /usr/sbin/config GATE-SMP
# cd ../compile/GATE-SMP
# make cleandepend && make depend && make && make install
(все операции выполнялись примерно часа полтора)
перезагрузились...
пишу в rc.conf
Код: Выделить всё
gateway_enable="YES" # без комментариев :)
firewall_enable="YES" # включаем ipfw
firewall_script="/usr/scripts/ipfw_load.sh" #файл с правилами
с текстом:
#!/bin/sh
fwcmd="/sbin/ipfw"
ngctl="/usr/sbin/ngctl"
ext_if="re0" # имя внешнего интерфейса
ext_ip="1.2.3.4" #внешний IP в который будут NAT'ится пользователи
#Создаем узел ng_nat
${ngctl} mkpeer ipfw: nat 60 out
${ngctl} name ipfw:60 nat
${ngctl} connect ipfw: nat: 61 in
${ngctl} msg nat: setaliasaddr ${ext_ip}
# Правила фаерволла
${fwcmd} -f flush #сбрасываем все правила фаерволла
# Создаем табличку для ната (номер 127)
${fwcmd} table 127 flush #чистим табличку
${fwcmd} table 127 add 10.39.0.0/16 # добавляем сети серых ip пользователей
#разрешаем все на loopback
${fwcmd} add 00001 allow ip from any to any via lo0
# все что пришло с внешнего интерфейса заворачиваем в NAT
${fwcmd} add 00003 netgraph 61 all from any to ${ext_ip} in via ${ext_if}
#Все что идет от Интернет-юзеров - в NAT
${fwcmd} add 60021 netgraph 60 all from "table(127)" to any
ставлю screen wget portupgrade
пошла работа в putty:)
сначала скачал сам abills
Код: Выделить всё
# cd /root/ishodniki/src/abills (отсебятина)
# 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-4 abills
и нигде не говориться даже на форуме пусто...
поэтому ввел вторую, вроде скачалось...(папка abills оказалась в той директории по крайней мере...)
1.1 можно вопрос в сторону?
"Несмотря на то, что любой человек в здравом уме и трезвой памяти для такой серьезной системы как биллинг выберет stable-ветку, я настоятельно не рекомендую делать это. Дело в том, что в понимании автора stable является "относительно стабильным релизом" и даже обнаруженные в нем ошибки исправляются в current а не stable. На личном опыте скажу, что в течении 1.5 лет использовал в работе ветку current без особых проблем."(с) на сколько это правда? в том смысле что на данный момент стоит качать?
скачали...
2. ставим freeradius
Код: Выделить всё
# cd /usr/ports/net/freeradius
# make && make install
[X] SNMP With SNMP support
[X] EXPERIMENTAL Build experimental modules
поставилось,
#mc
из abills/misc/freeradius скопировал в /usr/local/etc/raddb
файлы:
acct_users, clients.conf, eap.conf, radiusd.conf (есть еще rlm_perl.conf) тут:http://www.openkazan.info/ABillS__install_and_setup советовали его переименовать в radiusd.conf и кинуть тудаже
в clients.conf прописал:
в /usr/local/etc/raddb dictionary прописал:client 127.0.0.1 {
secret = radist04kA
shortname = localhost
}
#radiusd -XVENDOR mpd 12341
ATTRIBUTE mpd-rule 1 string mpd
ATTRIBUTE mpd-pipe 2 string mpd
ATTRIBUTE mpd-queue 3 string mpd
ATTRIBUTE mpd-table 4 string mpd
ATTRIBUTE mpd-table-static 5 string mpd
ATTRIBUTE mpd-filter 6 string mpd
ATTRIBUTE mpd-limit 7 string mpd
ATTRIBUTE mpd-drop-user 154 integer mpd
тут же посыпались ошибки(warning)....исправил путем вставки не пробела а tab и убиранием пробела вконце строчки
VENDOR[tab]mpd[tab]12341
ATTRIBUTE[tab]mpd-rule[tab]1[tab]string[tab]mpd
запустилось, ни ерроров ни варнингов
прописал
Код: Выделить всё
radiusd_enable="YES"
3. мускул... первые попытки установки мускуля по http://abills.net.ua/wiki/doku.php/abil ... stall_1:ru привели к краху...что то сделал а что хз, не смог исправить, пришлось заново ставить ось....
потом как то залез в конфиг abills увидел там строку if $mysql_version = 5.1
решил поставить не 1,4 а 5,1 но из-за чего то она не захотела ставиться, поставил 5,0
установил mysql-server-5.0
# cd /usr/ports/databases/mysql-client-50
#make && make install
# cd /usr/ports/databases/mysql-server-50
#make && make install
# cd /usr/ports/databases/mysql-script-50
#make && make install
установил заодно mysql-script-5.0(держу IRC бота на вин, пришла идея поставить его на фрю...ему по идее там будет роднее)
!заодно вопрос, а можно ли? eggdrop называется....
создал pre_abills.sql в папке /root/ishodniki/src/
Код: Выделить всё
# cd /root/ishodniki/src/
ee pre_abills.sql
use mysql;
INSERT INTO user (Host, User, Password) VALUES ('localhost','abills',password('sqlpassword'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Index_priv, Alter_priv) VALUES ('localhost', 'abills', 'abills', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
CREATE DATABASE abills;
(есдинственно, как оказалось, при работе с putty она коряво копирует некоторые знаки, точнее " и ' поэтому(раза с 5-го) дошло... ввел все вручную)
Код: Выделить всё
#mysql -u root -p < ./pre_abills.sql
Код: Выделить всё
#mysqladmin flush-privileges
Код: Выделить всё
# mysql -D abills < abills.sql
# mysql -D abills < db/Ipn.sql
4. апачmysql_enable="YES"
4.1 папку asills скопировал в /usr/
Код: Выделить всё
# cd /usr/ports/www/apache22
# make && make install
поэтому нашел его как включить в httpd.conf
(он уже был включен)loadmodule /путь/mod_rewrite.so
установил openssl для генерации сертификата
прописал в конец файла
httpd.conf
в rc.conf прописал<VirtualHost _default_:3333>
SSLEngine on
SSLOptions +StrictRequire
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
SSLCertificateFile /usr/abills/Certs/server.crt
SSLCertificateKeyFile /usr/abills/Certs/server.key
SSLVerifyClient none
SSLProxyEngine off
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
DocumentRoot /usr/abills/cgi-bin
ServerName unknown
#ServerAlias com
ServerAdmin <a href="mailto:xz@xz.com">xz@xz.com</a>
ErrorLog /var/log/error_log
TransferLog /var/log/access_log
Alias / "/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
Order allow,deny
Allow from all
<Files>
Order allow,deny
Deny from all
</Files>
</Directory>
</VirualHost>
<VirtualHost _default_:8866>
#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>
дал права на чтение апачуapache22_enable="YES"
Код: Выделить всё
# chown -Rf www /usr/abills/cgi-bin
# chown -Rf www /usr/abills/Abills/templates
# chown -Rf www /usr/abills/backup
первые разы выпадала ошибка отсутствия...
невнимательно писал просто пути...пару лишних букв написал....
при помощи sslcerts.sh создал сертификаты для apache
Код: Выделить всё
# ./sslcerts.sh apache
(нашел на опеннете как исправить ошибку, точнее обновить ...потом отпишусь как получилось)
а пока закоментировал все:
начало выдавать ошибку#SSLEngine on
#SSLOptions +StrictRequire
#SSLProtocol -all +TLSv1 +SSLv3
#SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
#SSLCertificateFile /usr/abills/Certs/server.crt
#SSLCertificateKeyFile /usr/abills/Certs/server.key
#SSLVerifyClient none
#SSLProxyEngine off
#SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
Error: Unable connect to server 'localhost:abills' в браузере
и писало в error_log апача:
при этом еслли вводишь просто его ип[Wed Aug 12 20:06:41 2009] [error] [client 10.6.10.188] DBI connect('database=abills;host=localhost','abills',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at ../Abills/mysql//main.pm line 70
[Wed Aug 12 20:06:41 2009] [error] [client 10.6.10.188] Can't call method "prepare" on an undefined value at ../../Abills/mysql//main.pm line 153.
выводит it's work!
еще возник вопрос, а openssl надо загружать в rc.conf ?
5. модули:
пооставил все какие были указаны во всех мануалах:
поставил, перезагрузился(надо или нет, я для профилактики)DBI (/usr/ports/databases/p5-DBI)
DBD-mysql (/usr/ports/databases/p5-DBD-mysqlxxx)xxx- версия сервера mysql которого вы ставили) В моем случае p5-DBD-mysql41
Digest-MD5 для Chap авторизации (/usr/ports/security/p5-Digest-MD5)
Digest-MD4 для MS-Chap авторизации (/usr/ports/security/p5-Digest-MD4)
Crypt-DES для MS-Chap авторизации (/usr/ports/security/p5-Crypt-DES)
Digest-SHA1 для MS-ChapV2 авторизации (/usr/ports/security/p5-Digest-SHA1)
libnet Нужен только при авторизации из UNIX passwd (/usr/ports/net/libnet)
Time-HiRes Нужен только для тестирования скорости выполнения авторизациИ, аккаунтинга, и страниц веб-интерфейса (/usr/ports/devel/p5-Time-HiRes)
flow-tools (набор утилит для сбора netflow-потоков)
6. собственно сам abills
Код: Выделить всё
#cd /usr/abills
в конфиге мпд написал
в rc.confstartup:
#задаем пользователей админки MPD
set user xanf somepass admin
# По этому порту будет доступна консоль MPD
# она нужна ABillS для завершения сессии
set console self 127.0.0.1 5005
set console open
# Веб-сервер. Полезен админу поэтому открыт наружу
set web self 0.0.0.0 5006
set web open
#IP адрес и порт системы, которая собирает netflow поток
set netflow peer 127.0.0.1 9996
set netflow self 127.0.0.1 9990
set netflow timeouts 15 15
set netflow hook 9000
default:
load pptp_server
pptp_server:
#чисто косметически. IP принудительно выдает RADIUS
set ippool add pool1 10.39.0.1 10.39.255.255
create bundle template B
set iface idle 1800
#"Исправляем" реализацию TCP/IP Microsoft
set iface enable tcpmssfix
#На интерфейсах собирается статистика трафика
set iface enable netflow-in
set iface enable netflow-out
set ipcp yes vjcomp
#VPN Server IP
#он будет светится в подключении со стороны пользователя
#как "удаленный сервер". Почти ни на что не влияет
#в то же время если не хотите доставить проблем *nix-юзерам
#сделайте его отличным от IP адреса самого VPN сервера
set ipcp ranges 172.16.0.1/32 ippool pool1
set ipcp dns 172.16.0.1
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless
set bundle yes crypt-reqd
create link template L pptp
set link action bundle B
set link enable multilink
set link yes acfcomp protocomp
set link no pap chap
set link enable chap
set link yes crypt-reqd
set link mtu 1460
#здесь задаем локальный IP на котором MPD будет
#ждать соединений
set pptp self 10.66.1.183
set link enable incoming
#IP, пароль и порты RADIUS-сервера
set radius server 127.0.0.1 radist04kA 1812 1813
set radius timeout 10
set auth acct-update 300
set auth enable radius-auth
set auth enable radius-acct
set radius retries 3
по мануалу настроил Netflow коллекторmpd_enable="YES"
Код: Выделить всё
# ln -s /usr/abills/Abills/modules/Ipn/trafdstats trafdstats
# ln -s /usr/abills/Abills/modules/Ipn/traffic2sql traffic2sql
прописал на нее права:
Код: Выделить всё
#chown flowtools /usr/local/abills/var/log/ipn/
flow_capture_enable="YES"
flow_capture_datadir="/usr/local/abills/var/log/ipn/"
flow_capture_port="9996"
flow_capture_flags="-S 5 -n 1300 -N 0 -d 5"
переделал config.pl
что где нашел переменые указанные в мануале, изменил@MODULES = ('Dv',
'Abon',
# 'Docs',
'Sqlcmd',
'Ipn',
# 'Cards');
);
немного не понял суть тарификации, но это со временем....$conf{default_language}='russian'; #большинство по-русски
$conf{default_charset}='windows-1251';
$conf{periodic_check}='yes';
$conf{IPN_DEPOSIT_OPERATION}=1; #считать у нас будет именно модуль IPN
$conf{IPN_USERMENU}=1; #включаем меню пользователя
не нашел строк которые говорили заменить, но это вероятно из-за того что пофиксили уже
но все равно приведу цытату:
выполнив все это, хотел сделать:"К сожалению, по непонятным причинам, ABillS "из коробки" неправильно обрабатывает оператор "+=" в тарифных планах. Чтобы исправить сие досадное недоразумение найдите в Auth.pm следующие строки:
$RAD_PAIRS->{"$left"} =~ s/\"//g;
$RAD_PAIRS->{"$left"}="\"". $RAD_PAIRS->{"$left"} .",$right\"";
}
else {
$RAD_PAIRS->{"$left"}="\"$right\"";
}
и замените на следующие:
$RAD_PAIRS->{"$left"} =~ s/\"//g;
push( @ {$RAD_PAIRS->{"$left"} }, $right );
}
else {
$RAD_PAIRS->{"$left"}= [ $right ];
}
После этого ABillS будет корректно передавать аттрибуты в формате "+=" " (с)
но вышел болт...."
Теперь осталось зайти в админку ABillS'а с логином и паролем abills и в разделе "System" - "NAS" (он же "Система - "Серверы доступа" в русской версии) создать новый NAS с типом "mpd4" и адресом "127.0.0.1:5005"
"
все время пишет это:
прочитав форум и еще кучу источников перепробовал все....ноль....Error: Unable connect to server 'localhost:abills' в браузере
и писало в error_log апача:[Wed Aug 12 20:06:41 2009] [error] [client 10.6.10.188] DBI connect('database=abills;host=localhost','abills',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at ../Abills/mysql//main.pm line 70
[Wed Aug 12 20:06:41 2009] [error] [client 10.6.10.188] Can't call method "prepare" on an undefined value at ../../Abills/mysql//main.pm line 153.
p.s.
осталось сделать только это:
но, не получилось....поэтому прошу помощи..."
NAS получит номер (скорее всего это будет "1"). Теперь откройте crontab и впишите в него следующую строку:
*/5 * * * * /usr/local/abills/libexec/traffic2sql 1
flowdir=/usr/local/abills/var/log/ipn
не забыв заменить 1 на номер Вашего NAS. Теперь все данные о трафике ваших пользователей будут учитываться биллингом.
Также можете дописать в crontab вызов periodic скриптов:
1 0 * * * root /usr/abills/libexec/periodic daily
1 0 * * * root /usr/abills/libexec/periodic monthly
"
p.p.s если я чего то нарушил, прошу прощения....
и еще автору, огромное спасибо, за что вы есть, и что не забросили ваш проект... небольшой вопрос, конечно, $300 я не могу себе позволить, но $10-$15 могу... у вас есть кошельки или адресс ваш, не скажу что пожертвования...но небольшой вклад в развитие. и самому приятно и вам, наверное...
p.p.p.s спустя 5 мин....
мдя...система переезжает с 40-ки на 80-ку
(40-ку забрали)
так что пока повременю...пока снова все это поставлю еще дня 4 пройдет