SNAT con iptables

Hasta ahora, hemos discutido los principios generales de NAT, los tipos de NAT, y lo que cada tipo de NAT lo hace.
netfilter / iptables puede ser utilizado para realizar NAT en cualquiera de las formas en que hemos discutido. En realidad, hay muchas cosas que puedes hacer con iptables en este ámbito y vamos a tratar de cubrir lo más posible en este artículo. Antes de llegar allí, vamos a ver lo que tenemos que ser capaces de realizar con éxito NAT en Linux.

Configurando el Kernel

Por lo general, cada distribución de Linux viene con un kernel compilado con soporte de netfilter, iptables herramienta, y todos los módulos necesarios para la realización de Network Address Translation.
Un COMO muy bien en la compilación de Linux 2.4 y 2.6 está escrito por Kwan Lowe y se puede encontrar en http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html
Al compilar un nuevo núcleo o recompilar el kernel que tiene, debe establecer NetFilter = y con el fin de utilizar iptables. En los kernels 2.6, esta opción se encuentra generalmente en Los controladores de dispositivos | Networking support | Networking support (NET [= y]) | Networking options, Pero realmente depende de la versión del kernel.
Por ejemplo, en el kernel 2.6.14, esta opción se encuentra en Networking | Opciones de red.
Si usted usa make menuconfig o make xconfig para configurar el kernel para volver a compilar, seleccionar Redes | Redes opciones | Network packet filtering (replaces ipchains) | IP: Netfilter Configuration.
En el IP: Netfilter Configuration sección encontrará las opciones necesarias para NAT como sigue:
IP_NF_CONNTRACK o Connection tracking (necesario para masq / NAT) mantiene un registro de los paquetes IP que pasan por la máquina para pasar correctamente a los extremos de NATeada cuando las solicitudes formuladas de los son contestadas. Esto es vital para NAT. Si usted lo dice No aquí, usted no será capaz de realizar NAT.

La nat Tabla netfilter

La tabla nat-contiene tres cadenas PREROUTING, POSTROUTING y salida. Cada cadena puede contener normas que se examinan de forma secuencial hasta que una de las normas afecta a un paquete, el mismo que para las cadenas en la tabla de netfilter. Estas cadenas se pueden ver mediante la emisión de el comando iptables-t nat-L.
los iptable_nat módulos y ip_conntrack en la expedición de los comandos con iptables-t nat, de modo que no hay necesidad de utilizar herramientas de Linux insmod o modprobe para NAT a trabajar.
La cadena OUTPUT no es totalmente compatible, así que tendremos que pasar por alto que, por ahora.
Las cadenas PREROUTING y POSTROUTING tienen nombres significativos. La cadena PREROUTING es analizado por el núcleo antes de cualquier decisión de enrutamiento se haga. Por lo tanto, lo que debemos hacer en la cadena PREROUTING es cambiar la dirección de la IP de destino y luego dejar que el proceso de enrutamiento para encontrar el destino que nos acaba de cambiar (DNAT).
La cadena POSTROUTING contiene normas que se analiza el núcleo después de una decisión de enrutamiento. Esto significa que tenemos un camino hacia el destino, por lo que puede cambiar la dirección IP de origen si ese camino se encuentra fuera de nuestra red (SNAT).

SNAT con iptables

SNAT es uno de los tipos más comúnmente utilizada de NAT con iptables, debido a la topología utilizada.
Vamos a ver, por ejemplo, el siguiente escenario:
Red 192.168.1.0/24 se encuentra en nuestra oficina. Tenemos una conexión Ethernet de nuestro proveedor, que nos asignó la dirección IP 1.2.3.1/30 y la puerta de enlace predeterminada 1.2.3.2.
Todas las computadoras en la red 192.168.1.0/24 tienen la puerta de enlace predeterminada a 192.168.1.1.
Nuestro router Linux tiene dos interfaces Ethernet:

  • Eth0, con la dirección IP 192.168.1.1 y máscara de red 255.255.255.0, está conectado a un interruptor que conecta a otros dispositivos en la red 192.168.1.0/24.
  • Eth1, con la dirección IP 1.2.3.1 y máscara de red 255.255.255.252, está conectado al CPE del proveedor (Customer Premises Equipment), que puede ser un módem DSL, cable módem, convertidor de medios de comunicación, etc
  

Podemos establecer SNAT para que todos los dispositivos de acceso a la red 192.168.1.0/24 la Internet con una sola regla:

iptables-t nat-A POSTROUTING-s 192.168.1.0/24 -J SNAT - to 1.2.3.1

Este comando tiene el mismo efecto que el comando siguiente, que se usaría si la dirección IP de eth1 fueron asignadas en forma dinámica, o si se utilizó un módem dial-up en lugar de una tarjeta Ethernet:


