Qual é a diferença entre um NAT de origem, um NAT de destino e um mascaramento?

48

Qual é a diferença entre um NAT de origem, um NAT de destino e um mascaramento?

Por exemplo, eu pensei que o Masqurading de IP era o que costumavam chamar no Linux? Mas o que me confunde é que em nosso firewall Astaro existem IP Masquarading e opções NAT. Qual a diferença entre tudo isso?

Matt
fonte
No caso você está se perguntando por Sophos a precedência é DNAT, SNAT, Masquerading
lmf

Respostas:

71

O NAT de origem altera o endereço de origem no cabeçalho IP de um pacote. Também pode alterar a porta de origem nos cabeçalhos TCP / UDP. O uso típico é alterar o endereço / porta privada (rfc1918) em um endereço / porta pública para pacotes que saem da sua rede.

O NAT de destino altera o endereço de destino no cabeçalho IP de um pacote. Também pode alterar a porta de destino nos cabeçalhos TCP / UDP. O uso típico disso é redirecionar pacotes recebidos com um destino de um endereço / porta público para um endereço IP / porta privado dentro da sua rede.

Mascaramento é uma forma especial de NAT de origem, onde o endereço de origem é desconhecido no momento em que a regra é adicionada às tabelas no kernel. Se você deseja permitir que hosts com endereço privado atrás do firewall acessem a Internet e o endereço externo seja variável (DHCP), é isso que você precisa usar. O disfarce modificará o endereço IP de origem e a porta do pacote para que seja o endereço IP primário atribuído à interface de saída. Se sua interface de saída tiver um endereço estático, você não precisará usar o MASQ e poderá usar o SNAT, que será um pouco mais rápido, pois não precisa descobrir qual é o IP externo todas as vezes.

Zoredache
fonte
Obrigado, isso explica muito bem. Portanto, o source nat e provavelmente o mascaramento também são equivalentes à palavra-chave nat no ipf do freebsd, enquanto o destino nat é equivalente à palavra-chave rdr no ipf.
Matt
Acabei de descobrir que, para o freebsd, o mascaramento é tratado por uma regra como map ppp0 10.0.0.0/8 -> 0/32 (onde o 0/32 indica um ip dinâmico).
Matt