tproxy por usuário

4

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.

    
por cadrian 20.05.2013 / 17:03

1 resposta

2

Você não precisa de --uid-owner em PREROUTING , precisa em OUTPUT (como no seu exemplo).

    
por 20.05.2013 / 17:19