iptables-t nat-A POSTROUTING-s 192.168.1.0/24 -J MASQUERADE

Digamos que nuestro proveedor de filtros de todos los puertos mayores que 1024. En este caso, tendremos que cambiar el puerto de origen, así, y no sólo la dirección IP de origen. Esto se puede hacer por:

iptables-t nat-A POSTROUTING-s 192.168.1.0/24-j SNAT - to 1.2.3.1:

El usuario de portátil visto en la figura anterior es un ventilador de IRC y nos da una llamada diciendo que no puede conectarse a cualquier red IRC. Esto significa que el módulo de ip_conntrack necesita un poco de ayuda, y podemos darle a él mediante la inserción del módulo de ip_conntrack_irc en el núcleo. Además, podemos querer que los usuarios puedan realizar con éxito las conexiones FTP, y lo que queremos agregar el módulo ip_conntrack_ftp también.

modprobe ip_conntrack_irc o # insmod ip_conntrack_irc
ip_conntrack_ftp ip_conntrack_ftp # modprobe o insmod

Después de unas semanas, los usuarios de ordenadores portátiles ha convencido a otros usuarios en la red 192.168.1.0/24 de lo maravilloso que es el IRC, así que tenemos unos 20-30 usuarios que se conectan a la red IRC mismo. Ahora, han comenzado a quejarse de lo difícil que es para conectar a la red IRC, ya que la red IRC sólo permite que algunas conexiones de la misma dirección IP. Nosotros calculamos que el 32 direcciones IP son suficientes para ellos, así que llame al proveedor para asignar nosotros a / 27 de subred IP pública. Para un dinero extra pocos, que nos asignan 1.2.4.0/27. Tenemos que cambiar el estado inicial a:

 

iptables-t nat-A POSTROUTING-s 192.168.1.0/24 -J SNAT - to 1.2.4.0-1.2.4.32

Que dejar de quejarse, pero nos damos cuenta de que no podemos utilizar la dirección IP pública de nuestro router NAT Linux para más. Vamos a añadir que también, así que les damos una dirección IP adicional:

iptables-t nat-A POSTROUTING-s 192.168.1.0/24-j SNAT - to 1.2.4.0-1.2.4.32 - A 1.2.3.1

Uno de nuestros usuarios tiene una discusión en IRC, y se inundaron, mientras que SNAT MAPPS su dirección IP a 1.2.4.15. Nuestro proveedor de inundación sistema de detección automática de filtros que la dirección IP y nos envía un correo electrónico que nos informe al respecto. Tenemos que dejar de SNAT para asignar las direcciones internas a la dirección IP, así que haga lo siguiente:

iptables-t nat-A POSTROUTING-s 192.168.1.0/24-j SNAT - A 1.2.4.0-1.2.4.14 - a 1.2.4.16-1.2.4.32 - a 1.2.3.1

Un individuo de la contabilidad con la dirección IP 192.168.1.19 se queja de que no pueden acceder a ordenadores con direcciones IP a través de 192.168.1.32. Es posible que haya cambiado su máscara de red a 255.255.255.227, por lo que todos los paquetes IP de su computadora a las computadoras en 192.168.1.0/24 que no están en 192.168.1.0/27 pasar por el router Linux y recibe SNATed. Para resolver este problema, tenemos dos alternativas.
La primera sería no SNAT 192.168.1.0/24 cuando el destino es otro equipo en 192.168.1.0/24:


iptables-t nat-A POSTROUTING-s 192.168.1.0/24 -D! 192.168.1.0/24 -J SNAT - to 1.2.4.0-1.2.4.32 - a 1.2.3.1

La segunda opción que tenemos es a SNAT solo los paquetes que salen a eth1:

iptables-t nat-A POSTROUTING-s 192.168.1.0/24 -O eth1 -J SNAT - to 1.2.4.0-1.2.4.32 - a 1.2.3.1

Nuestro proveedor conectado otra ubicación de nuestra empresa para el mismo equipo, y ya que estamos en la misma VLAN, no tenemos para construir un túnel entre los enrutadores en cada localidad, pero sólo la ruta de las redes a través del router Linux en ese lugar . En el sitio, tenemos la red 192.168.2.0/24. Tenemos que dejar que los ordenadores en nuestros ordenadores de acceso a la red en la red 192.168.2.0/24 sin SNATing ellos:

iptables-t nat-I POSTROUTING-s 192.168.1.0/24-d 192.168.2.0/24-j ACCEPT

Este comando insertar la regla antes de la regla de NAT, así que si cualquier paquete de 192.168.1.0/24 está destinado a cualquier IP de la red 192.168.2.0/24, esta regla partido y la cadena no se analiza más a fondo, por lo que SNAT no tendrá lugar.

