Por que o aliasing de portas do iptables funciona apenas com uma única regra?

0

Eu tenho um serviço em execução em uma porta específica, mas para torná-lo acessível através de uma porta mais memorável, além da porta normal, adicionei uma regra iptables que funciona como um alias de porta:

iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 5555 -j REDIRECT --to-ports [configured port]

Talvez eu tenha sido um pouco ingênuo, mas na verdade comecei adicionando uma segunda regra em POSTROUTING que remapeava a porta de origem TCP para ser a porta com alias no tráfego de saída. No entanto, acontece que eu não precisei dessa regra. Então, minha pergunta é: por que funciona usando apenas uma única regra?

O cliente faz a conexão ao host: alias port. Como não há regra no iptables para remapear a porta de origem do tráfego de saída deste serviço, ele receberia uma resposta do host, mas com uma porta de origem diferente. Isso não causaria problemas de mapeamento de conversas TCP com o cliente? Com isso, o cliente está esperando uma resposta do host: alias port, mas em vez disso (teoricamente) obterá uma resposta do host: real port. E como o tráfego não seria considerado "relacionado", ele nem deveria passar por um NAT ou outro firewall com monitoração de estado - e ainda sim. Existe alguma mágica que acontece no iptables que vê a regra de pré-lançamento de entrada e então ajusta automaticamente o tráfego de saída para esta regra também?

    
por Chuck R 31.10.2014 / 19:37

1 resposta

2

REDIRECT target é um caso especial de DNAT target, usado como uma conveniência. Veja a documentação do netfilter , e este formulário de resposta unix StackExchange .

Os alvos DNAT estão mudando o primeiro pacote, mas também todos os pacotes futuros da mesma conexão, é por isso que uma regra é suficiente. De man iptables (veja a seção com extensões de destino, dnat):

all future packets in this connection will also be mangled

Observação: os destinos DNAT e REDIRECT são válidos apenas em nat table, chains PREROUTING e OUTPUT .

    
por 02.11.2014 / 13:37