
Скрипт который убивает vpn соединения.
Скрипт который убивает vpn соединения.
Есть скрипт на Перле, который анализирует у юзеров остаток денежных средств, и если в базе UTM в таблице USER у пользователся стоит block 1 то скрипт убивает vpn соединения этого юзера. 

Плохой скрипт. Прибивает соединения kill'ом. А при этом ppp не шлет Радуису accounting stop пакетов. А у меня (и думается, не только у меня) к сему процессу привязано освобождение дополнительных адресов - без этого пользователь в следующий раз вообще VPN себе подключить не сможет.
Да и самим аккаунтингом жертвовать как-то не хочется. 
Правильный способ - через pppctl цивильно закрывать соединение. Вот ежели так сделаешь - честь тебе будет и хвала!
))


Правильный способ - через pppctl цивильно закрывать соединение. Вот ежели так сделаешь - честь тебе будет и хвала!

Ставить надо freeradius.
Посмотрим через pppctl.
Посмотрим через pppctl.
Последний раз редактировалось tariely Пн апр 25, 2005 00:21, всего редактировалось 1 раз.
У меня такое работает давным давно. На впн-сервер биллинговый сервак периодически копирует файл с блокированными айпишниками.
Скриптик раз в минуту проверяет "отключенцев".
Сессии закрываются корректно.
#!/bin/sh
#
#exit
#
if [ -s /tmp/vpn.utm ]; then
CUR=`route -n | grep ppp | awk '{print $8}'`
for IF in $CUR; do
if [ -s /var/run/"$IF".pid ]; then
IP=`head -1 /var/run/radattr."$IF" | cut -f2 -d\ `
if [ `cat /tmp/vpn.utm | grep -c "^$IP$"` -ne 0 ]; then
kill -15 `cat /var/run/"$IF".pid`
fi
fi
done
fi
Скриптик раз в минуту проверяет "отключенцев".
Сессии закрываются корректно.
#!/bin/sh
#
#exit
#
if [ -s /tmp/vpn.utm ]; then
CUR=`route -n | grep ppp | awk '{print $8}'`
for IF in $CUR; do
if [ -s /var/run/"$IF".pid ]; then
IP=`head -1 /var/run/radattr."$IF" | cut -f2 -d\ `
if [ `cat /tmp/vpn.utm | grep -c "^$IP$"` -ne 0 ]; then
kill -15 `cat /var/run/"$IF".pid`
fi
fi
done
fi
Я про route ничего не говорю. Я говорю о том, что радиус не получает stop accounting. В итоге отчеты по VPN сессиям для таких "оборванных" линков будут глючить. А у тех, у кого ФриРадиус настроен по докам со старого форума (я там выкладывал настройки для поддержки нескольких одновременных VPN на один аккаунт) и у пользователей официального netup_radius (тот, который "модуль коммутируемых соединений") твой скрипт будет глючит еще и потому, что с получением stop accounting пакета радиус связывает удаление занятого адреса из таблицы ip_addr_used. А при наличии адреса в этой таблице радиус не будет его выдавать при повторном подключении.... Что тут непонятно?tariely писал(а):На freeBSD route сам закрывается после обрубания vpn сесии.![]()
А freeRadius не впускает тех кто заблокирован. Так что route здесь лишний )
Я не говорю, что твои скрипты не имеют права на жизнь. У тебя работают - ради Бога. Я просто подчеркиваю, что это не продакшн и не универсальное решение. Например, мне бы оно не подошло по вышеприведенным причинам.