iptables-t nat-I POSTROUTING-s 192.168.1.31 -P tcp - dport 6666:6669 -J DROP

Podríamos preguntar al administrador de lo que Jane está permitido hacer. Por ejemplo, si el administrador quiere permitir el acceso Jane web sólo podemos hacer lo siguiente:

iptables-t nat-I POSTROUTING-s 192.168.1.31 -P tcp - dport! 80 -J DROP

Esta norma no se ocupará de SNAT Jane's IP al intentar acceder a algo más que el puerto 80 TCP, pero se SNAT su dirección IP cuando se accede a los servicios UDP porque los paquetes UDP no coincidirá con esta regla, por lo que será capaz de acceder a cualquier servidor DNS fuera de nuestra red.

DNAT con iptables

Mapa una dirección IP pública (digamos 1.2.4.1) para hacer frente a la computadora de su oficina de IP privada (192.168.1.50). Esto es, por supuesto, DNAT:

iptables-t nat-A PREROUTING-d 1.2.4.1 --j DNAT - to 192.168.1.50

Así que el siguiente paso es llamar a ella y decirle que cada vez que intenta conectarse a la computadora de su oficina de casa, ella debe conectarse a 1.2.4.1.
Nuestro servidor de intranet tiene la dirección IP 192.168.1.100. Un individuo de que el departamento financiero tiene una conexión de banda ancha y nos pregunta si puede acceder al servidor de la intranet de su hogar. Él nos da su dirección IP pública como 1.2.5.17. Le decimos que, desde su casa, se debe tratar la dirección IP 1.2.4.2 en su navegador web, y ejecutamos:

iptables-t nat-A PREROUTING-s 1.2.5.17-d 1.2.4.2 --p tcp - dport 80-j DNAT - to 192.168.1.100

Pensamos que puede ser que desee SSH al servidor de Intranet desde cualquier lugar. No sería una idea muy conveniente asignar una dirección IP al servidor de intranet, ya que es vital para nuestra empresa, y si se descubre un error SSH, no queremos que el servidor sea hackeado. Una buena idea sería trazar un mapa un alto número de puerto al puerto de SSH en el servidor de intranet (esto es PAT o NAPT).

iptables-t nat-A PREROUTING-d 1.2.4.2 -P tcp - dport 65521-j DNAT - to 192.168.1.100:22

De esta manera, cuando no estamos en la oficina y queremos SSH en el servidor de intranet, podemos abrir una conexión SSH a 1.2.4.2 puerto 65521.
Después de un tiempo, supongamos que tenemos instalado un servidor web con la dirección IP 192.168.1.200. El servidor web es www.mycompany.whatever y puntos en DNS a 1.2.4.5. Para tener acceso al mundo exterior, realizamos el siguiente:

iptables-t nat-A PREROUTING-d 1.2.4.5-p tcp - dport 80-j DNAT - to 192.168.1.200

Proxy transparente

De proxy transparente es una manera de obligar a los usuarios a utilizar un servidor proxy, incluso si sus navegadores están configurados para no. Usted probablemente sabe acerca de los beneficios de utilizar un servidor proxy de ahorro de ancho de banda para las páginas en caché y la aplicación de control de acceso (por ejemplo, negar a las descargas de archivos que tienen extensiones peligrosas).
Podemos realizar proxy transparente para todos o para algunos usuarios para evitar que evadan el servidor proxy cuando lo deseen. Esto es especialmente bueno para las computadoras de los niños a negarles el acceso a los sitios sexualmente explícitos, por ejemplo.
En nuestro router Linux, hemos instalado un servidor proxy caché Squid para algunos contenidos de la Web. También, queremos denegar el acceso a sitios de sexo o de descargas maliciosas para los usuarios. Los usuarios no están muy satisfechos con nuestro servidor proxy, y suelen sacarlo de su configuración del navegador. Podemos obligarles a utilizar el servidor proxy de todos modos. Si el servidor proxy escucha en el puerto 3128 vamos a hacer lo siguiente:

iptables-t nat-A PREROUTING-s 192.168.1.0/24 -P tcp - dport 80-j REDIRECT - to-port 3128

Si queremos permitir que el gerente (que tiene la dirección IP 192.168.1.50) para omitir el servidor proxy, lo hacemos de esta manera:

iptables-t nat-I INPUT-s 192.168.1.50 --p tcp - dport 80-j ACCEPT

Así que esta norma será igualado en la cadena PREROUTING, y ella será SNATed en la cadena POSTROUTING.

un artículo presentado por Philip A Clara


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: Este artículo "SNAT con iptables" fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 382 users browsing the articles directory