g00dwin 0 Posted 2007-02-01 07:46:10 Share Posted 2007-02-01 07:46:10 ОС Linux Mandrake Связка Squid 2.5.STABLE 6 + Stargazer 2.401.9.7 все хорошо считает ... но есь проблемка: Например у пользователя на счету осталось 2 метра, а он вздумал качать фильмец 700 метровый..... Как обрубить коннект при балансе = 0 и не дать докачать файл??? Link to post Share on other sites
Neelix 33 Posted 2007-02-01 09:41:51 Share Posted 2007-02-01 09:41:51 сделать нормальный OnDisconnect Link to post Share on other sites
g00dwin 0 Posted 2007-02-01 12:16:02 Author Share Posted 2007-02-01 12:16:02 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 запрещает доступ в инет... но докачать файл все равно дает вне зависимости от его размера. Как с этим бороться??? :-/ Link to post Share on other sites
egor2fsys 5 Posted 2007-02-01 12:40:53 Share Posted 2007-02-01 12:40:53 Прозрачный прокси или нет ? Если нет, то после срабатывания дисконекта должен на сторону пользователя закрываться порт прокси. Если не закрывается - смотрите что не выполняется в скрипте. Link to post Share on other sites
g00dwin 0 Posted 2007-02-01 13:14:31 Author Share Posted 2007-02-01 13:14:31 Прокси не прозрачный. Каким образом закрыть этот порт? (я мало че понимаю в правилах iptables). Может подскажите? Link to post Share on other sites
egor2fsys 5 Posted 2007-02-01 16:13:04 Share Posted 2007-02-01 16:13:04 Да по идее дисконект его закрывает. Покажите вывод iptables -n -L Такое чувство что у вас политика ACCEPT на цепочках стоит. Link to post Share on other sites
kroc 0 Posted 2007-02-02 11:13:38 Share Posted 2007-02-02 11:13:38 Существует такая же проблема. Не пойму откуда ноги растут, но думаю дело не в прокси и скриптах. У меня скрипт дисконект отрабатывает и строчку с которой юзер пускается в интернет типа -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 #---------------------------------------------------------------# Проблему решил, поэтому вопрос снимается. Действительно, утечка была в скрипте при проверке статуса соединения. Переделанный скрипт выложу в том же месте Link to post Share on other sites
egor2fsys 5 Posted 2007-02-02 13:00:18 Share Posted 2007-02-02 13:00:18 Политика по умолчанию цепочки loc2fw какая стоит ? Link to post Share on other sites
kroc 0 Posted 2007-02-05 04:22:43 Share Posted 2007-02-05 04:22:43 политики стоят DROP $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP Link to post Share on other sites
egor2fsys 5 Posted 2007-02-05 07:15:47 Share Posted 2007-02-05 07:15:47 Тогда при отключении пользователя сразу же возьмите сканер и со стороны пользователя просканируйте порт прокси. Если порт будет открыт, значит ищите проблемы в фаерволе. По идее при политике DROP при удалении правил, разрешающих прохождение пакетов к локальным приложеням по цепочкам INPUT и OUTPUT должны закрываться текущие сессии и не проходить новые. Link to post Share on other sites
g00dwin 0 Posted 2007-02-05 09:10:32 Author Share Posted 2007-02-05 09:10:32 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 Вот так. Вроде так то все правильно на мой вгляд. А докачивать все равно дает. Link to post Share on other sites
egor2fsys 5 Posted 2007-02-05 10:45:42 Share Posted 2007-02-05 10:45:42 Chain INPUT (policy ACCEPT) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT) Политика однако ACCEPT - вот здесь и зарыта собака. Поставьте политику в DROP и посмотрите на эффект. Только не забудьте что после установки политики DROP все что не разрешено - запрещено. Link to post Share on other sites
vop 370 Posted 2007-02-05 11:50:16 Share Posted 2007-02-05 11:50:16 iptables -n -L :Где 192.168.15.243 - ip адрес клиента .... Попробую угадать - сквид стоит на этом же сервере? Ну тогда будет продолжать качать, цепи INPUT OUTPUT открыты кому попало Надо менять полиси по умолчанию. Link to post Share on other sites
kroc 0 Posted 2007-02-05 11:54:52 Share Posted 2007-02-05 11:54:52 Тогда при отключении пользователя сразу же возьмите сканер и со стороны пользователя просканируйте порт прокси. Если порт будет открыт, значит ищите проблемы в фаерволе. По идее при политике DROP при удалении правил, разрешающих прохождение пакетов к локальным приложеням по цепочкам INPUT и OUTPUT должны закрываться текущие сессии и не проходить новые. после окончания средств на счете пользователя сервак на порту 3128 с его машины перестал пинговаться. Вроде все как и положено. Только в это время качался файлик 6 метров. Файл благополучно докочался при удаленном правиле.Пинги после дисконекта не шли - файл качался. Уже говорил что никуда не пускает и все замечательно , за исключением того что файл продолжал качаться. (Жаль не 6 гигов) Политики все DROP. Может кто подскажет что за хрень такая Link to post Share on other sites
g00dwin 0 Posted 2007-02-05 13:13:56 Author Share Posted 2007-02-05 13:13:56 ВСЕМ СПАСИБО! У меня все заработало и при нулевом балансе начало отрубать клиентов! вот решение проблемы (на моем серваке): 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 Если будут вопросы обращайтесь)). Link to post Share on other sites
g00dwin 0 Posted 2007-02-05 13:17:26 Author Share Posted 2007-02-05 13:17:26 P.S. Не только отрубать но и не давать докачивать файлы если клиент уполз в минуса))) Link to post Share on other sites
kroc 0 Posted 2007-02-06 06:03:00 Share Posted 2007-02-06 06:03:00 ->g00dwinu Зачем включаешь доступ на порт 3128 в цепочки OUTPUT и FORWARD ? надо втыкать только в INPUT. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now