Перейти до

Проблемка


Рекомендованные сообщения

ОС Linux Mandrake

Связка Squid 2.5.STABLE 6 + Stargazer 2.401.9.7

все хорошо считает ... но есь проблемка:

Например у пользователя на счету осталось 2 метра, а он вздумал качать фильмец 700 метровый..... Как обрубить коннект при балансе = 0 и не дать докачать файл???

Ссылка на сообщение
Поделиться на других сайтах

OnDisconnect

 

#!/bin/bash

user=$1
ip=$2
eth=eth1
eth_local=eth0
mir=80.80.80.2 

iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null
done

iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null
done

iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null
done

iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null
done

iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null
while [ $? -eq 0 ]
do
  iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null
done

iptables -I FORWARD -i $eth_local -s $ip -j DROP > /dev/null
iptables -I FORWARD -o $eth_local -d $ip -j DROP > /dev/null

echo $2 >> /var/stargazer/squid/squid_d
/etc/stargazer/disconnect
/usr/sbin/squid -k reconfigure

 

Файл squid_d служит для выполнения скрипта disconnect, который удаляет из файла /var/stargazer/squid/squid ip адрес пользователя, у которого баланс в минуса ушел.

после этого squid запрещает доступ в инет... но докачать файл все равно дает вне зависимости от его размера.

Как с этим бороться??? :-/

Ссылка на сообщение
Поделиться на других сайтах

Прозрачный прокси или нет ?

Если нет, то после срабатывания дисконекта должен на сторону пользователя закрываться порт прокси. Если не закрывается - смотрите что не выполняется в скрипте.

Ссылка на сообщение
Поделиться на других сайтах

Существует такая же проблема.

Не пойму откуда ноги растут, но думаю дело не в прокси и скриптах.

У меня скрипт дисконект отрабатывает и строчку с которой юзер пускается в интернет типа

-A loc2fw -s 192.168.1.224 -d 192.168.1.8 -p tcp -m state --state NEW -m tcp --dport 3128 -m mac --mac-source 00:A0:C9:3E:40:C8 -j ACCEPT

удаляет точно.

Но установленное соединение не рвется, как качал файлик 50 мегов так и продолжил качать, хотя денег дал на 2 мега.

Новые соединения не происходят как и должно быть. Обновить страничку не получится.

но вот почему старые , уже установленные соединения не прерываются - вопрос.

И при чем тут сквид я не понимаю , когда доступ рубится айпитаблами.

 

скрипт лежит на форуме \\ http://local.com.ua/forum/index.php?showtopic=2020

 

#---------------------------------------------------------------#

 

Проблему решил, поэтому вопрос снимается.

Действительно, утечка была в скрипте при проверке статуса соединения.

Переделанный скрипт выложу в том же месте

Ссылка на сообщение
Поделиться на других сайтах

Тогда при отключении пользователя сразу же возьмите сканер и со стороны пользователя просканируйте порт прокси. Если порт будет открыт, значит ищите проблемы в фаерволе. По идее при политике DROP при удалении правил, разрешающих прохождение пакетов к локальным приложеням по цепочкам INPUT и OUTPUT должны закрываться текущие сессии и не проходить новые.

Ссылка на сообщение
Поделиться на других сайтах

iptables -n -L :

Где 192.168.15.243 - ip адрес клиента

Случай когда у клиента есь на счете деньги:

Chain INPUT (policy ACCEPT)
target          prot   opt  source                destination
ACCEPT     all      --    192.168.15.243   0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target          prot   opt  source                destination
ACCEPT     all      --    192.168.15.243   0.0.0.0/0
ACCEPT     all      --     0.0.0.0/0             192.168.15.243

Chain OUTPUT (policy ACCEPT)
target          prot   opt  source                destination
ACCEPT     all      --    0.0.0.0/0              192.168.15.243

 

Случай когда у клиента кончились деньги на счете:

 

Chain INPUT (policy ACCEPT)
target          prot   opt  source                destination

Chain FORWARD (policy ACCEPT)
target          prot   opt  source                destination
DROP     all      --     0.0.0.0/0             192.168.15.243
DROP     all      --    192.168.15.243   0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target          prot   opt  source                destination

Вот так. Вроде так то все правильно на мой вгляд.

А докачивать все равно дает.

Ссылка на сообщение
Поделиться на других сайтах

Chain INPUT (policy ACCEPT)

Chain FORWARD (policy ACCEPT)

Chain OUTPUT (policy ACCEPT)

 

Политика однако ACCEPT - вот здесь и зарыта собака. Поставьте политику в DROP и посмотрите на эффект. Только не забудьте что после установки политики DROP все что не разрешено - запрещено.

