Скрипт управления правилами Firewall:
Код: Выделить всё
#!/bin/sh
y=0
Date=`date`
if [ $1 == "-D" ]
then
echo "$Date Delete $2/$3 - User: $4 ($5)"
while [ 1 ]
do
/sbin/iptables $1 access -d $2/$3 -j ACCEPT 2>/dev/null|| break
/sbin/iptables $1 access -s $2/$3 -j ACCEPT 2>/dev/null|| break
done
while [ $y -lt 10 ]
do
PPP_INT=`/sbin/route -n | /bin/grep "$2 " -m 1 |/usr/bin/awk {'print $8'}`
if [ $PPP_INT ]
then
if [ -f /var/run/$PPP_INT.pid ]
then
PID=`cat /var/run/$PPP_INT.pid`
echo "kill $PPP_INT $PID $2"
/bin/kill -9 $PID
fi
y=`expr $y + 1`
else
break
fi
done
else
echo "$Date Insert $2/$3 - User: $4 ($5)"
/sbin/iptables $1 access -s $2/$3 -j ACCEPT
/sbin/iptables $1 access -d $2/$3 -j ACCEPT
fi
Код: Выделить всё
Включение:
-I UIP UBITS ULOGIN SLINK_ID
Выключение:
-D UIP UBITS ULOGIN SLINK_ID
всегда перед разрешающим правилом выдается запрещающее, при котором PPP-интерфейс сбрасывается.
Скорее всего это происходит из-за того, что используется ранее занятый IP-адрес при изъятии которого у пользователя и выдается запрещающее правило.
Вопрос: что с этим делать? есть пути решения?
Я пока виже только один - по окончании VPN сессии удалять IP-адреса из связок с пользователем, но как это делать корректно не знаю.
Система:
UTM 5.2.1-004
OS: CentOS 4.4
pppd version 2.4.4