Configurar un gateway NAT básico en linux con iptables
Bases de datos, Programación, Seguridad, Servidores, Unix Añadir comentario
Es probable que en nuestro grupo de servidores tengamos uno o varios que por seguridad se encuentren en un segmento de red aislado, inaccesible desde internet (es decir, sólo con conexión a la LAN), por lo que en caso de necesitar realizar alguna actualización o instalación de software en dichas máquinas, nos encontraremos con el problema de no poder descargar nada de internet.
En este y otros casos similares, una solución rápida puede ser configurar uno de los servidores web, o cualquier máquina que tenga acceso a la LAN y también a internet a través de 2 interfaces distintos de red, para que pueda actuar también como pasarela de acceso a internet para resto de máquinas de la LAN.
A continuación configuraremos la máquina que tiene acceso a internet como gateway NAT para que enrute a las máquinas que se encuentran dentro de la LAN hacia internet.
Posteriormente, en otra entrada, utilizaremos esto como base para instalar un servicio de VPN en el gateway y poder acceder salir a internet a traves de su conexión, aunque nos estemos conectando de forma remota a la red.
Para éste ejemplo hemos usado máquinas con distribución CentOS 5, para otras distribuciones el procedimiento puede variar ligeramente aunque el concepto es el mismo.
1. Requisitos
1.1 Máquina que hará de gateway
- 2 interfaces de red independientes, eth0 conectado a internet y eth1 conectado a la red local
- iptables
1.2 Equipos que se conectarán a través del gateway
- 1 interfaz de red, eth0 conectado la red local
2. Configuración del gateway
# Configuramos las iptables iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface eth1 -j ACCEPT # Habilitamos ip forwarding echo 1 > /proc/sys/net/ipv4/ip_forward
En caso de que queramos hacer los cambios persistentes (Opcional):
# Almacenamos los iptables iptables-save > /etc/sysconfig/iptables vi /etc/sysctl.conf
Cambiamos la siguiente linea a:
# Controls IP packet forwarding net.ipv4.ip_forward = 1
En algunas distribuciones también hay que añadir esto al /etc/sysconfig/network
FORWARD_IPV4=YES
3. Configuración de los clientes (LINUX)
route add default gw 192.168.1.1
En caso de que queramos que los cambios sean persistentes (Opcional):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Modificamos o creamos la siguiente linea:
GATEWAY=192.168.1.1
Reiniciamos la red:
/etc/init.d/network restart
Ahora sólo nos resta realizar un ping a cualquier ip de internet para comprobar que todo funciona correctamente.
Nota: En caso de necesitar resolución de nombres de dominio, debemos añadir nuestro dns (local o externo) en los clientes a /etc/resolv.conf
4. Configuración de los clientes (WINDOWS)
Simplemente añadiremos la ip de la puerta de enlace (192.168.1.1) en el dialogo de configuración de TCP/IPv4 del dispositivo de red.
1 de Marzo de 2009 at 09:58
uso suse y no reconoce iptables (al saque estoy frito)
1 de Marzo de 2009 at 15:52
Hola:
La mayor parte de las distribuciones modernas ya traen instalado iptables. Si tu distribución no lo trae estoy casi seguro que podrás instalarlo con YAST o descargar las fuentes y compilarlo.
También creo recordar que en Suse existe una interfaz gráfica que permite crear reglas para iptables, échale un vistazo, creo que se llama SuseFirewall o algo así, puedes instalarlo con YAST.
Saludos.
29 de Mayo de 2009 at 01:28
Hola por favor necesito que me ayuden
E configurado un servidor en centos apache, pero ahora quiero dar acceo a otra maquina que tine windows para que navegue al internet a travez del servidor, lo que e estado leyendo es que debo hacerlo que funcione como un router y debo utulizar iptables pero no se porque soy nuevo se poco de linux.
Espero me respondan lo mas pronto
12 de Junio de 2009 at 22:47
Hola Dorian, disculpa la tardanza pero tu comentario me llegó a la bandeja de spam y no lo ví.
La solución a tu problema es sencilla, tienes que hacer exáctamente lo que se dice aqui
29 de Enero de 2010 at 17:40
El GW en el cliente no sería el 192.168.1.1 ?
29 de Enero de 2010 at 17:53
Efectivamente Jaume, fué un error mío, en la imagen si estaba bien.
Ya está arreglado. ¡Gracias!.
28 de Abril de 2010 at 18:54
tengo un problemas cuando reinicio mi red sale que el ipforwarding le asigna el 0 esta bien eso?
28 de Abril de 2010 at 19:10
Si, en algunos scripts de red en determinadas distribuciones lo desactiva, puedes revisar en qué parte con el comando:
grep -ri “ip_forward” /etc/init.d
De todas formas despues de reiniciar la red haz un:
/proc/sys/net/ipv4/ip_forward
Si el resultado es 1, es que está activo.
28 de Abril de 2010 at 19:23
ok gracias
28 de Abril de 2010 at 19:25
bueno linux es una plataforma estupenda hasta lo que vi, pero uno tiene que ser perseverante con lo que esta haciendo es verdad, gracias
28 de Abril de 2010 at 19:39
nada de nada no puedo espero intentarlo manana porque ahora nop
29 de Abril de 2010 at 15:12
hola hice grep -ri “ip_forward” /etc/init.d y me da la siguiente salida:
*****************************************************************
/etc/init.d/network: if [ -f /proc/sys/net/ipv4/ip_forward ]; then
/etc/init.d/network: if [ `cat /proc/sys/net/ipv4/ip_forward` != 0 ]; then
/etc/init.d/network: action $”Disabling IPv4 packet forwarding: ” sysctl -w net.ipv4.ip_forward=0
*****************************************************************
y bueno entre donde dice y es un programa sera que tengo que cambiar ahi tambien el ipforward porque al reiniciar la red sigue saliendo 0 indicando que esta dehabilitado el reenvio de paquetes net.ipv4.ipforward=0 que hago
29 de Abril de 2010 at 15:22
La solución rápida es comentar la linea esa para que no te lo desactive con un # al principio de la línea.
De todas formas revisa todos los pasos para asegurarte que lo has hecho bien, especialmente el de editar el /etc/sysctl.conf para habilitar el ip_forward
29 de Abril de 2010 at 15:47
y bueno la configuracion para la eth1 del tengo que poner la puerta de enlace del proveedor de internet o la dejo vacia o coloco algo?
29 de Abril de 2010 at 15:57
Fijate en el gráfico kerberos, ahi estan todos los parametros de red de cada uno de los interfaces tanto del gateway como de los clientes.
En el GW solo tienes que tener configurado el eth0 con los datos de tu ISP para la salida a internet, y el eth1 con una ip/máscara de la lan.
29 de Abril de 2010 at 17:19
una cosa mas al configurar todo con las iptables tengo que hacer otra instruccion mas de iptables para que los otros equipos tengan acceso a internet ? como por ejemplo poner una rutina que diga que tengo que abrir el puerto 80 a la red lan que tengo?
29 de Abril de 2010 at 17:37
Si tienes el puerto cerrado en el gateway claro, deberás abrirlo para que los clientes puedan usarlo.
Te recomiendo esta guia de iptables (En PDF):
http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall.pdf
29 de Abril de 2010 at 18:55
nada de nada sera que la configuracion en centos sera diferente porque no puede ni quiere la lan conectarse a internet
29 de Abril de 2010 at 19:16
ese manual lo estoy por eso tengo muchas dudas
3 de Mayo de 2010 at 15:54
hola, disculpa al ponert esas reglas con respecto al iptables que tienes tu deberia borrar las reglas que tiene el gateway y escribir las que tu me sugieres o dejo las reglas por defecto que se crearon al iniciar el equipo
3 de Mayo de 2010 at 16:48
hola alguien por ahi porfa respondan
3 de Mayo de 2010 at 17:09
Debes añadir las reglas a las que ya tengas, al añadir una regla no tienes que reiniciar nada, se aplica instantáneamente, por lo que puedes ir probando si funciona o no, cuando todo funcione bien puedes guardar las reglas para que sean persistentes mediante el comando iptables-save redirigiéndolo al archivo de configuración de iptables en tu distribución o ejecutando:
/etc/init.d/iptables save
5 de Mayo de 2010 at 16:13
hola disculpa otra vez estoy configurando un proxy para que de internet a una pc y deberia de dar una politica para que acceda al puerto 80 la pc o Lan? o automaticamente con tus politicas de direccionamiento pueden acceder mi pc o Lan
5 de Mayo de 2010 at 16:24
Vaya lio que tienes encima eulogio, un gateway no es lo mismo que un proxy, esta guía es para configurar un gateway, no un proxy.
Proxy:
Intermediario que se desempeña como servidor y cliente para recuperar recursos o manifestaciones de recursos en nombre de otros clientes. Los clientes que utilizan un proxy saben que éste existe y que se trata de un intermediario.
Gateway:
Intermediario que desempeña el papel de un servidor en nombre de otro con el objeto de suministrar recursos o manifestaciones de recursos del servidor representado. Los clientes que utilizan un gateway saben que éste existe pero no saben que se trata de un intermediario.
Si lo que tu quieres es instalar y configurar un servidor proxy para tu lan te recomiendo esta guia:
http://www.linuxparatodos.net/portal/staticpages/index.php?page=19-0-como-squid-general
Siento no poder ayudarte mucho más ya con esto, todos tenemos obligaciones
5 de Mayo de 2010 at 16:46
pero esa configuracion deveria funcionar al toce o debo configurar algo mas bueno si es para un gateway, ups perdon si molesto
5 de Mayo de 2010 at 16:51
No hay problema, para un gateway es sólo lo que se indica aquí, nada más, no tienes que configurar un proxy ni nada, los equipos de tu red que usen el gateway ya tienen salida directa a internet a través de el.
5 de Mayo de 2010 at 17:12
mmm nada de nada estoy trabajando con cento5.4 aplique esa configuracion y no pasa nada que raro sera la distribucion