The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"mpd:Как отключить подключение пользователя на Сервере?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от weldpua2008 email(ok) on 02-Май-06, 21:24 
Привет
Надо написать скрипт. который бы отключал подключенных пользователей от сервера с mpd.
Серверу можно будет передавать такие переменые:
IP клиента, имя интерфейса между клисентом и сервером (еще %{имя пользователя} %{NAS-IP-Address} %{Client-IP-Address} %{NAS-Port} %{Framed-IP-Address})

Думаю отключение будет вот таким

$x- переменая, в которой записано имя интерфейса между клиентом-сервером. в принципе это не проблема...

.....
/sbin/ifconfig $x down
....устанавливаю правила фаера

Но Проблема - как закрывается подключение или как Оно разрыватся между ользователем и Сервером???

В принципе получится Я заблокирую доступ, а как отключить - не знаю.
Помогите Плиз!!!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от weldpua2008 email(ok) on 02-Май-06, 22:23 
Еще придумал - применить правило

ipfw add deny from $ip to $server
sleep 1
ipfw add allow from $ip to $server

Но это как-то некоректно...

У Меня mpd+freeNibs+freeRadius+ipfw+FreeBSD6.0 в принципе этот скрипт будет вызываться имено freeNibs, но Я не знаю последствий...
Может есть какой-то особый сигнал?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от satelit on 03-Май-06, 05:11 
Почитай 2 последние страници новостей на этом сайте...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от Lelik email(??) on 03-Май-06, 20:58 
>Еще придумал - применить правило
>
>ipfw add deny from $ip to $server
>sleep 1
>ipfw add allow from $ip to $server
>
>Но это как-то некоректно...
>
>У Меня mpd+freeNibs+freeRadius+ipfw+FreeBSD6.0 в принципе этот скрипт будет вызываться имено freeNibs, но
>Я не знаю последствий...
>Может есть какой-то особый сигнал?

для FreeNIBS и MPD есть патчи,которые обеспечивают сброс пользователя при достижении порога отключения без доп. извращений и внешних программ.
У меня эта связка нормально работает. MPD 3.18 + FreeRadius 1.0.1 + FreeNIBS. коректно считает и сбрасывает пользователей при отрицательном балансе.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от weldpua2008 email(ok) on 04-Май-06, 02:38 
>для FreeNIBS и MPD есть патчи,которые обеспечивают сброс пользователя при достижении порога
>отключения без доп. извращений и внешних программ.
>У меня эта связка нормально работает. MPD 3.18 + FreeRadius 1.0.1 +
>FreeNIBS. коректно считает и сбрасывает пользователей при отрицательном балансе.

Можно ли узнать линки на эти патчи?
Я лично Их не нашел...

Я порылся и вот, что нашел...
В nibs.conf у Меня стоит kill_program = "${sbindir}/dialup.userkill , а не dialup.pppkill
Не пробовал менять...

Во вторых как Мне обьяснили - создается pid файл, в котором прописано для даного подключения - что надо убивать, потом вызывается что-то типа такого:
kill `cat $ppp_pid_file` и всё.
Но Я лично - ничего не эксперементировал...

Завтра поэксперементирую...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от worm email(ok) on 03-Май-06, 13:34 
>Привет
>Надо написать скрипт. который бы отключал подключенных пользователей от сервера с mpd.
>
>Серверу можно будет передавать такие переменые:
>IP клиента, имя интерфейса между клисентом и сервером (еще %{имя пользователя} %{NAS-IP-Address}
>%{Client-IP-Address} %{NAS-Port} %{Framed-IP-Address})
>
>Думаю отключение будет вот таким
>
>$x- переменая, в которой записано имя интерфейса между клиентом-сервером. в принципе это
>не проблема...
>
>.....
>/sbin/ifconfig $x down
>....устанавливаю правила фаера
>
>Но Проблема - как закрывается подключение или как Оно разрыватся между ользователем
>и Сервером???
>
>В принципе получится Я заблокирую доступ, а как отключить - не знаю.
>
>Помогите Плиз!!!
подними телнет вместе с mpd и потом пиши перловый скрипт(что-то около 15 строк), который будет дропать интерфейс пользователя.
Я себе так и сделал, пока нареканий нет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от satelit on 03-Май-06, 13:40 
>подними телнет вместе с mpd и потом пиши перловый скрипт(что-то около 15
>строк), который будет дропать интерфейс пользователя.
>Я себе так и сделал, пока нареканий нет.

