четверг, 30 июля 2009 г.

Удаленно дропаем сессии на CISCO

Задача следующая, есть некий билинг, у нас стоит всеми любимый UTM5 от компании NetUP, необходимо чтобы по команде билинга дропались сессии например когда у абонента кончается бабло на счету.
Тоесть нада вывести пользователя и определить его id
show vpdn session stat
потом дропнуть ему сессию
clear vpdn tunnel pptp id <ид_сессии>

По действиям, первое, что нам необходимо, это включить rsh на VPN сервере и дать разрешение на дроп сессии.
Заходим на CISCO в режим глобального конфигурирования, команды следующие:
rlogin trusted-remoteuser-source local - включает аунтификацию по локальному логину
rlogin trusted-localuser-source local - тоже самое
no ip rcmd domain-lookup - дабы не резолвил имя домена
ip rcmd rsh-enable - включили rsh
ip rcmd remote-host utm 192.168.1.1 root enable 8 - локальное имя utm, ip откуда - 192.168.1.1, удаленное имя root(это пользователь под которым будет запущен rsh, если не root то пишем под кем запускаем), enable 8 - права
privilege exec level 8 show vpdn session state - разрешаем для уровня 8 сделать команду show vpdn session state
privilege exec level 8 clear vpdn tunnel pptp id - разрешаем для уровня 8 сделать команду clear vpdn tunnel pptp id

Сохраняем конфигурацию и проверяем, на компьютере ip адрес которой мы указали в настройках.
должно получится что то типа такого:
[root@server odmin]# rsh 192.168.1.2 -l utm sh vpdn session stat
connect to address 192.168.1.2 port 544: Connection refused
Trying krb4 rsh...
connect to address 192.168.1.2 port 544: Connection refused
trying normal rsh (/usr/bin/rsh)


%No active L2F tunnels

L2TP Session Information Total tunnels 1 sessions 1

LocID RemID TunID Username, Intf/ State Last Chg Uniq ID
Vcid, Circuit
365 1027 3280 abonlogin1, Vi359 est 16:48:53 476

PPTP Session Information Total tunnels 173 sessions 173

LocID RemID TunID Intf Username State Last Chg Uniq I
39421 49152 40317 Vi332 abonlogin2 estabd 12:19:32 254

если увидели, значит все в порядке, VPN сервер пускает
выбираем TunID который равен 40317
и проверяем такимже методом команду clear
rsh 192.168.1.2 -l utm clear vpdn tunnel pptp id 40317
VPN сессия должна дропнутся.

Азы понятны, далее элементарный скриптик на баше, типа этого куска из моего скрипта:

TUN_PID=`rsh $CISCO_IP -l utm sh vpdn session stat | grep $USERLOGIN | awk '{print $3}'`
if [ "$TUN_PID" ]; then
rsh $CISCO_IP -l utm clear vpdn tunnel pptp id $TUN_PID > /dev/null
echo "$DATE $USERLOGIN EMERGENCY tunnel $TUN_PID closed in $CISCO_IP!" >> /var/log/utm5/close-vpn.log
fi

При заканчивании бабла срабатывает тригер на блокировку абонента, билинг отдает скриптику логин, вычисляется PID тунеля и происходит дропанье. Все счастливы и довольны. Особенно дропнутый абонент.

Комментариев нет:

Отправить комментарий