URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 15125
[ Назад ]

Исходное сообщение
"Тематический каталог: FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"

Отправлено auto_topic , 05-Май-06 00:25 
Обсуждение статьи тематического каталога: FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)

Ссылка на текст статьи: http://www.opennet.me/base/net/freenibs_mpd_tips.txt.html


Содержание

Сообщения в этом обсуждении
"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено ugenk , 05-Май-06 00:25 
Такое ощущение, что автор в принципе не очень понимает то, о чем пишет. Зачем nibs`у sql.conf?

"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 08-Май-06 23:20 
radiusd.conf:

#  Include another file that has the SQL-related configuration.
    #  This is another file only because it tends to be big.
    #
    #  The following configuration file is for use with MySQL.
    
    #  For Postgresql, use:${confdir}/postgresql.conf
    #  For MS-SQL, use:${confdir}/mssql.conf
    #  For Oracle, use:${confdir}/oraclesql.conf
    #
    $INCLUDE  ${confdir}/sql.conf

    #  NiBS Support
    #  The following configuration file is for use with MySQL.
    $INCLUDE  ${confdir}/nibs.conf

Или Я неправ?


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 08-Май-06 23:24 
ЗЫ:
Надо будет дописать для link-up/down работу с mySQL, а не с файлами.
Ну и еще пару фич...

"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 09-Май-06 11:33 
Есть еще прикол:
Нельзя пополнить счет пользователя на больше чем 100, а точнее (99,999999).
В phpMYadmin надо подправить в Базе даных значение разрядов для deposit,credit в users, там стоит
double(8,6)(тоесть 2-а разряда до запятой и 6-ть после), а надо double(14,6) - думаю хватит.

"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено Валера , 12-Май-06 16:14 
Вот скрипт, который Мне прислали, когда Я спросил как в freeNIBs разрывать соеденение, при достижении 0-го баланса, если как сервер mpd

mpd_kill.pl
#!/usr/bin/perl
if( $ARGV[3] eq '' ) { die 'Usage: mpddown user nasip userip nasport'; };

$linkname='pptp'; ## имя линка без номера (links.conf, mpd.conf)
$maxng=40; ## номер последнего линка. первый должен быть 0 (ноль)
$user=$ARGV[0];

$nasip=$ARGV[1];
$userip=$ARGV[2];
$nasport=$ARGV[3]; if( $nasport > $maxng ) { $nasport=1; };
$nastelnetport=5005;

use IO::Socket;

sub checklink;

$sock = IO::Socket::INET->new(
PeerAddr => $nasip,
PeerPort => $nastelnetport,
Proto => 'tcp') or die "Can not connect to mpd!\n$!";
$sock->autoflush(1);
while (<$sock>){ print; last; }; ## читаем ввод из сокета
while (<$sock>){ print; last; }; ## пропускаем приветствие
while (<$sock>){ print; last; }; ## всего 3 строки
printf($ARGV[0]);
$portn=$nasport;
sprintf("PORT NO %d",portn);
checklink;
if( $user eq $luser ) {
print $sock "close\n"; }
else {
$portn++;
while( ($portn != $nasport) && ($user ne $luser) ) {
if( $portn > $maxng ) { exit 0};
checklink;
if( $user eq $luser ) {
print $sock "close\n";
};
$portn++;
} ;
};
close $sock;
exit 0;

sub checklink {
print $sock "link pptp",$portn,"\n"; ## выбрали линк
print $sock "show radius\n"; ## запросили инфу о линке
while (<$sock>){ ## обрабатываем в цикле ввод
print;
@words=split(' ');
$luser=$words[2];
last if( $words[0] eq 'Authname' ); ## ищем строку с именем пользователя
};
};


, а в файле nibs.conf должна быть след. строчка:

kill_program = "${sbindir}/mpd_kill.pl %{User-Name} %{NAS-IP-Address} %{Client-IP-Address} %{NAS-Port}


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (bill..."
Отправлено weldpua2008 , 27-Май-06 01:47 
Захотел Я создать больше 100 нод, а тут мне все мпд какие Я не пробывал одну и туже ошибку выдают:
...
[pptp112] ppp node is "mpd9523-pptp112"
[pptp112] can't connect iface and inet: File exists
mpd: pipe: Too many open files in system
mpd: fatal error, exiting
[pptp1] IPCP: Down event
[pptp1] IFACE: Close event
...

Решаем, просмотром параметров:
sysctl  kern.maxfiles
sysctl  kern.openfiles
sysctl  kern.maxusers

У меня sysctl  kern.maxusers =63
Помогло:
echo 'kern.maxusers="512"' >> /boot/loader.conf

Теперь Нод 252, больше не создавал


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (bill..."
Отправлено weldpua2008 , 28-Май-06 11:27 
Кстате, иногда возникает вопрос:
"Сколько может выдержать mpd,mpd4 + radius?"
Вот цытата от сюда:
http://groups.google.com/group/fido7.ru.unix.bsd/browse_thre...*&rnum=1&hl=ru#e81f32f720eded9a

CPU: Intel(R) Celeron(R) CPU 1.70GHz (1716.91-MHz 686-class CPU)
real memory  = 125763584 (122816K bytes)
деpжит 400 интеpфейсов (пpавда, больше 300 интеpфейсов одновpеменно ни pазу не
было занято)

а вот это:
CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz (2992.51-MHz 686-class CPU)
real memory  = 1056108544 (1031356K bytes)
деpжит 800 интеpфейсов (максимум одновpеменных подключений - около 790).
с ng_tcpmss оба деpжат нагpузку без особых пpоблем. пеpвая машина вообще не
напpягается (10-20% cpu), втоpая, конечно, пpоседает сильнее (40-60% cpu)


Привожу цытату, орт сюда же - человек создал 999нод, но 1000-я уже валит сервер...
Что же нужно сделать, что бы Сервер жевал скажем 999нод? :

Нужно увеличивать kern.ipc.maxpipekva. экспеpиментально установлено, что mpd4
на один бандл нужно около 200000 байт. итого, на 300 бандлов:
echo "kern.ipc.maxpipekva=\"60000000\"" >> /boot/loader.conf
кpоме этого, на каждый бандл нужно около 8 свободных file descriptor'ов (тоже
экспеpиментальная величина):
echo "kern.maxfiles=xxxxx" >> /etc/sysctl.conf
echo "kern.maxfilesperproc=3000" >> /etc/sysctl.conf
3000 < xxxxx
немалую pоль игpают такие паpаметpы ядpа, как vm.kmem_size_scale,
vm.kmem_size_max. vm.kmem_size - пpоизводная от двух упомянутых и объема
опеpативной памяти, полезна для контpоля того, сколько вы pеально отдали ядpу.


общий pецепт такой: если хотите ставить pекоpды - набивайте побольше памяти,
выделяйте больше памяти ядpу, задеpите KVA_PAGES (опция в конфиге ядpа).
напоследок - мои loader.conf и sysctl.conf на тестовой машине (512mb ram, p4
3ghz), где я тpениpуюсь в создании 1000 интеpфейсов(999 работающих):

# cat /boot/loader.conf
kern.maxusers="512"
kern.ipc.maxpipekva="200000000"
vm.kmem_size_max="536870912"
vm.kmem_size_scale="2"
ng_ether_load="YES"
ng_netflow_load="YES"


# cat /etc/sysctl.conf
net.inet.ip.fastforwarding=1
kern.maxfiles=65000
kern.maxfilesperproc=32000
net.inet.ip.intr_queue_maxlen=1000


в конфиге ядpа стоит опция:
options KVA_PAGES=512


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (bill..."
Отправлено Lestat , 21-Дек-06 00:37 
Ребят, очень намучался со скидыванием юзера при помощи этого скрипта.

В конечном итоге всё порешалось добавлением следующей строки в rc.conf:

mpd_flags="--console-address 127.0.0.1 --background --console-port 5005"


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 25-Окт-06 14:18 
>Надо будет дописать для link-up/down работу с >mySQL, а не с файлами.

было решено что будет заведен просто файл с ип и номером правил...
И в link-up/down по ИП будет браться из Него какие правила (под какой номер кидать)


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 27-Фев-07 10:53 
>mpd_flags="--console-address 127.0.0.1 --background --console-port 5005"
У Меня не работает...
НО!!!
Если Мы добавлем секцию:
startup:
    set console port 5005
    set console ip 127.0.0.1
    set console user LOGIN PASSWORD
    set console open

то получаем доступ по телнет...
А Теперь вопрос - как авторизироваться из скрипта?


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 27-Фев-07 11:26 
Файл который генрирует mpd.conf для mpd4
#!/bin/sh
ip4=2
ip3=11
ip2=168
ip1=192
serverip="192.168.11.1/32"
maxlink=199
echo "startup:
    set console port 5005
    set console ip 127.0.0.1
    set console user user password
    set console open
default:
">mpd.conf
lname=0
for num in `jot $maxlink 10 20`
do
lname=`expr $lname + 1`

echo "        load pptp$lname">>mpd.conf
done

lname=0
for num in `jot $maxlink 10 20`
do

if [ "$ip4" -ge 254 ]
then
ip3=`expr $ip3 + 1`
ip4=1
fi
lname=`expr $lname + 1`
ipall="$ip1.$ip2.$ip3.$ip4"


echo "pptp$lname:
        new -i ng$lname pptp$lname pptp$lname
        set ipcp ranges  $serverip  $ipall/32
        load pptp_standart">>mpd.conf
ip4=`expr $ip4 + 1`


done

echo "
pptp_standart:
    set pptp disable windowing
    set iface route default
    set iface disable on-demand
    set iface enable tcpmssfix
    set bundle disable multilink
    set link yes acfcomp protocomp
    set iface up-script \"/usr/local/etc/mpd4/link-up\"
    set iface down-script \"/usr/local/etc/mpd4/link-down\"
    set link no pap chap
    set link enable chap
    set link keep-alive 10 75
    set ipcp yes vjcomp
    set ipcp dns 10.11.25.1
#    set link mtu 1460
#    set link mru 1460
    set iface enable proxy-arp
    set bundle enable compression
    set ccp yes mppc
    set ccp yes mpp-e40
    set ccp yes mpp-e128
    set ccp yes mpp-stateless
    set pptp enable incoming
    set pptp disable originate
#   set radius config /opt/radius.conf
    set radius me 127.0.0.1
    set radius retries 2
    set radius server 127.0.0.1 password 1812 1813
    set radius timeout 5
    set auth acct-update 300
    set auth enable radius-auth
    set auth enable radius-acct ">>mpd.conf


"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 27-Фев-07 11:31 
Вот блин забыл - что бы отгенерировать файл mpd.links тут после
echo "        load pptp$lname">>mpd.conf
добавляем
echo "pptp$lname:
        set link type pptp">>mpd.links

"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено weldpua2008 , 27-Фев-07 11:40 
И в начале надо добавить:
rm mpd.links
Иначе после нескольких запусков
mpd.links - будет непонятно что