Насчёт проверки депозита. Исправил скрипт
#!/bin/sh
export CDATE=$(date "+%Y-%m-%d_%H:%M:%S")
IP_PPTP=${PPP_REMOTE}
UNAME=`/usr/bin/radwho|grep ${IP_PPTP}|awk '{print $2}'|head -n 1`
USERBALANCE=$( /usr/bin/mysql -uroot -pcjhjhz -B abills -e \
"SELECT SUM(users.credit + bills.deposit) FROM users \
INNER JOIN bills ON (users.uid=bills.uid) \
WHERE users.id='$UNAME'" | /usr/bin/tail -n 1 )
iptables -t nat -I PREROUTING -s ${IP_PPTP} -j RETURN
iptables -D FORWARD -s ${IP_PPTP} -d 0/0 -j DROP
iptables -D FORWARD -s 0/0 -d ${IP_PPTP} -j DROP
iptables -t nat -D PREROUTING -s ${IP_PPTP} -p tcp -m multiport --dport 80,81,82,8080,3128,443 -j DNAT --to-destination x.x.x.x:81
if [ "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] $UNAME [${IP_PPTP}] add rules (negative deposit $USERBALANCE)" >> /var/log/no_money.log
iptables -t nat -D PREROUTING -s ${IP_PPTP} -j RETURN
iptables -t nat -D PREROUTING -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
iptables -t nat -I PREROUTING -s ${IP_PPTP} -p tcp -m multiport --dport 80,81,82,8080,3128,443 -j DNAT --to-destination x.x.x.x:81
else
echo "$CDATE User [$1] $UNAME [${IP_PPTP}] logged in (deposit: $USERBALANCE)" >> /var/log/no_money.log
fi
fi
По поводу ограничения в 2 Гб. Никто не пробовал через Octets-Direction ограничить только исходящий трафик? Там по дефолту суммарный.