Linux Установка ABillS
Попытка адаптировать документацию по биллинговой системе ABILLS применительно к использованию ее под ОС Linux
Версия: 0.55 от 16.02.2007
Версия abills: 0.35 релиз
Этот документ базируется на оригинальной документации по ABILLS от Asmodeus'а http://abills.asmodeus.com.ua
Использование связки ABILLS + Linux осложняется тем, что в этой операционной системе невозможно использовать программные NAS серверы expppd и mpd. Зато у нас есть старый горячо любимый pppd, который как всегда для получения нужной функциональности нужно патчить и пересобирать причем вместе с ядром
Здесь будет описана установка биллинга для VPN сервера (abills + pppd + pptpd) Пути установки программ и расположения конфигурационных файлов несколько изменены по сравнению с оригинальной документацией. Вы можете их изменять, однако отдавайте себе отчет, что при этом потребуется изрядно переконфигурировать весь комплекс программ. Все компоненты (NAS, radius, web-сервер, база данных) расположены на одном сервере, хотя это не исключает возможности вынести например NAS или базу данных на другую машину.
Итак..
1. Установка freeradius
Загрузить пакет FreeRadius можно по адресу [http://www.freeradius.org] Рекомендую взять версию 1.1.0, потому как в более новых версиях несколько изменился формат конфигурационных файлов и вам придется самостоятельно с ними разбираться. Выполняем следующие действия:
cd /usr/src wget ftp://ftp.freeradius.org/pub/radius/old/freeradius-1.1.8.tar.gz tar zxvf freeradius-1.1.8.tar.gz freeradius-1.1.8 ./configure --prefix=/usr/local/radiusd make make install
После успешной установки правим файлы: /usr/local/radius/etc/raddb/users
DEFAULT Auth-Type = Accept Exec-Program-Wait = "/usr/abills/libexec/rauth.pl"
/usr/local/radius/etc/raddb/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"
Не забываем про пробелы перед Exec-Program
У большинства такая конфигурация работает нормально, а в моем случае после каждого аккаунтинг-запроса в памяти оставались зомби-процессы racct.pl. Проверить это можно командой:
ps ax|grep racct
Если у вас тоже остаются зомби, то рекомендую заменить в файле acct_users Exec-Program на Exec-Program-Wait
/usr/local/radius/etc/raddb/clients.conf В этот файл нужно вписать IP адрес или имя NAS сервера с которого будут поступать данные для радиуса и пароль доступа.
client localhost { # Ниже пароль для доступа к радиусу. Запомните его, он # понадобится в п. 8 secret = radsecret shortname = shortname }
/usr/local/radius/etc/raddb/radiusd.conf В этом файле нужно закоментировать использование модулей 'chap' и 'mschap' в разделе 'authorize'
authorize { preprocess # chap # counter # attr_filter # eap suffix files # etc_smbpasswd # sql # mschap }
Если вы желаете использовать MPPE, MPPC, MS-Chap V2 (протоколы шифрования и компрессии от M$ - для VPN очень желательно) то в файл /usr/local/radius/etc/raddb/radiusd.conf вносятся следующие изменения:
Cоздаются функции для преавторизации и поставторизации
exec pre_auth { wait = yes program = "/usr/abills/libexec/rauth.pl pre_auth" input_pairs = request output_pairs = config } exec post_auth { wait = yes program = "/usr/abills/libexec/rauth.pl post_auth" input_pairs = request output_pairs = config }
В секции 'authorize' внести 'pre_auth' и раскоментировать 'mschap'
authorize { pre_auth preprocess # auth_log # attr_filter # chap mschap suffix files }
Для оповещения о неавторизированых пользователях правим секцию post-auth
post-auth { Post-Auth-Type REJECT { post_auth } }
Для нормальной работы с NAS на основе pppd необходимо добавить в файл словарей freeradius'а /usr/local/radius/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
В директории с исходниками freeradius есть подкаталоги redhat и debian. в них вы можете найти скрипты для автозапуска radiusd. Для RedHat-based дистрибутивов установка скрипта выглядит так:
cp /usr/src/freeradius-1.1.0/redhat/rc.radiusd-redhat /etc/init.d/radiusd chmod 755 /etc/init.d/radiusd
Правим /etc/init.d/radiusd :
RADIUSD=/usr/sbin/radiusd LOCKF=/var/lock/subsys/radiusd CONFIG=/etc/raddb/radiusd.conf
Выполняем:
chkconfig -level 345 radiusd on
2. MYSQL
В дистрибутиве вашей операционной системы наверняка есть пакеты mysql* . Если не хотите усложнять себе жизнь - установите их. У меня заработало с версией 3.23
Если вы любитель собирать все из исходников - загрузите исходники MySQL с http://www.mysql.com
tar xvfz mysql-4.1.16.tar.gz cd mysql-4.1.16 ./configure --prefix=/usr make make install
Создаем файл pre_abills.sql следующего содержания:
use mysql; INSERT INTO user (Host, User, Password) VALUES ('%','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;
Не забудьте исправить sqlpassword на свое усмотрение. Для тех кто не понял, это пароль mysql-пользователя abills, необходимый для доступа к базе данных abills
Создаём пользователя и базу.
mysql -u root -p < pre_abills.sql mysqladmin flush-privileges;
На этом настройка mysql завершена.
3. Web server
Для работы web-интерфейса требуется установить и настроить web сервер. Как и в случае с mysql нет особого смысла собирать его из исходников, поскольку любой приличный дистрибутив уже имеет в своем составе web-сервер Apache. Он должен быть собран и сконфигурирован с поддержкой модуля mod_rewrite. Добавляем в конфигурационный файл вебсервера httpd.conf содержимое файла /usr/abills/misc/abills_httpd.conf и перезапускаем вебсервер
4. Perl modules
Для работы системы нужны модули.
DBI DBD::mysql Digest-MD5 для Chap авторизации Digest-MD4 для MS-Chap авторизации Crypt-DES для MS-Chap авторизации Digest-SHA1 для MS-ChapV2 авторизации libnet Нужен только при авторизации из UNIX passwd Time-HiRes Нужен только для тестирования скорости выполнения авторизации, акаунтинга, и страниц веб интерфейса.
Часть из них возможно уже установлена в вашей системе. Недостающие можно скачать на http://www.cpan.org. Порядок установки модулей достаточно стандартный:
tar xvzf modulename.tar.gz cd modulename perl Makefile.PL make make test make install
В моем случае пришлось переустановить еще и модуль PathTools (Cwd.pm)
5. Abills
Скачиваем и распаковываем релиз версии 0.35 в отдельный каталог:
cd /usr/src/abills_distr wget http://puzzle.dl.sourceforge.net/sourceforge/abills/abills-0.35.tgz tar -xvzf abills-0.35.tgz
Правим конфигурационый файл системы /usr/abills/libexec/config.pl :
#DB configuration $conf{dbhost}='localhost'; $conf{dbname}='abills'; $conf{dblogin}='abills'; #Здесь нужно подставить пароль mysql-пользователя abills (п.2) $conf{dbpasswd}='sqlpassword'; $conf{ADMIN_MAIL}='info@your.domain'; $conf{USERS_MAIL_DOMAIN}="your.domain"; # используется для шифрования паролей администраторов и пользователей. $conf{secretkey}="test12345678901234567890"; #Лимит трафика на сессию, больше нельзя, изза глюка radiusclient'а $conf{MAX_SESSION_TRAFFIC}=2047; # Проверять депозит по текущим сесиям, при достижении 0 сбрасывать с линии $conf{periodic_check}=’yes’;
При использовании модуля Dv полезно так же добавить в конфиг следующие параметры, и изменить их по своему усмотрению.
$conf{MAC_AUTO_ASSIGN}=0; # Заполнять поле CID при cоединении, если оно не заполнено $conf{DV_USER_CHG_TP}=0; # Разрешить пользователю менять тарифный план из своего веб акаунта $conf{ERROR_ALIVE_COUNT}=3; # Количество периодов непришедших Alive пакетов после которого сесия автоматом попадает в Zap таблицу
При изменении значения в $conf{secretkey} поменяйте его также в файле abills.sql из дистрибутива abills. После этого загружаем структуру таблиц в базу:
mysql -D abills < abills.sql
Для того, чтобы можно было осуществлять hangup подключенного пользователя необходимо добавить в файл /etc/sudoers:
apache ALL = NOPASSWD: /usr/abills/misc/pppd_kill
Вносим в cron периодические процессы, /etc/crontab (уберите восклицательный знак в начале первой строки):
!*/5 * * * * root /usr/abills/libexec/billd -all 1 0 * * * root /usr/abills/libexec/periodic daily 1 0 * * * root /usr/abills/libexec/periodic monthly
Если хотите, чтоб ежедневно осуществлялось автоматическое резервное копирование базы данных, добавьте туда же:
1 3 * * * root /usr/abills/libexec/periodic backup
Определяем от имени какого пользователя запускается web-сервер в нашей системе. Для этого надо просмотреть файл httpd.conf и найти в нем директиву User, которая определяет имя владельца процесса. В моем случае:
User apache
Устанавливаем права на чтение и запись вебсервером для файлов веб интерфейса
chown -Rf apache /usr/abills/cgi-bin
Создаем недостающие каталоги:
mkdir /usr/abills/backup chown apache /usr/abills/backup mkdir /usr/abills/var mkdir /usr/abills/var/log
Правим файл /usr/abills/Abills/defs.conf
$SNMPWALK = '/usr/bin/snmpwalk'; $GZIP = '/bin/gzip'; $MYSQLDUMP = '/usr/bin/mysqldump';
В вашем случае пути к этим программам могут быть иными, проверьте командой which.
Открываем веб интерфейс - http://your.host/abills/admin/ Логин администратора по умолчанию - abills , пароль - abills. От имени этого администратора будут выполняться различные операции в автоматическом режиме, например снятие абонплаты в начале месяца, по этому удалять его не нужно, нужно только изменить пароль на более безопасный. Для реальных администраторов необходимо завести свои аккаунты и назначить им необходимые права: Система → Администраторы
Если впоследствии вам понадобится самая свежая функциональность обновления из CVS можно производить следующим образом:
cd /usr/src/abills_distr 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-3 abills cp -Rf abills /usr/ chown -Rf apache /usr/abills/cgi-bin
После этого изучаем changelog и выполняем необходимые рекомендации.
Тот кто выполнил все предыдущие пункты и увидел вебинтерфейс заслужил первую бутылку пива. Дальнейшее описание специфично именно для Linux-систем с pppd.
6. pppd
Для работы с виндовыми vpn-клиентами pppd должен (желательно) поддерживать mppe (шифрование), mppc (компрессия), MS-CHAP v2 (аутентификация). Возможно ваш дистрибутивный pppd и ядро уже имеют поддержку этих возможностей, тогда этот раздел можно не читать. Если же нет, то для того, чтобы включить возможность mppe-mppc нужно патчить и пересобирать pppd и ядро. Для этого потребуются:
Исходники pppd,
cd /usr/src wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.3.tar.gz tar xvzf ppp-2.4.3.tar.gz
Исходники ядра, либо возьмите из дистрибутива, либо скачайте с http://kernel.org. Не забывайте, что на исходники ядра из дистрибутива уже может быть наложен какой либо несовместимый патч.. Я пока использую ядра ветки 2.4, в данном случае - 2.4.32
cd /usr/src wget http://kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.bz2 bzcat linux-2.4.32.tar.bz2 | tar xvf -
Патч mppe-mppc для pppd,
cd /usr/src
wget http://mppe-mppc.alphacron.de/ppp-2.4.3-mppe-mppc-1.1.patch.gz gunzip ppp-2.4.3-mppe-mppc-1.1.patch.gz | patch -p0
Патч mppe-mppc для ядра, Для каждой версии ядра есть свой патч, но для версии 2.4.32 его очевидно еще не выпустили. Поэтому делаем финт ушами.
cd /usr/src
Чтобы обмануть патч делаем симлинк:
ln -s linux-2.4.32 linux-2.4.31 wget http://mppe-mppc.alphacron.de/linux-2.4.31-mppe-mppc-1.3.patch.gz gunzip linux-2.4.31-mppe-mppc-1.3.patch.gz | patch -p0
Патч накладывается нормально. Если у вас есть какие либо особые потребности, можете наложить еще какие нибудь дополнительные патчи. Я, например , всегда накладываю patch-o-matic . Затем стандартная процедура сборки ядра:
cd /usr/src/linux-2.4.32 make menuconfig
Включаем поддержку PPP со всеми наворотами в виде модулей:
- network device support
- → <M> PPP (point-to-point protocol) support
- → [*] PPP multilink support (EXPERIMENTAL)
- → [*] PPP filtering
- → <M> PPP support for async serial ports
- → <M> PPP support for sync tty ports
- → <M> PPP Deflate compression
- → <M> PPP BSD-Compress compression
- → <M> Microsoft PPP compression/encryption (MPPC/MPPE)
- → <M> PPP over Ethernet (EXPERIMENTAL)
Включаем поддержку криптоалгоритмов SHA1 и ARC4 :
- Criptographic options
- → <M> SHA1 digest algorithm
- → <M> ARC4 cipher algorithm
Включаем поддержку опций необходимых для функционирования шейпера:
- Network options ⇒ QOS and/or fair queuing
- → включаем поддержку всех опций в виде модулей - <M>
Остальные опции выставляете в зависимости от ваших потребностей. Далее делаем:
make dep make bzImage make modules make modules_install make install
прописываем новое ядро в lilo.conf (если не прописалось автоматически):
image=/boot/vmlinuz-2.4.32-** initrd=/boot/initrd-2.4.32-**.img label=mppe_mppc root=/dev/hda1 read-only
Выполняем :
lilo
Если все прошло без ошибок, правим файл /etc/modules.conf
alias char-major-108 ppp_generic alias ppp-compress-18 ppp_mppe_mppc alias tty-ldisc-3 ppp_async alias tty-ldisc-14 ppp_synctty alias net-pf-24 pppoe
Перезагружаемся с новым ядром, и убеждаемся, что оно действительно новое :)
uname -a
Надеюсь все прошло нормально. Проверяем установлен ли в нашей системе pppd, если да, то стоит его удалить, чтобы не было недоразумений. Если необходимо, сделайте резервную копию каталога /etc/ppp . Далее приступаем к сборке нового pppd:
cd /usr/src/ppp-2.4.3 ./configure --prefix=/usr make make install make install-etcppp
7. pptpd
pptpd, (подпольная кличка - PopTop) можете взять из своего дистрибутива, или скачать исходники с http://sourceforge.net/projects/poptop. Проще взять готовый, но если вы решили собирать самостоятельно:
cd /usr/src tar xvzf pptpd-1.3.0.tar.gz cd pptpd-1.3.0 ./configure --prefix=/usr make make install cp pptpd.init /etc/init.d/pptpd chmod 755 /etc/init.d/pptpd chkconfig --level 345 pptpd on
Правим файл /etc/pptpd.conf :
ppp /usr/sbin/pppd option /etc/ppp/pptpd.options debug # stimeout 10 # noipparam logwtmp bcrelay eth0 localip ***.***.***.*** # Здесь IP адрес вашего сервера в локальной сети #remoteip 192.168.0.234-238,192.168.0.245 # Закоментировать, назначается #радиусом
Создаем файл /etc/ppp/pptpd.options со следующим содержимым:
plugin radius.so plugin radattr.so proxyarp debug require-mschap-v2 #+chap #+pap ms-dns ***.***.***.*** # Здесь укажите IP адрес DNS сервера, который # будет сообщаться подключившемуся клиенту
Более детальное описание опций здесь - http://mppe-mppc.alphacron.de/
Примечание: в последнее время я пришел к выводу, что MPPE и MPPC в домашней сети не такая уж и полезная фича. Ресурсов отъедает прилично. По этому если вы строите NAS на недостаточно производительном железе, подумайте, нужно ли оно вам. Возможно лучшим выходом будет отключить обязательное шифрование в виндовом клиенте.
8. radiusclient
pppd общается с радиусом не напрямую, а через radiusclient (!! во намудрили !!) Как всегда два пути, взять из дистрибутива, или собрать самому. Следующий абзац для самоделкиных.
# cd /usr/src # wget ftp://ftp.cityline.net/pub/radiusclient/radiusclient-0.3.2.tar.gz # tar xvzf radiusclient-0.3.2.tar.gz # cd radiusclient-0.3.2 # ./configure # make # make install
Правим файл /etc/radiusclient/radiusclient.conf :
authserver 127.0.0.1 acctserver 127.0.0.1
В файл /etc/radiusclient/servers вносим IP адрес радиус-сервера и соответствующий ему пароль (см п.1)
127.0.0.1 radsecret
В случае если radius и NAS будут находится на разных хостах в вышеупомянутых файлах необходимо указать IP адрес радиус сервера.
Не все ключи обходимые для работы системы присутствуют в стандартном словаре по этому прийдётся его дополнить /etc/radiusclient/dictionary
ATTRIBUTE CHAP-Challenge 60 string ATTRIBUTE Acct-Input-Packets 47 integer ATTRIBUTE Acct-Output-Packets 48 integer 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
9. Шейпер
Здесь рассказывается как использовать атрибуты, передаваемые радиусом NAS'у на основе linux pppd. Это нужно для того, чтобы ограничивать пользователям скорость и выставлять фильтры. Последние версии pppd имеют в своем составе плагины для работы с radius-сервером. Убедитесь что в файле /etc/ppp/options.pptpd есть следующие строки:
plugin radius.so plugin radattr.so
radius.so предназначен для аутентификации и аккаунтинга через радиус, а radattr.so принимает от радиуса дополнительные атрибуты и помещает их в файл /var/run/radattr.pppX , где pppX - имя интерфейса. Выглядит он примерно так:
MS-CHAP2-Success \207S=F17E6A6B06CD4B0C38F6....F35CD130BD7EBE MS-MPPE-Recv-Key \302\177\360\305\202I\362O....65\26\216#\336 MS-MPPE-Send-Key \317Ab4\353\275R\24\331O\3....\236gr*\274$\233 MS-MPPE-Encryption-Policy MS-MPPE-Encryption-Types Framed-IP-Address 192.168.144.226 Filter-Id test_filter PPPD-Downstream-Speed-Limit 128 PPPD-Upstream-Speed-Limit 128 Octets-Direction Sum Session-Octets-Limit 106954752 Framed-IP-Netmask 255.255.255.255 MS-CHAP-MPPE-Keys p3\314wm\333B7@S/\024\370E\....\241'e\371K\303 Acct-Interim-Interval 60 Session-Timeout 29293
Этот файл удобно обрабатывать в скрипте /etc/ppp/ip-up.local, для этого добавляем в него следующие строки :
if [ -f /var/run/radattr.$1 ] then DOWNSPEED=`/bin/awk '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1` UPSPEED=`/bin/awk '/PPPD-Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1` FILTERS=`/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
Скорость можно выставлять индивидуально для каждого пользователя и в тарифном плане. При этом в тарифном плане можно установить разные upspeed и downspeed. Если установлена скорость в настройках пользователя, то скорость из тарифного плана игнорируется. Скорость выставляется в Kbit/s
Если у кого то не заработает (не будут отдаваться нужные параметры ), то скорее всего у вас старая версия Abills'а, обновитесь из CVS:
#!/bin/bash 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-3 abills
Я предполагаю, что вышеописанный шейпер далеко не идеален и можно было бы в нем что то улучшить.
10. Конфигурирование NAS
Теперь необходимо сконфигурировать NAS. Заходим в web-интерфейс администратора http://your.host/abills/admin/ Логин - abills, пароль - abills Идем: Система → Сервер доступа Создаем новый NAS с необходимыми параметрами. В нашем случае:
IP ***.***.***.*** (По непонятным причинам мне пришлось указать здесь IP адрес моего WAN интерфейса) Название (произвольно, напр. - vpn1) Radius NAS-Identifier Идентификатор сервера (можно не вписывать) Опис Описание сервера (Произв) Type pppd:pppd + Radius plugin (linux) Authorization SQL Alive 60 Disable IP:PORT Необходимо указать для хенгапа, если NAS находится на другом хосте User Password RADIUS Parameters Acct-Interim-Interval=60
Значение Alive и значение параметра Acct-Interim-Interval нужно выбирать одинаковым. Осталось создать тарифные планы и завести юзеров..
Начиная с версии от 16.02.07 в биллинге появилась возможность хенгапа пользователя на удаленном NAS. Для этого надо в параметрах NAS указать IP:PORT. На хост, где располагается NAS, нужно положить файл /usr/abills/misc/pppd_kill из дистрибутива ABillS и выполнить следующие настройки: в /etc/services добавить:
hangup 30000/tcp # выберите произвольный свободный порт в своей системе
если используете inetd, то в /etc/inetd.conf добавить:
hangup stream tcp nowait root /usr/abills/misc/pppd_kill pppd_kill server
если используете xinetd, то в каталоге /etc/xinetd.d добавить файл hangup, следующего содержания:
# default: off # description: Hangup ppp interfaces # service hangup { socket_type = stream wait = no user = root server = /usr/abills/misc/pppd_kill only_from = 192.168.144.1 # здесь укажите IP хоста на котором ABillS server_args = server log_on_success += USERID log_on_failure += USERID disable = no }
Ну вот и все. Если у вас есть предложения или замечания - в личку пользователю axl на здешнем форуме..
Что в планах:
- модернизация шейпера с использованием IFB (требуется ядро 2.6.последнее )
- описание работы с модулем IPN