| Formulario de acceso |
|---|
| Anuncios |
|---|
|
|
| Configuración de NAT mediante iptables |
|
|
| sábado, 18 de noviembre de 2006 | ||
|
El estándar NAT (Network Address Translation) es utilizado comunmente para traducir direcciones estáticas de una red dentro de otra. De una forma somera, utilizaremos NAT desde un servidor para asignar una dirección IP concreta a toda una estructura local (o a varias a la vez), presentándose cada uno de los ordenadores de dicha estructura como uno solo a la hora de utilizar la conexión traducida. La red de conexión más usada en las traducciones de NAT es la red Internet, donde todos los ordenadores de una estructura local salen al exterior como si de una sola máquina se tratase. En entornos caseros, dicha función suele ser ofrecida por el software del router-módem que se utiliza para realizar conexiones externas. En entornos organizativos más complejos la función de NAT debería ser controlada por un servidor específico. En este artículo se detallan los pasos necesarios para configurar NAT en una máquina con linux e iptables. Preliminares Tendremos que tener en cuenta una serie de requisitos previos que serán necesarios para poner en marcha un ordenador que tenga características de filtrado NAT. Dichos requisitos son los siguientes:
Se configurará un modelo de red sobre cada una de las tarjetas. El autor de este artículo propone las siguientes convenciones para las direcciones del servidor:
Configuración de la red Al arrancar el ordenador con las dos tarjetas de red ya pinchadas, el núcleo del sistema tendrá que haber sido capaz de detectarlas. Si todo es correcto, el comando lspci será capaz de devolver el número de tarjetas instaladas y la marca del fabricante. Para asegurarnos de que esto es así, no tendremos mas que teclear el siguiente comando en una consola del sistema y asegurarnos de que el número devuelto es, al menos, 2: [root@ANA ~]# lspci |grep Ethernet |wc -l Acto seguido procederemos a configurar el primero de los dos interfaces de red, el eth0, con la IP pública (generalmente suministrada por el proveedor). En distribuciones basadas en Red-Hat, podemos editar el fichero de configuración /etc/sysconfig/network-scripts/ifcfg-eth0 : DEVICE=eth0 Si nuestra distribución no está basada en Red-Hat, podemos hacer uso del comando ifconfig para asignar las direcciones "al vuelo" o modificaremos directamente el fichero /etc/network/interfaces, añadiendo las líneas siguientes (o sustituyendo las que ya estén): #eth0 El siguiente paso será configurar el interface eth1 con una dirección IP privada. Tal y como hicimos anteriormente, modificaremos el fichero /etc/sysconfig/network-scripts/ifcfg-eth1: DEVICE=eth1 O bien modificaremos el fichero /etc/network/interfaces: #eth1 Aunque es una medida opcional, siempre podemos añadir una línea como la siguiente a nuestro fichero /etc/hosts: 127.0.0.1 nat localhost.localdomain localhost En sistemas basados en Red-Hat, es importante establecer la gateway de forma correcta en el fichero /etc/sysconfig/network: NETWORKING=yes Y, para terminar, sea el sistema que sea, tendremos que establecer las entradas DNS (suministradas por nuestro proveedor) en el fichero /etc/resolv.conf: nameserver 80.58.61.250 Configuración de NAT e iptables Para comenzar, borraremos cualquier regla almacenada en las tablas de filtrado mediante los siguientes comandos: root@ANA:~# iptables --flush Acto seguido, configuraremos NAT con enmascaramiento e IP FORWARDing mediante la ejecución de los comandos siguientes con iptables: root@ANA:~# iptables --table nat --append / Habrá que configurar el reenvío de paquetes mediante la utilización de las opciones del kernel. Dicha opción queda activada con el comando siguiente: root@ANA:~# echo 1 > /proc/sys/net/ipv4/ip_forward Para terminar, reiniciaremos el servicio iptables (en sistemas basados en Red-Hat): root@ANA:~# /etc/init.d/iptables restart En este momento, ya tendremos configurado NAT en el servidor, así que tendremos acceso a la dirección de gateway establecida en nuestros ficheros de configuración (192.168.1.1) y podremos traducir direcciones de Internet desde cualquier máquina cliente cuya pasarela apunte a nuestro recién configurado servidor. Será necesario establecer las DNS del proveedor de internet en cada puesto cliente, a no ser que configuremos un servidor DNS en el mismo servidor que traduce las direcciones. Dicha configuración está fuera de los objetivos de este artículo. Redirección de puertos Como hemos explicado al principio, la configuración de NAT nos va a permitir redireccionar el tráfico que pase por la interface pública hacia Internet. Sin embargo, podemos hacer que determinados puertos no salgan hacia afuera y se redireccionen contra otras máquinas o, simplemente, que dichos puertos se traduzcan hacia otros puertos (en casos de puertos cerrados por motivos de seguridad). Veamos unos ejemplos de redireccionamiento de puertos hacia una máquina situada en la red local (192.168.1.89): root@ANA:~# iptables -t nat -A PREROUTING -i eth0 -p tcp / Otro ejemplo con traducción de puertos: root@ANA:~# iptables -t nat -A PREROUTING -i eth0 -p tcp / Conclusión Con la aplicación de NAT sobre un servidor estableceremos una función bastante potente de "enrutado" destinada a sustituir el hardware proporcionado por el distribuidor de conexión a Internet. Tener un servidor dedicado a tareas de enrutado nos previene de numerosos fallos de seguridad que suelen surgir en el tipo de hardware descrito, aunque también puede servirnos para añadir una capa extra de seguridad a nuestro sistema. Si optamos por esta última opción, necesitaremos tener ciertos conocimientos de las posibilidades que nos ofrece iptables a la hora de filtrar el tráfico. Obviamente, tengamos o no dichos conocimientos, las configuración propuesta en este artículo va dirigida, sobre todo, a administradores de sistemas con cierto nivel de cualificación en cuanto a redes y filtrado de paquetes se refiere.
Sólo los usuarios registrados pueden escribir comentarios. Powered by AkoComment 2.0! |
||
| < Anterior | Siguiente > |
|---|







