Diferencia entre SNAT y Masquerade

39

Estoy confundido, ¿cuál es la diferencia real entre SNAT y Masquerade?

Si quiero compartir mi conexión a Internet en la red local, ¿debería seleccionar SNAT o Masquerade?

Chankey Pathak
fuente

Respuestas:

41

El SNATobjetivo requiere que le dé una dirección IP para que se aplique a todos los paquetes salientes. El MASQUERADEdestino le permite darle una interfaz, y cualquier dirección que esté en esa interfaz es la dirección que se aplica a todos los paquetes salientes. Además, con SNATel seguimiento de conexión del núcleo se realiza un seguimiento de todas las conexiones cuando la interfaz se desactiva y se vuelve a activar; lo mismo no es cierto para el MASQUERADEobjetivo.

Los buenos documentos incluyen los COMO en el sitio de Netfilter y la iptablespágina del manual .

Shawn J. Goff
fuente
2
Tengo problemas para comprender el beneficio de SNAT. ¿Por qué importa si el núcleo rastrea las conexiones o no cuando la interfaz deja de funcionar? Con respecto a MASQUERADE, los documentos de netfilter dicen "Pero lo más importante, si el enlace se cae, las conexiones (que ahora se pierden de todos modos) se olvidan, lo que significa menos fallas cuando la conexión vuelve a funcionar con una nueva dirección IP". Suena razonable (aunque ¿cuáles son los problemas técnicos?) Ahora, mirando SNAT, ¿cuál es el beneficio de rastrear conexiones perdidas? ¿Por qué no usar MASQUERADE cada vez?
Carl G
1
@CarlG, supongo que las fallas se producirían con el seguimiento permanente -j SNAT(en oposición al seguimiento de reciclaje con -j MASQUERADE) cuando una nueva conexión saliente desde un nodo LAN utiliza el mismo número de puerto de origen que la conexión saliente cortada desde el mismo nodo LAN. En ese caso, puedo imaginar que los paquetes entrantes de la antigua conexión saliente se envían al nodo, confundiendo su pila TCP. En cuanto al beneficio de -j SNAT, ¿qué sucede si la caja NAT está configurada con la misma dirección IP externa y el núcleo sigue reenviando paquetes de conexiones antiguas en lugar de responder con RST?
anguila ghEEz
SNAT es útil si, por ejemplo, tiene varias direcciones IP asignadas a la interfaz saliente y desea que la fuente NAT sea una de ellas en particular.
pgoetz
20

Básicamente SNATy MASQUERADEhacer lo mismo fuente NAT en la tabla nat dentro de la cadena POSTROUTING.

Las diferencias

  • MASQUERADEno requiere, --to-sourceya que fue hecho para trabajar con IP asignadas dinámicamente

  • SNAT funciona solo con IP estáticas, es por eso que tiene --to-source

  • MASQUERADEtiene una sobrecarga adicional y es más lenta que SNATporque cada vez que MASQUERADEun paquete golpea el objetivo, tiene que verificar la dirección IP que debe usar.

NOTA : Un caso de uso típico para MASQUERADE: instancia de AWS EC2 en una VPC, tiene una IP privada dentro del VPID CIDR (por ejemplo, 10.10.1.0/24) - 10.10.1.100 por ejemplo, también tiene una IP pública para comunicarse con Internet (suponga que está en una subred pública) a través de la cual la IP privada 1: 1 NAT. La IP pública puede cambiar después del reinicio de la instancia (si NO es un EIP), MASQUERADEes una mejor opción en este caso de uso.

Importante: Todavía es posible usar MASQUERADEtarget con IP estática, solo tenga en cuenta la sobrecarga adicional.

Referencias

Terry Wang
fuente