LINUX.ORG.RU
ФорумAdmin

Напоминалка об оплате, FreeBSD, IPFW, Forward


0

0

Привет!

Возможно кто-нибудь сталкивался с похожей ситуацией и поделится опытом.

Есть домашняя сеть, больше правда похоже на мелкого провайдера, роутеры обслуживающие подсети на FreeBSD, шейпинг с помошью ipfw.

Проблема:

В начале месяца, происходит отключение интернета пользователям забывшим внести плату. И в саппорт лавина звонков типа: "А почему у меня любимый порносайт не открывается?!", "А у меня турнир по контре, почему не гамается?!" Да, юзвери банально забывают платить (

Частичное решение:

Отключённым пользователям при попытке запросить что-то с 80, 20, 21 и тд. портов выкидывается html страничка с просьбой заплатить. То есть в конце цепочки, докуда доходят только не пропущенные прежде пакеты стоит что-то вроде

fwd 127.0.0.1,$port tcp from $subnet/24 to any dst-port 20,21,80 via $LIF in

Практика показала, что для "домохозяек" это то что надо :)

Но этого всё же мало (

Пока хочется, например за 5 дней до срока отключения, показывать юзверям напоминалку, тем же способом что и просьбу об оплате. Только показывать её *один* раз в день, при первом запросе, например. Нужно как-то считать показы для каждого юзверя, эта-то часть и в разработке.

Разные идеи, вэлкам :)


Ответ на: комментарий от grad

grad, спасибо за дельный ответ.

>>>Это где в Кишинёве такая сетка? %)

Такая это какая? :)

В принципе так и будет, отключение не сразу после 1 числа.

>>> С этой задачей легко справится скриптик на том же Перле, который после показа пользователю странички изменяет правило пакетного фильтра, разрешая этому пользователю выходить в интернет.

Вот что-то с "легко" и проблемы :) Как точно отловить что показ произошёл? Единственно что у меня есть это каунтеры для правила, сколько байт прошло (страничка должна быть показана только 1 раз), и вообще получается надо будет изначально создавать доп. правило для каждого пользователя, а потом скриптом удалать его, получается нехилая манипуляция правилами, что тут простого...

Den0k
() автор топика
Ответ на: комментарий от Den0k

Вот конкретная мысль:

Скажем, за несколько дней до отключения с 08:00 каждому пользователю будет создаваться правило с forward на напоминалку, пока юзер не посмотрел её, счётчики у этого правила по нулям, получается нужен скрипт всё время проверяющий эти счётчики и отменяющий forward если они > 0

Покритикуйте идею?

З.Ы. ушёл на LinuxFest :)

Den0k
() автор топика
Ответ на: комментарий от Den0k

>Как точно отловить что показ произошёл?

Единственный кто знает, что показ произошел, это тот, кто генерировал страничку. Лично бы я это сделал так:

1. Раз в N дней запускается скрипт, который генерирует нужные правила файрвола. Которые перенаправляют port 80 на локальный lighthttpd.
2. С помощью модуля либо mod_redirect, либо mod_rewrite (но тогда не будет информации об источнике) перенаправляем запрос на (Fast)CGI скрипт-напоминалку.
3. На последнем этапе работы скрипта стираем правило файрвола.
4. В случае mod_redirect через n секунд еще раз редиректим на настоящий источник. Эти заморочки уже внутри html файла.

Macil ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.