Ссылка на сообщение
Поделиться на других сайтах
iptables -n -L :

Где 192.168.15.243 - ip адрес клиента

....

Попробую угадать - сквид стоит на этом же сервере? Ну тогда будет продолжать качать, цепи INPUT OUTPUT открыты кому попало :) Надо менять полиси по умолчанию.

Ссылка на сообщение
Поделиться на других сайтах
Тогда при отключении пользователя сразу же возьмите сканер и со стороны пользователя просканируйте порт прокси. Если порт будет открыт, значит ищите проблемы в фаерволе. По идее при политике DROP при удалении правил, разрешающих прохождение пакетов к локальным приложеням по цепочкам INPUT и OUTPUT должны закрываться текущие сессии и не проходить новые.

после окончания средств на счете пользователя сервак на порту 3128 с его машины перестал пинговаться.

Вроде все как и положено.

Только в это время качался файлик 6 метров.

Файл благополучно докочался при удаленном правиле.Пинги после дисконекта не шли - файл качался.

Уже говорил что никуда не пускает и все замечательно , за исключением того что файл продолжал качаться. (Жаль не 6 гигов)

Политики все DROP.

Может кто подскажет что за хрень такая

Ссылка на сообщение
Поделиться на других сайтах

ВСЕМ СПАСИБО! У меня все заработало и при нулевом балансе начало отрубать клиентов!

вот решение проблемы (на моем серваке):

 

Server (Squid + Stargazer 2.401.9.7) OS Linux

(две сетевухи)

внутренний адрес 192.168.15.251

внешний адрес (инет) 80.80.80.2

 

Client

192.168.15.5 - Client (Windows NT)

192.168.15.243 - Client (Windows NT)

............. и т.д

 

OnConnect

#!/bin/bash
# Login

user=$1
ip=$2
cash=$3
eth=eth1
eth_local=eth0
mir=80.80.80.2

iptables -t filter -A INPUT   -s $ip -j ACCEPT > /dev/null
iptables -t filter -A FORWARD -s $ip -j ACCEPT > /dev/null
iptables -t filter -A FORWARD -d $ip -j ACCEPT > /dev/null
iptables -t filter -A OUTPUT  -d $ip -j ACCEPT > /dev/null

iptables -D FORWARD -i $eth_local -s $ip -j DROP > /dev/null
while [ $? -eq 0 ]
do
  iptables -D FORWARD -i $eth_local -s $ip -j DROP > /dev/null
done

iptables -D FORWARD -o $eth_local -d $ip -j DROP > /dev/null
while [ $? -eq 0 ]
do
  iptables -D FORWARD -o $eth_local -d $ip -j DROP > /dev/null
done

iptables -t nat -A POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null

iptables -A INPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT
iptables -A OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT
iptables -A FORWARD -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT

iptables -D INPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP
iptables -D OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP
iptables -D FORWARD -s $ip -p tcp -m multiport --dport 3128 -j DROP

echo $2 >> /var/stargazer/squid/squid
/usr/sbin/squid -k reconfigure

 

OnDisconnect

 

#!/bin/bash

user=$1
ip=$2
eth=eth1
eth_local=eth0
mir=80.80.80.2

iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D INPUT -s $ip -j ACCEPT > /dev/null
done

iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D FORWARD -s $ip -j ACCEPT > /dev/null
done

iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D FORWARD -d $ip -j ACCEPT > /dev/null
done

iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null
while [ $? -eq 0 ]
do
  iptables -t filter -D OUTPUT -d $ip -j ACCEPT > /dev/null
done

iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null
while [ $? -eq 0 ]
do
  iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null
done

#iptables -P INPUT DROP
#iptables -P FORWARD DROP
#iptables -P OUTPUT DROP

iptables -I FORWARD -i $eth_local -s $ip -j DROP > /dev/null
iptables -I FORWARD -o $eth_local -d $ip -j DROP > /dev/null

iptables -A INPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP
iptables -A OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j DROP
iptables -A FORWARD -s $ip -p tcp -m multiport --dport 3128 -j DROP

iptables -D INPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT
iptables -D OUTPUT -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT
iptables -D FORWARD -s $ip -p tcp -m multiport --dport 3128 -j ACCEPT

echo $2 >> /var/stargazer/squid/squid_d
/etc/stargazer/disconnect
/usr/sbin/squid -k reconfigure

 

Политика iptables по умолчанию

 

$IPTABLES -P INPUT ACCEPT

$IPTABLES -P FORWARD ACCEPT

$IPTABLES -P OUTPUT ACCEPT

 

 

:)

 

Если будут вопросы обращайтесь)).

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...