Diferença entre SNAT e Masquerade

39

Estou confuso, qual é a diferença real entre SNAT e Masquerade?

Se eu quiser compartilhar minha conexão com a Internet na rede local, devo selecionar SNAT ou Masquerade?

Chankey Pathak
fonte

Respostas:

41

O SNATdestino exige que você forneça um endereço IP para aplicar a todos os pacotes de saída. O MASQUERADEdestino permite fornecer uma interface, e qualquer endereço nessa interface é o endereço aplicado a todos os pacotes de saída. Além disso, com SNAT, o rastreamento de conexão do kernel mantém o controle de todas as conexões quando a interface é desativada e trazida de volta; o mesmo não se aplica ao MASQUERADEalvo.

Bons documentos incluem os HOWTOs no site Netfilter e a iptablespágina de manual .

Shawn J. Goff
fonte
2
Estou tendo problemas para entender os benefícios do SNAT. Por que importa se o kernel rastreia conexões ou não quando a interface é desativada? Com relação ao MASQUERADE, os documentos do netfilter dizem "Mas, mais importante, se o link cair, as conexões (que agora são perdidas de qualquer maneira) são esquecidas, significando menos falhas quando a conexão volta com um novo endereço IP". Parece razoável (embora quais sejam as falhas?) Agora, olhando para o SNAT, qual é o benefício de rastrear conexões perdidas? Por que não usar o MASQUERADE sempre?
Carl G
1
@CarlG, acho que as falhas ocorreriam nos rastreados permanentemente -j SNAT(em oposição ao rastreamento de reciclagem -j MASQUERADE) quando uma nova conexão de saída de um nó da LAN usa o mesmo número de porta de origem que a conexão de saída cortada do mesmo nó da LAN. Nesse caso, posso imaginar pacotes recebidos da conexão de saída antiga sendo enviados para o nó, confundindo sua pilha TCP. Quanto ao benefício do -j SNAT, e se a caixa NAT estiver configurada com o mesmo endereço IP externo e o kernel continuar encaminhando pacotes de conexões antigas em vez de responder com o RST?
enguia ghEEz
O SNAT é útil, se, por exemplo, você tiver vários endereços IP atribuídos à interface de saída e desejar que a fonte NAT seja um desses.
pgoetz
20

Basicamente SNATe MASQUERADEfazer a mesma coisa fonte NAT na tabela nat dentro da cadeia POSTROUTING.

Diferenças

  • MASQUERADEnão requer --to-source, pois foi criado para funcionar com IPs atribuídos dinamicamente

  • SNAT funciona apenas com IPs estáticos, é por isso que --to-source

  • MASQUERADEpossui sobrecarga extra e é mais lento do que SNATporque cada vez que o MASQUERADEdestino é atingido por um pacote, ele precisa verificar o endereço IP a ser usado.

NOTA : Um caso de uso típico para MASQUERADE: instância do AWS EC2 em uma VPC, possui um IP privado no CIDR da VPC (por exemplo, 10.10.1.0/24) - 10.10.1.100, por exemplo, também possui um IP público para se comunicar com a Internet (suponha que esteja em uma sub-rede pública) através da qual o NAT IP 1: 1 privado. O IP público pode mudar após a reinicialização da instância (se NÃO for um EIP), MASQUERADEé uma opção melhor nesse caso de uso.

Importante: Ainda é possível usar o MASQUERADEdestino com IP estático, apenas esteja ciente da sobrecarga extra.

Referências

Terry Wang
fonte