[FUG-BR] [Off-topic] pf não redireciona com route-to
Renato Botelho
rbgarga em gmail.com
Quinta Novembro 6 16:24:05 BRST 2014
> On Nov 6, 2014, at 16:05, spiderslack <spiderslack at yahoo.com.br> wrote:
>
>
>
> >Certo, então na minha opinião você deveria usar uma regra de rdr pra fazer esse redirect, e tem que lembrar de negar o IP do proxy, seria algo mais ou menos assim:
>
>> rdr pass on re1 inet proto tcp from re1:network to ! IP_DO_PROXY port 80 -> IP_DO_PROXY port 80
>
> --
> Obrigado por responder Renato, Mas não funciona o redirecioamento até funciona,porém ele muda o destino do pacote vai com destino ao mara cache e nao ao site o site vai no header htttp
>
> Eu acho que descobri a razão do problema, mas e apenas uma teoria. Imaginemos que um cliente faz um request na porta 80 com destino ao google
>
> O mara cache fica em modo transparente ou seja como o modulo tproxy funciona,
> Quando o request passa pelo meu freebsd com destino ao google e porta de destino a 80 ele usa o "route-to" redireciona para o mara cache porque o destino do pacote NÃO está diretamente conectado.
> O mara cache faz o spoofing do ip do google e fecha o three way handshake com o cliente.
> A partir dai o Mara cache não possuir o objeto em cache abre uma nova conexão para o google para buscar este objeto.
> O mara cache envia um SYN para o google com origem no ip do cliente não no seu proprio IP(isso para quando o pacote voltar com destino ao cliente e não ter um unico ip acessando a internet)
> O google responde com um SYN/ACK para o ip cliente "spoofado" pelo mara cache.
> Quando esse SYN/ACK chega no freeBSD ele possue a regra para o retorno devolver ao mara cache conforme abaixo.
>
> pass in log quick on re0 route-to (alc0 200.1.1.1) proto tcp from any port 80 to $rede_lan
>
> A minha teoria e aqui meu freebsd esta diretamente conectado ao cliente então nao usa o "route-to", o "route-to" somente seria usado para destino não diretamente conectado(estou preparando um ambiente para testar isso, assim que tiver resposta retorno) e o pacote SYN/ACK chega ao cliente(chega porque monitorei via tcpdump).
> E o cliente recebe um pacote fora de contexto/ordem tipo ele anteriormente fechou o three way handshake com o google spoofado pelo mara cache e ai chega outro SYN/ACK ai ele Reseta a conexão.
>
> Tudo que eu descrevi acima eu constatei olhando os logs do tcpdump. E na interface onde esta o proxy mara cache vejo varios pacotes SYN saindo e os SYN/ACK indo direto para o cliente.
>
> Nao uso o rdr porque não tenho nat nesse freebsd somente ip's válidos. Se alguém tiver alguma dica ou passou por algo parecido desde já agradeço.
Não tinha me ligado que vc tava usando TPROXY, falha minha. Essa fico devendo pq nunca pus a mão.
--
Renato Botelho
Mais detalhes sobre a lista de discussão freebsd