Usando o netfilter do Linux para refletir os pacotes

2

Eu tenho um par de hosts com muito mau roteamento entre os dois, mas eu tenho um terceiro host que tem ping muito bom para cada um. Para contornar o mau roteamento, estou configurando o terceiro host para rejeitar pacotes entre os dois.

Este terceiro host tem um endereço IP que não é usado para mais nada. Minha configuração ideal seria, quando o host 1 envia um pacote para o host 3, o host 3 autentica automaticamente os endereços de origem e destino, substituindo source = host3 e destination = host2, e encaminha o pacote.

O inverso deve ser verdadeiro: Se o host2 tentar responder, o pacote deve retornar ao host3, que retornará para source = host3, destination = host1. Nenhum acompanhamento de conexão é necessário - isso pode ser feito totalmente sem estado.

Onde estou preso, estou conseguindo que tanto o DNAT quanto o SNAT funcionem ao mesmo tempo. Parece que, se um pacote é tratado pelo DNAT, ele é marcado automaticamente para ignorar as regras do SNAT: o DNAT funciona bem, mas o endereço de origem não está sendo traduzido.

Qual é a configuração adequada do iptables para conseguir isso?

    
por CFSworks 14.09.2013 / 01:17

1 resposta

0

O comportamento estranho foi devido ao CONNTRACK. O SNAT e o DNAT de fato funcionam bem juntos se nada mais atrapalhar.

Além disso, configurei apenas o SNAT e o DNAT em uma direção. Como há tráfego constantemente passando, a tradução reversa automática do SNAT e da DNAT cuida do caminho de retorno para mim.

    
por 14.09.2013 / 18:09