Ignorar o Squid Transparente com IPTables

1
Perguntas semelhantes foram feitas antes, mas as respostas recebidas não foram satisfatórias ou não se aplicam à minha situação.

Eu tenho um proxy de squid transparente que filtra todo o http e, para algumas máquinas apenas, o tráfego https da minha rede.Eu consegui isso com as seguintes regras iptables:

  iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
    iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.100 -m tcp --dport 443 -j REDIRECT --to-ports 3127
    iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.101 -m tcp --dport 443 -j REDIRECT --to-ports 3127
    iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.102 -m tcp --dport 443 -j REDIRECT --to-ports 3127

No entanto, gostaria de ignorar o squid para determinados domínios: quando um cliente faz uma solicitação para mydomain.com, ele deve ir diretamente para o gateway da rede.

Eu tentei inserir as seguintes regras ANTES das outras, mencionadas acima.

iptables -t nat -A PREROUTING -i eth0 -d $IP_OF_MYDOMAIN.COM -j DNAT --to-destination $IP_OF_ROUTER
iptables -t nat -A PREROUTING -i eth0 -s $IP_OF_ROUTER -j RETURN

Esta configuração, no entanto, não está funcionando. o que estou perdendo? Existe uma maneira melhor de fazer isso?

editar

A ordem das regras é a seguinte:

        iptables -t nat -A PREROUTING -i eth0 -d $IP_OF_MYDOMAIN.COM -j DNAT --to-destination $IP_OF_ROUTER
        iptables -t nat -A PREROUTING -i eth0 -s $IP_OF_ROUTER -j RETURN
        iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
        iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.100 -m tcp --dport 443 -j REDIRECT --to-ports 3127
        iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.101 -m tcp --dport 443 -j REDIRECT --to-ports 3127
        iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.102 -m tcp --dport 443 -j REDIRECT --to-ports 3127
    
por Aaron Ullal 14.07.2014 / 12:00

1 resposta

2

Se bem entendi, você deseja isentar o tráfego para um determinado endereço IP do redirecionamento forçado. É assim, você está indo pelo caminho errado.

Substitua as duas primeiras linhas na configuração iptables acima por

iptables -t nat -A PREROUTING -d a.b.c.d -j ACCEPT

onde a.b.c.d é o endereço IP para ser isentado do redirecionamento compulsório. Observe que, assim como seu par atual de regras, essa regra precisará ser antes do código de redirecionamento obrigatório.

    
por 14.07.2014 / 15:35