Тогда уж лучше ssh.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от worm email(ok) on 03-Май-06, 18:24 
>>подними телнет вместе с mpd и потом пиши перловый скрипт(что-то около 15
>>строк), который будет дропать интерфейс пользователя.
>>Я себе так и сделал, пока нареканий нет.
>
>Тогда уж лучше ssh.
В mpd? Научи...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от satelit on 03-Май-06, 19:28 
>>>подними телнет вместе с mpd и потом пиши перловый скрипт(что-то около 15
>>>строк), который будет дропать интерфейс пользователя.
>>>Я себе так и сделал, пока нареканий нет.
>>
>>Тогда уж лучше ssh.
>В mpd? Научи...

Я имел ввиду не тот telnet который внутри mpd.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от weldpua2008 email(ok) on 05-Май-06, 20:56 
>>>>подними телнет вместе с mpd и потом пиши перловый скрипт(что-то около 15
>>>>строк), который будет дропать интерфейс пользователя.
>Я имел ввиду не тот telnet который внутри mpd.
Я то понял...
Можешь выложить скрипт?
ЗЫ6 У Мну  mpd4, 3,18 чего-то не хочет пахать...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от weldpua2008 email(ok) on 05-Май-06, 21:00 
>ЗЫ6 У Мну  mpd4, 3,18 чего-то не хочет пахать...
Там насчет патчей для 3.18 говорили, а вот на mpd4-4.0b4 надо ли?

Чёт этот вопрос не освещен...

И еще в freeNIBS по умолчанию стоит dialup.userkill, Я посмотрел, а там route -n и т.п. чепуха - для pppd, что бы обнаружить пид сессии и завалить, но у mpd сессия одна и kill'ом не завалиш...
Кто и как решил?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от worm email(ok) on 06-Май-06, 13:28 
>>>>>подними телнет вместе с mpd и потом пиши перловый скрипт(что-то около 15
>>>>>строк), который будет дропать интерфейс пользователя.
>>Я имел ввиду не тот telnet который внутри mpd.
>Я то понял...
>Можешь выложить скрипт?
>ЗЫ6 У Мну  mpd4, 3,18 чего-то не хочет пахать...

[pppoe0:pppoe0] show layers
        Name            Description
        ----            -----------
        iface           System interface
        ipcp            IPCP: IP control protocol
        ccp             CCP: compression ctrl prot.
        ecp             ECP: encryption ctrl prot.
        bund            Multilink bundle
        lcp             LCP: link control protocol
        phys            Physical link layer
[pppoe0:pppoe0] help close
Usage: close [layer]

http://www.opennet.dev/base/dev/perl_net_telnet.txt.html
и потом в скрипте делай $mpd->print("close [layer]\n");

Запускай только mpd -b -a $ip -c $port

P.S.
[pppoe0:pppoe0] show ver
MPD version: 3.18 (root@example.com 09:58  4-May-2006)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от weldpua2008 email(ok) on 28-Май-06, 20:55 
С консолькой тяжело в mpd4 :( Ну как бы её нету :)
Посоветовали не смотреть даже в сторону 3.18...
Пробовал на 3.18, не получается убить соеденение :(

Нашел как убить соеденение - только 2-мя способами, и оба не хотят работать:

http://www.rostovlinux.ru/content/view/934/56/
Здесь для управления NAS'ом используется консоль mpd, поэтому запускать mpd следует с дополнительными ключами: -a MHOST -c MPORT, где MHOST и MPORT нужно заменить на прослушиваемые ip и порт соответсвенно.
Скрипт прерывания сессии:


#!/usr/local/bin/bash
MHOST=127.0.0.1  # mpd host
MPORT=5555       # mpd telnet port
IP="$3";
test -z "$IP" && exit 1
for bundle in `echo "bundle" | /usr/bin/nc $MHOST $MPORT | grep Opened | awk '{print $1}'`;
do
if echo -e "bundle $bundle\\nshow iface" | /usr/bin/nc $MHOST $MPORT | grep "${IP}$" >/dev/null 2>&1
then
echo -e "bundle $bundle\\nclose phys" | /usr/bin/nc $MHOST $MPORT >/dev/null 2>&1
fi
done;
exit 0;


2.
Этот пытался запустить локально - висит, ничего не делает...
Вот 100% рабочий скрипт:

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}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "mpd:Как отключить подключение пользователя на Сервере?"  
Сообщение от Lestat email(??) on 21-Дек-06, 00:39 
Для работы второгой скрипта (mpd_kill.pl) необходимо добавить следующее в rc.conf:

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

have fun (:

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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