¿Qué es MASQUERADE en el contexto de iptables?

42

En iptablesmuchas ocasiones veo el objetivo MASQUERADE . ¿Que es eso? Busqué y encontré muchas cosas. ¿Pero necesito que alguien me explique qué es MASQUERADE de una manera fácil de entender?

Un ejemplo (tomado de esta respuesta ) es:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Mohammad Reza Rezwani
fuente

Respuestas:

33

Es un algoritmo que depende de la implementación de iptables que permite enrutar el tráfico sin interrumpir el tráfico original.

Utilizo el algoritmo de disfraces cuando quiero crear un adaptador wifi virtual y compartir mi wifi.

No estoy hablando de compartir la conexión Ethernet a través de su wifi, estoy hablando de compartir la conexión wifi a través de su wifi enmascarándolo a un adaptador virtual. En efecto, esto le permite compartir su conexión wifi a través de wifi.

.

.

Lea esto y desplácese hacia MASQUERADE: http://billauer.co.il/ipmasq-html.html

Lea esto para más información: http://oreilly.com/openbook/linag2/book/ch11.html

Todas esas preguntas sobre "Connectify for Linux" pueden resolverse implementando el algoritmo MASQUERADE.

Para ver un ejemplo directo, visite esta página: http://pritambaral.com/2012/05/connectify-for-linux-wireless-hotspot/

¡NO HE LEÍDO EL ÚLTIMO ENLACE! Pero el siguiente es un extracto / ejemplo exacto.

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Realmente no me gusta cómo los motores de búsqueda hacen que el algoritmo sea un tipo de hackeo malvado. Lo uso simplemente para compartir mi Internet con mis teléfonos Android.

EDICIÓN FINAL: este enlace es el mejor http://gsp.com/cgi-bin/man.cgi?section=3&topic=libalias

Usuario_bandado
fuente
como su primer enlace que fue --exactamente-- lo que estoy buscando :)
Mohammad Reza Rezwani
He probado la MASUERADEregla (la tercera línea en su lista de códigos) y el enlace está exactamente compartido y disponible en todas las interfaces. Por lo tanto, estoy frustrado, ¿cuál es la FORWARDregla? (la regla en la segunda línea en su listado de código)
千 木 郷
34

MASQUERADE es un objetivo de iptables que se puede usar en lugar del objetivo de SNAT (NAT de origen) cuando no se conoce la ip externa de la interfaz inet en el momento de escribir la regla (cuando el servidor obtiene la ip externa dinámicamente).

Sergey P. aka azure
fuente
¿Qué se debe usar cuando se conoce la dirección IP?
Luc
44
@Luc, destino SNAT (traducción de la dirección de red de origen) con la definición de la IP de origen que se debe colocar en lugar de la IP de origen original en el paquete de IP del host original. De esta manera, -j SNAT --to-source xx.xx.xx.xxdonde xx.xx.xx.xx es la ip externa de la interfaz deseada. Y no puedo decir que deba usarse cuando se conoce una IP externa. Prefiero usar MASQUERADE en lugar de SNAT para hacer que las reglas sean flexibles y no estén vinculadas a una IP externa específica que tengo en este momento.
Sergey P. aka azure
7

IP Masquerade también se conoce como Network Address Translation (NAT) y Network Connection Sharing algunos otros sistemas operativos populares. Básicamente es un método para permitir que una computadora que no tiene una dirección IP pública de Internet se comunique con otras computadoras en Internet con la ayuda de otra computadora que se encuentre entre ella e Internet.

Como sabe, las direcciones IP se utilizan en Internet para identificar máquinas. Dado un paquete con una dirección IP, cada enrutador que conforma Internet sabe dónde enviar ese paquete para llevarlo a su destino. Ahora, también hay algunos rangos de direcciones IP que se han reservado para uso privado dentro de las redes de área local y otras redes que no están conectadas directamente a Internet. Se garantiza que estas direcciones privadas no se utilizarán en Internet pública.

Esto causa problemas para las máquinas que están conectadas a redes privadas que usan direcciones IP privadas, ya que no pueden conectarse directamente a Internet. No tienen una dirección IP que se pueda usar en Internet pública. IP Masquerade resuelve este problema permitiendo que una máquina con una dirección IP privada se comunique con Internet, al mismo tiempo que modifica los paquetes de la máquina para usar una dirección IP pública válida en lugar de la dirección IP privada original. Los paquetes que regresan de Internet se modifican nuevamente para usar la dirección IP original antes de llegar a la máquina IP privada.

Tenga en cuenta que esto no se limita a la mascarada de red de Internet / NAT se puede utilizar para enrutar el tráfico de una red a otra, digamos 10.0.0.0/24 y 192.168.0.0/24

La regla de enmascaramiento de iptables se puede reemplazar con la regla SNAT

iptables -t nat -A POSTROUTING -o eth2 -s 10.0.0.0/24  -j MASQUERADE

=

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth2 -j SNAT --to-source 192.168.1.2
# supposing eth2 assigned ip is 192.168.1.2

Tanto masquerade como snat requieren ip_forward habilitado en el nivel del núcleo con echo "1" > /proc/sys/net/ipv4/ip_forwardo permanentemente editando el archivo de configuración nano /etc/sysctl.conf.

IP Forward hace que la máquina actúe como un enrutador y, por lo tanto, redirija / reenvíe los paquetes desde toda la interfaz activa lógicamente por la red objetivo (local / net / other / etc) o siguiendo la tabla de rutas. Tenga en cuenta que habilitar ip_forward puede presentar un importante riesgo de seguridad, si ip_forward no se puede evitar, debe supervisarse / asegurarse mediante iptables / reglas de ruta adicionales.

intika
fuente