Utilizar Debian como puerta de enlace

Escrito el 11 abril 2013 por Luis Ignacio Díaz Martínez


En el artículo anterior explico como instalar un servidor DHCP + DNS con Debian. Aquí explicaré una pequeña ampliación sobre el apartado de «Gateway» ( puerta de enlace )… que nos permitirá compartir la conexión a Internet con las máquinas que se encuentran en nuestra área local.

Teoría

En nuestro caso tenemos una máquina con dos tarjetas de red que una apuntará al exterior y la otra a la red local, para que sea más explicativo expongo el siguiente gráfico:

gr01

 Como podemos observar tenemos dos redes como he explicado antes. Nuestro principal objetivo vendría a ser que las máquinas locales ( con la red 172.16.0.0/16 ) pudieran conectarse a la red la cual tiene acceso a Internet ( 192.168.1.0/24 ) y por lo tanto convertir nuestra máquina en una puerta de enlace que nos dará plena conectividad al mundo exterior. A su vez, también conectaremos dos redes y por lo tanto vamos a redireccionar el tráfico de una red a otra permitiendo así que las dos redes sean visibles entre ellas.

Para ello tendríamos que configurar nuestras tarjetas de red de tal forma que cada una tenga la dirección que le toca y tan solo una tenga una puerta de enlace que será la interfaz que tiene la conexión a Internet.

Podemos ver un ejemplo de esta configuración ( el fichero se encuentra en /etc/network/interfaces ):

Podemos observar que tan solo una tiene una puerta de enlace ( gateway ) y que por lo tanto será por donde salga a Internet ( ruta por defecto ). No obstante, por medio de IPTables tenemos que redireccionar el tráfico para que las redes puedan ser capaces de comunicarse entre ellas. Técnicamente si activamos o modificamos el kernel de GNU/Linux para que acepte redireccionamientos de paquetes en el protocolo IPv4 podríamos ya comunicarnos con el exterior ( siempre y cuando realicemos un masquerade — dar a conocer — que existe otra red ). El procedimiento sencillo sería el siguiente:

Podemos observar como estamos activando el «ip_forward» y como por medio de IPTables estamos dando a conocer la existencia de las dos redes. Esto debería funcionar y nuestras máquinas de nuestra red local podría conectarse a Internet sin ningún problema. Pero el problema de todo esto es que tendríamos que hacerlo cada vez que reiniciemos el equipo… ( exceptuando que ip_forward se puede configurar para que permanezca fijo en el kernel ).

Script para automatizar el proceso

Aquí dejo un script que automatiza el proceso descrito anteriormente… pero es más avanzado ya que contempla peticiones de estado en la aceptación de los paquetes entrantes y salientes. También está preparado para ser un servicio del sistema permitiendo así la automatización y el arranque automático o si lo deseamos parar el servicio de gateway de nuestra máquina. El script es el siguiente:

Cuidado! este script eliminará todas las reglas que estén configuradas en el cortafuegos! dichas reglas tendrían que ser aplicadas después de la ejecución de este script!
Nota: Si quereis tener la última versión del script actualizada podeis descargarla desde mi cuenta de GitHub en https://raw.github.com/luigdima/bashtools/master/gateway.sh

Instalando el «gateway.sh» en el sistema

Convertir script en binario ( ejecutable del sistema )

A continuación vamos a crear el directorio donde irá alojado el script y colocarlo en el directorio «/bin/» creando así un ejecutable en el sistema!

Ahora podríamos probar que funcione de la siguiente forma:

Añadiendo script en el inicio del sistema

El plato fuerte de este artículo es que se ejecute todo esto nada más iniciar la máquina! por lo tanto realizaremos lo siguiente:

Con esto el sistema tendría que ejcutar cada vez que se inicie el script!

Referencias

  • Todo de mi cosecha!

Cargando...

Comentarios: