Você não precisa de --uid-owner
em PREROUTING
, precisa em OUTPUT
(como no seu exemplo).
Estou no processo de adicionar algum controle parental à minha caixa (filtragem de http).
A caixa é usada por toda a família (uma conta para cada membro) e o squid é executado na mesma máquina.
Eu tenho duas instâncias do squid, uma (para adultos) apenas para cache, uma (para crianças) usando o squidGuard.
Para escolher entre as duas instâncias do squid, eu uso --uid-owner
com as regras NAT.
iptables -t nat -A OUTPUT -m owner --uid-owner $owner -p tcp -m tcp --dport 80 -j REDIRECT --to-ports $port
(idem para ip6tables)
Atualmente eu uso NAT para IPv4 e IPv6 (com um kernel linux bastante recente), mas o Squid diz que "interceptar" suporta apenas IPv4. Eu gostaria de ter o IPv6 também.
Eu tentei usar o TPROXY (por exemplo, usando estes regras) mas falhei porque preciso de --uid-owner
que o iptables quer definir em POSTROUTING (não em PREROUTING).
Essas regras são:
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129
Como adiciono as regras --uid-owner
apropriadas nessa tabela de mangle? Quero dizer, como decido encaminhar para a porta 3128 ou 3129?
Editar: por favor, não responda dizendo que minha regra NAT funciona bem. Eu sei disso. Eu preciso me livrar do NAT porque o NAT do Squid é apenas IPv4. Então, por favor, novamente, não NAT. Apenas TPROXY ou mangle ou o que você chama que funciona com as regras mangle
acima.
Você não precisa de --uid-owner
em PREROUTING
, precisa em OUTPUT
(como no seu exemplo).
Tags ipv6 proxy squid http-proxy