Вы можете перенаправить весь исходящий HTTP-трафик на squid. Сквид должен работать в прозрачном режиме
# iptables -t nat -I OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
Но вы не можете определить, от какого пользователя был трафик. Но вы можете попробовать запустить squid на нескольких портах, каждый для определенного пользователя
http_port 127.0.0.1:3128 transparent
http_port 127.0.0.1:3129 transparent
http_port 127.0.0.1:3130 transparent
, а затем перенаправить исходящий трафик на конкретный порт
# iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner --uid-owner apache -j DNAT --to-destination 127.0.0.1:3128
# iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner --uid-owner joe -j DNAT --to-destination 127.0.0.1:3129
# iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner --uid-owner jack -j DNAT --to-destination 127.0.0.1:3130
и использовать lp в формате журнала squid
logformat uniq_user %lp %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
. Я получаю сообщение много 403 ошибок в файле журнала. Я добавил IP-адрес сервера к звонку, но это не сработало. Я думаю, что запрос в любом случае закончится бесконечным циклом
вам нужно обойти все запросы от самого squid
# iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner --uid-owner squid -j ACCEPT
Я предположил, что ваш экземпляр squid работает под squid: squid,