The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: billing, traffic, freebsd, radius,  (найти похожие документы)
From: Валера <valeranew@ukr.net.> Newsgroups: email Date: Mon, 3 May 2006 14:31:37 +0000 (UTC) Subject: FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты Поставил Связку FreeRadius 1.0.1+FreeNIBS2.1.6+FreeBSD6.0+mpd4 Вот некоторые моменты, которые не сразу нашел, или вообшще не нашел: 1. mpd.conf очень чувствителен к отсутствию пробелов и табов. 2. set bundle enable compression - было написано, что очень тормозит работу. 3. Вы настроили, все работает - Но как осуществлять запуск скриптов при подключении/отключении? set iface up-script "/usr/local/etc/mpd4/link-up" set iface down-script /usr/local/etc/mpd4/link-down При этом надо сделать скрипты исполняемыми! chmod 755 /usr/local/etc/mpd4/link-up chmod 755 /usr/local/etc/mpd4/link-down Далее пункты 4,5 из http://wiki.bsdportal.ru/doc:vpn (Я использовал только Их): 4.Ядро: # собственно поддержка netgraph options NETGRAPH options NETGRAPH_PPP options NETGRAPH_PPTPGRE # включаем поддержку ipfw options IPFIREWALL options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT Это не все конечно... 5.Радиус Открываем radiusd.conf. В нем правим следующие настройки: log_stripped_names=yes # Логируем атрибут User-Name если он найден в запросе log_auth=yes # Логируем запросы аутентификации log_auth_badpass=yes # Если пароль неверен - пишем его в Лог log_auth_goodpass=no # верные пароли незачем писать в лог Проверяем чтобы была раскоментарена строчка: $INCLUDE ${confdir}/sql.conf В секции authorize комментарим files и удаляем комментарий с sql В секции accounting также снимаем комментарий с sql Далее смотрим в sql.conf и правим: driver="rlm_sql_mysql" server="localhost" login="login_k_mysql" password="pass_k_mysql" 6.Что пихать в link-up? Сначала создаем файлы так: touch pr touch ip touch iptest touch iptest1 ЗЫ:Может криво, но работает: #!/bin/bash #tun название тунеля, смотрящего в Инет - на #Сервере, где стоит Нибс, #появляется после #подключения Инета tun=tun0 n=`head -n 1 pr` sed 1d pr>pr1 cat pr1>pr n1=`expr $n + 1` /sbin/ipfw add $n divert 8668 all from $4 to any via $tun /sbin/ipfw add $n1 divert 8668 all from any to me via $tun echo "$1 $4 $n $n1">>ip echo "$1 $4 $n $n1">>iptest echo $n1>num В файле pr находится номера для правил, расположеных через 1...Зачем? Дело в том, что у Меня все правила, если Их указывать без номера - добавляются за 65000 и там не работают - по крайней мере Я пробовал... Тоесть файл pr должен содержать, что то типа: 500 502 504 и т.д. - записей 100, для подключившихся 50-т, на всякий случай... Файл link-down: #!/bin/bash n1=`cat ip|grep "$1"| awk '{print $3"\t"}'` n2=`cat ip|grep "$1"| awk '{print $4"\t"}'` /sbin/ipfw delete $n1 /sbin/ipfw delete $n2 cat ip|grep -v "$1">iptest1 cat iptest1>ip echo "$n1">>pr ЗЫЗЫ: Эти скриптыделают вот что: Достаю из файла pr первое значение, и прописываают правила с номером <значение> <значение+1>, после того как отключается пользователь - эти номера возвращаются для использования... - главное, что бы не перекрывались с уже имеющимися правилами ipfw: ipfw show Как запустить? 1.Подключаемся в инет 2.есть у Меня скриптик: start.sh #!/bin/bash #tun название тунеля, смотрящего в Инет - на #Сервере, где стоит Нибс, #появляется после #подключения Инета В link-up он же tun=tun0 apache start& mysqld_safe& mpd4 -b; radiusd -f& natd -n $tun -p 8668 ЗЫ: Можно было бы и без файлов - с помощью ДБ, и без файла pr вообще - но меня смущает то, что правила в ipfw show показываются так: 00508 75 11273 divert 8668 ip from 192.168.11.4 to any via tun0 В приннципе можно запросто вытянуть номера имеющихся правил, но Они будут начинатся с 00 или 0, ну а Мне легше было так написать, чем смотреть на awk,sed и т.д. Если кто хочет, то может дополнить :)

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, ugenk (?), 00:25, 05/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Такое ощущение, что автор в принципе не очень понимает то, о чем пишет. Зачем nibs'у sql.conf?
     
  • 1.2, weldpua2008 (ok), 23:20, 08/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    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

    Или Я неправ?

     
  • 1.3, weldpua2008 (ok), 23:24, 08/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ЗЫ:
    Надо будет дописать для link-up/down работу с mySQL, а не с файлами.
    Ну и еще пару фич...
     
  • 1.4, weldpua2008 (ok), 11:33, 09/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Есть еще прикол:
    Нельзя пополнить счет пользователя на больше чем 100, а точнее (99,999999).
    В phpMYadmin надо подправить в Базе даных значение разрядов для deposit,credit в users, там стоит
    double(8,6)(тоесть 2-а разряда до запятой и 6-ть после), а надо double(14,6) - думаю хватит.
     
  • 1.5, Валера (??), 16:14, 12/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот скрипт, который Мне прислали, когда Я спросил как в 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}

     
     
  • 2.6, weldpua2008 (ok), 01:47, 27/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Захотел Я создать больше 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, больше не создавал

     
     
  • 3.7, weldpua2008 (ok), 11:27, 28/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Кстате, иногда возникает вопрос Сколько может выдержать mpd,mpd4 radius Во... большой текст свёрнут, показать
     
  • 2.9, Lestat (??), 00:37, 21/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Ребят, очень намучался со скидыванием юзера при помощи этого скрипта.

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

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

     

  • 1.8, weldpua2008 (ok), 14:18, 25/10/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Надо будет дописать для link-up/down работу с >mySQL, а не с файлами.

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

     
  • 1.10, weldpua2008 (ok), 10:53, 27/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >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

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

     
  • 1.11, weldpua2008 (ok), 11:26, 27/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Файл который генрирует 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

     
  • 1.12, weldpua2008 (ok), 11:31, 27/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот блин забыл - что бы отгенерировать файл mpd.links тут после
    echo "        load pptp$lname">>mpd.conf
    добавляем
    echo "pptp$lname:
            set link type pptp">>mpd.links
     
  • 1.13, weldpua2008 (ok), 11:40, 27/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И в начале надо добавить:
    rm mpd.links
    Иначе после нескольких запусков
    mpd.links - будет непонятно что
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру