У себя делал так:
веб-морда которая добавляет-убирает правила в фаервол, и заодно кладет в mysql айпишник пользователя.
потом в squid.conf:
external_acl_type get_username children=20 ttl=0 negative_ttl=0 %SRC php /lalafa/squid.phphttp_access allow local1 uname
где local1 одна из моих подсетей.
squid.php:
....
$f=fopen('php://stdin' , 'r');
while($ip = fgets($f, 50))
{
$query="select from users where ip='".$ip."'";
......
if($good==1)
{
echo "OK user=".$user."\n";
}
else
{
echo "ERR\n";
}
}
сквид будет или пускать в инет и писать в лог вместо айпишника(или вместе с айпишником, смотреть ломает) имя пользователя, что будет в строке OK user=lalafa или вообще не будет пускать в инет говоря access denied, если будет ERR сказано ему.