Установка, настройка, поддержка
anstep
Сообщения: 21 Зарегистрирован: Сб фев 13, 2010 12:48 pm
Сообщение
anstep » Чт фев 03, 2011 11:29 am
Доброго времени суток.
Положил такой скрипт в /etc/ppp/ip-up.d/ для проверки депозита, но проверяется не у всех клиентов, даже в no_money.log не всех пишет. У клиентов на депозите 0.01. Подскажите где искать проблему.
Код: Выделить всё
#!/bin/sh
export CDATE=$(date "+%Y-%m-%d_%H:%M:%S")
FILTERS=`/usr/bin/awk '/Filter-Id/ {print $2}' /var/run/radattr.$1`
IP_PPTP=${PPP_REMOTE}
IF_PPTP=${PPP_IFACE}
UNAME=`/usr/bin/radwho|grep ${IP_PPTP}|awk '{print $2}'|head -n 1`
USERBALANCE=$( /usr/bin/mysql -uroot -p111111 -B abills -e \
"SELECT SUM(users.credit + bills.deposit) FROM users \
INNER JOIN bills ON (users.uid=bills.uid) \
INNER JOIN dv_main ON (dv_main.uid=users.uid) \
WHERE users.id='$UNAME' AND dv_main.tp_id!=1" | /usr/bin/tail -n 1 )
iptables -A FORWARD -i ${IF_PPTP} -o eth3 -s ${IP_PPTP} -j ACCEPT
iptables -A FORWARD -i eth3 -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
if [ "$FILTERS" = "no_money" ]; then
echo "$CDATE User [$1] $FILTERS / $UNAME (${IP_PPTP}) add rules (no_money filter)" >> /var/log/no_money.log
elif [ "x$USERBALANCE" != "x" ] && [ "x$USERBALANCE" != "xNULL" ]; then
echo "$CDATE $UNAME $USERBALANCE negative" >> /var/log/no_money.log
if [ "x$( /usr/bin/awk 'BEGIN { if('$USERBALANCE'<=0.1) print("NEGATIVE") }' )" = "xNEGATIVE" ]; then
echo "$CDATE User [$1] $FILTERS / $UNAME [${IP_PPTP}] add rules (negative deposit $USERBALANCE)" >> /var/log/no_money.log
iptables -D FORWARD -i ${IF_PPTP} -o eth3 -s ${IP_PPTP} -j ACCEPT
iptables -D FORWARD -i eth3 -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -s ${IP_PPTP} -p tcp -m multiport --dport 80,81,82,8080,3128,443 -j DNAT --to-destination 10.0.0.1:81
else
echo "$CDATE User [$1] $FILTERS / $UNAME [${IP_PPTP}] logged in (deposit: $USERBALANCE)" >> /var/log/no_money.log
fi
fi
anstep
Сообщения: 21 Зарегистрирован: Сб фев 13, 2010 12:48 pm
Сообщение
anstep » Чт фев 03, 2011 11:47 pm
убрал соответствие в таблице dv_main, проблема отпала
triton4ik
Сообщения: 95 Зарегистрирован: Ср июн 23, 2010 4:41 pm
Откуда: г. Раздельная
Контактная информация:
Сообщение
triton4ik » Вт июн 14, 2011 3:57 pm
так собственно вот чего Вам не хватает:
Нужно создать цепочку проверки
например назовем ее NO_MONEY в основном скрипте айпитейлс в системе
например вот так (Для примера возьмем сеть 192.168.1.0 с маской 255.255.255.0
iptables -t nat -N NO_MONEY
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j NO_MONEY
iptables -t nat -A NO_MONEY -p tcp -m multiport --dports 80,443 -j REDIRECT --to-ports 8080
Далее нам требуется добавить правила уже в ip-up это в случае если не нужно перенаправлять на страницу заглушку
iptables -t nat -D NO_MONEY -s ${IP_PPTP} -j RETURN
iptables -I FORWARD -s %IP -d 0/0 -j ACCEPT
iptables -I FORWARD -s 0/0 -d ${IP_PPTP} -j ACCEPT
а это в случае если нужно вернуть обратно на проверку, так, как если вы не удалите цепочку до до следующей очистки он у Вас не попадет на страницу заглушку при следующем подключении
iptables -t nat -I NO_MONEY -s ${IP_PPTP} -j RETURN
iptables -I FORWARD -s ${IP_PPTP} -d 0/0 -j DROP
iptables -I FORWARD -s 0/0 -d ${IP_PPTP} -j DROP
вот все что Вам нужно, удачи))
triton4ik
Сообщения: 95 Зарегистрирован: Ср июн 23, 2010 4:41 pm
Откуда: г. Раздельная
Контактная информация:
Сообщение
triton4ik » Вт июн 14, 2011 8:02 pm
и эту строчку изменить нужно
UNAME=`/usr/bin/radwho|grep ${IP_PPTP}|awk '{print $2}'|head -n 1`
нужно привести к следующему виду:
UNAME=`/usr/bin/radwho|grep -w ${IP_PPTP}`
NiTr0
Сообщения: 767 Зарегистрирован: Пт фев 08, 2008 4:46 pm
Сообщение
NiTr0 » Ср июн 15, 2011 6:42 pm
А зачем столь зловещие костыли-то изобретать? Фильтры негативного депозита что, не катят?
triton4ik
Сообщения: 95 Зарегистрирован: Ср июн 23, 2010 4:41 pm
Откуда: г. Раздельная
Контактная информация:
Сообщение
triton4ik » Чт июн 16, 2011 10:26 am
NiTr0 писал(а): А зачем столь зловещие костыли-то изобретать? Фильтры негативного депозита что, не катят?
тут было описана проблема не работы, то что я увидел, то и написал где ошибка, я не разбирался че там за велосепед был изобретен