Подскажите как правильно сделать:
1) чтоб pptpd под Linux отрубал пользователя во время сессии при превышении лимита скаченного трафика
2) варьировать скоростью подключения клиента по VPN
>Подскажите как правильно сделать:
>1) чтоб pptpd под Linux отрубал пользователя во время сессии при превышении
>лимита скаченного трафикаа откуда он знает что у пользователя есть лимит? И какого именно трафика?
Помоему лучший вариант IPCad и по SNMP (rsh с ключами showipaccounting, grep User_IP) забирать его то что он качал, фильтровать то что надо, смотреть в каком-нибудь MySQL какой у него лимит и писать скрипт на отрубание пользователя.
Короче писать Биллинг.
>2) варьировать скоростью подключения клиента по VPN1)/etc/pppd/chap-secrets или /etc/pppd/pap-secrets (или вру(но точно близко с тем))
2)IPTables
>>Подскажите как правильно сделать:
>>1) чтоб pptpd под Linux отрубал пользователя во время сессии при превышении
>>лимита скаченного трафика
>
>а откуда он знает что у пользователя есть лимит? И какого именно
>трафика?
>Помоему лучший вариант IPCad и по SNMP (rsh с ключами showipaccounting, grep
>User_IP) забирать его то что он качал, фильтровать то что надо,
>смотреть в каком-нибудь MySQL какой у него лимит и писать скрипт
>на отрубание пользователя.
>Короче писать Биллинг.
>>2) варьировать скоростью подключения клиента по VPN
>
>1)/etc/pppd/chap-secrets или /etc/pppd/pap-secrets (или вру(но точно близко с тем))
>2)IPTablesСпасибо за ответ, но меня интересует именно то, о чем я спрашиваю, а не обход данного решения
Точно знаю что решение есть, большое число провайдеров используют VPN
и именно на этом сервере делаю и отключение и shapingНу а если уж затронули IPCad - встречный вопрос чем агрегируете статистику, самописными скриптами?
>1) чтоб pptpd под Linux отрубал пользователя во время сессии при превышении лимита скаченного трафикаРегулярно проверять /proc/net/dev на предмет pppN (Receive или Transmit bytes) и сравнивать с лимитом. При превышении, iptables -A FORWARD -i pppN -j DROP - сам отключится. А как отключится, так и статистика в /proc/net/dev сбросится. Скрипт увидит, что лимит уже не превышен и удалит это правило iptables (для разблокировки следующих сессий). А, что бы вести сводную статистику между сессиями нужно куда-то значения из /proc/net/dev сохранять (в ту же базу, где и лимиты хранятся). Привязка pppN к логину через жестко заданный IP в chap-secrets. Такой скрипт на перле для sqlite делается за пару часов.
(Можно обойтись без iptables. Просто pppN down, но перед этим заблокировать в chap-secrets этот аккаунт)>2) варьировать скоростью подключения клиента по VPN
iproute2 (ip + tc) для конкретных pppN. Управлять из того же скрипта.
(Еще несколько часов работы)Скрипт вызывать раз в минуту.
Поставить radius. Большинство уже поддерживает обрыв ppp сессии по достижении лимита трафика.Насчет ограничения скорости - более сложный вопрос. Зависит от среды где используется (езернет, АДСЛ, чистый канал, проксирование, разрешенные виды трафика, что необходимо ограничивать - скачку или трафик в обе стороны). Короче решения этого вопроса на все случаи жизни не встречал
>Поставить radius.
Стоит Freeradius
>Большинство уже поддерживает обрыв ppp сессии по достижении лимита трафика.
Скорей не radius должен поддерживать, а pppd
так вот и вопрос какой pppd поставить
У меня стоит 2.4.3, с модулем для radius-а, вообщем-то в базу складываются начало и конец сессии, а вот промежуточные значения - нефига
На сколько понимаю pppd во время сесси обменивается keep-alive пакетами с клиентами, и каждый пакет-ответ инициирует съем статистики с интерфейса,
апосля данные передаются radius-у и тот принимает решение продлить сессию или нет>
>
>Насчет ограничения скорости - более сложный вопрос. Зависит от среды где используется
>(езернет, АДСЛ, чистый канал, проксирование, разрешенные виды трафика, что необходимо ограничивать
>- скачку или трафик в обе стороны). Короче решения этого вопроса
>на все случаи жизни не встречал
вообщем Ethernet, думал что при подъеме конкретного pppX интерфейса можно задать ему скорость, но походу только очереди меня спасут
Я уже написал, что используй вызов, например, tbf в /etc/ppp/ip-up, который запускается при поднятии pppN. Ему передаеются параметры, среди которых номер интерфейса (например, ppp1).
>же базу, где и лимиты хранятся). Привязка pppN к логину через
>жестко заданный IP в chap-secrets. Такой скрипт на перле для sqlite
>делается за пару часов.
В chap-secrets можно указать ip для логина. А как привязать логин к pppN?
>В chap-secrets можно указать ip для логина. А как привязать логин к pppN?Мониторить вывод ifconfig на соответствие IP
>Подскажите как правильно сделать:
>1) чтоб pptpd под Linux отрубал пользователя во время сессии при превышении
>лимита скаченного трафика
Поставить, например, netams. Ведет статистику и поддерживает квоты.>2) варьировать скоростью подключения клиента по VPN
Настроить под свои задачи htb. Вставить его вызов (или просто tbf) в /etc/ppp/ip-up.
А никто не знает КАК заставить pptp клиенту при обрыве связи, самому соеденяЦА опять с провайдером.
Спасибо!