Собрал такой скрипт, думаю пригодится многим, положил его в /etc/ppp/ip-up.d/, в кредит клиентам добавил по копейке, теперь с нулевым балансом клиенты подключаются, но инета у них нет, а при открытиии любой страницы его перенапрвляют на определённую страницу, в моём случае она на 81 порту.
#!/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) \
WHERE users.id='$UNAME'" | /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
iptables -t nat -D PREROUTING -s ${IP_PPTP} ! -d 10.0.0.1/32 -p tcp -m multiport --dport 80,81,82,8080,3128,443 -j DNAT --to-destination 10.0.0.1:81
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} ! -d 10.0.0.1/32 -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
В /etc/ppp/ip-down.d/ лежит скрипт который удаляет добавленные правила.
#!/bin/sh
IF_PPTP=${PPP_IFACE}
IP_PPTP=${PPP_REMOTE}
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 -D PREROUTING -s ${IP_PPTP} ! -d 10.0.0.0/32 -p tcp -m multiport --dport 80,81,82,8080,3128,443 -j DNAT --to-destination 10.0.0.1:81
done