Por que o SNAT acontece na cadeia POSTROUTING e no DNAT na cadeia PREROUTING?

5

Por que o SNAT (modifica o IP e / ou as portas de origem) ocorre em nat table POSTROUTING chain, ou seja, após o roteamento? E por que DNAT (modifica portas ou portas de IP de destino) ocorre em PREROUTING chain? Eu acho que último é porque pode haver várias placas de rede no PC com diferentes redes privadas e PC não sabe como rotear o pacote se o endereço IP de destino ainda é endereço publicamente roteável? No entanto, para SNAT , não consigo ver uma razão pela qual isso não tenha ocorrido em PREROUTING .

    
por Martin 30.04.2016 / 00:34

3 respostas

2

Normalmente, o principal critério para o SNAT é "tráfego que está saindo de uma determinada interface" (por exemplo, -o eth0 ). Qual interface um pacote vai sair é determinada pelo roteamento, então para aplicar esse critério você precisa executá-lo em um contexto POSTROUTING .

O DNAT reescreve o endereço de destino de um pacote, o que significa que ele pode afetar para onde um pacote vai - por exemplo, um pacote que parece ter sido destinado ao gateway pode ser reescrito para ir para uma máquina na rede. Como você deseja que o roteamento considere o destino reescrito ao tomar sua decisão, de modo que o pacote realmente vá para onde ele precisa, o DNAT deve ser executado em um contexto PREROUTING .

    
por 30.04.2016 / 05:08
4

Tenho certeza que qualquer coisa vinda da máquina local nunca passará pela tabela PREROUTING , como pode ser visto nesta incrível figura ASCII .

    
por 30.04.2016 / 01:25
2

Como os nomes das cadeias sugerem, PREROUTING é feito primeiro quando um pacote é recebido e, portanto, é roteado com base em onde está indo (destino). Depois que todas as outras regras de roteamento tiverem sido aplicadas, a corrente POSTROUTING determinará para onde é baseada, de onde veio (fonte).

Por exemplo, no meu servidor, as portas de entrada que devem ser encaminhadas (NATed) são todas definidas na PREROUTING chain como DNAT e todos os pacotes que vêm das interfaces NAT passam pelo POSTROUTING cadeia como SNAT e, consequentemente (neste caso), passar pelo filtro FORWARD cadeia.

    
por 30.04.2016 / 01:49