Удалось настроить прозрачный прокси следующим способом.
/etc/sysctl.conf
net.ipv4.ip_forward = 1
iptables -t nat -A PREROUTING -s 192.168.0.1 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128
iptables -t nat -A POSTROUTING -j MASQUERADE
Порт 80 перенаправляется на Squid3, все остальное мимо.
/etc/squid3/squid.conf
http_port 3128 transparent
acl admin arp 01:02:03:04:05:06 # mac адрес компьютера admin
acl comp1 arp 01:02:03:04:05:07 # mac адрес компьютера comp1
acl comp2 arp 01:02:03:04:05:08 # mac адрес компьютера comp2
acl wlall url_regex "/etc/squid3/wlall" # список белых сайтов для всех
acl comp1 url_regex "/etc/squid3/wlcomp1" # список белых сайтов для comp1
acl comp2 url_regex "/etc/squid3/wlcomp2" # список белых сайтов для comp2
http_access allow admin # разрешить admin все
http_access allow comp1 wlall # разрешить comp1 список wlall
http_access allow comp1 wlcomp1 # разрешить comp1 список wlcomp1
http_access allow comp2 wlall # разрешить comp2 список wlall
http_access allow comp2 wlcomp2 # разрешить comp2 список wlcomp2
http_access deny all
Из браузеров пускает только по mac адресу компьютера
и только на те сайты, которые записаны в списке.
Все остальное (аськи, почтовики, клиент-банки и др.) ходит без ограничений.
Для определенных раскладов то что нужно.
Но в некоторых случаях хотелось бы закрыть все порты,
а открыть только 80, 25, 110, 465 и т.д.
Как сделать не пойму.