En la construcción de un router con software y hardware libre

En el ámbito de la soberanía científica y tecnológica con identidad propia, el área de Investigación de la AGETIC realiza proyectos de Innovación e Investigación sobre desarrollo de Software Libre y Hardware libre,  con el fin de incorporar conocimientos y aplicaciones de nuevas tecnologías de información y comunicación.

Erick Poppe @ErickPoppe

1

Símbolo estándar de un router Fuente: www.wikipedia.com

Un router moderno es un dispositivo que controla el tráfico de redes y lo envía a diferentes dispositivos, según la dirección IP de los paquetes de información que recibe y envía. Esta dirección IP está en la capa 3 de la pila del protocolo TCP/IP. Es el estándar más usado en comunicaciones de red de todas las computadoras.

Los routers modernos se fabrican con circuitos integrados específicos (chips), pues necesitan manejar los paquetes con mucha rapidez para enviarlos a su destino con el menor retraso posible; sin embargo cualquier computadora es capaz de cumplir la tarea de un router si cuenta con las condiciones necesarias. Por ejemplo, necesita tener más de un puerto (Ethernet), por donde recibir y enviar paquetes de red, y el software básico.

Particularmente el software libre, tal como Linux, tiene muchas propiedades diseñadas para funcionar como router de redes gracias a sus propiedades inherentes. En todas las distribuciones de Linux existe IPTables que se utilizan para construir tablas donde se encuentran las rutas que deben seguir los paquetes de tráfico de redes. Existen soluciones libres, tal como PfSense, basado en el sistema operativo FreeBSD, que no están diseñadas en linux. En el caso de redes de mayor tamaño se pueden utilizar programas que tengan más y mejores estrategias de ruteo, como Quagga y Zebra. Estos programas avanzados pueden utilizar distribuciones enteras dedicadas al ruteo de paquetes, por ejemplo, Vyatta que es una distribución con énfasis al trabajo con redes.

El sistema más lemental en software libre para construir un router básico utiliza IPTables mediante tablas que se construyen con cinco flujos predefinidos (chains) en el programa, que definen los siguientes casos:

  • Al inicio, antes de decidir cómo se enviarán los paquetes (PREROUTING).

  • Cuando el paquete tiene como destino la misma computadora en sí (INPUT).

  • Cuando el paquete ingresa en la computadora pero tiene un destino diferente en otra computadora (FORWARD).

  • Cuando la computadora da origen a los paquetes (OUTPUT).

  • Al finalizar la decisión de ruteo, pero antes de enviar el paquete al hardware (POSTROUTING).

2

Esquema de las cadenas de enrutamiento de IPTables Fuente: http://www.bankexamstoday.com/2016/01/iptables-network-security.html

Un router puede ejecutar solo una de tres acciones, una vez que recibe un paquete:

  • Aceptar el paquete y decidir enviarlo a destino (ACCEPT).

  • Rechazar el paquete con una explicación (REJECT).

  • Ignorar el paquete sin explicaciones (DROP).

Al utilizar IPTables en Linux se puede lograr que la computadora envíe los paquetes de red a su destino por el camino o ruta más adecuada en cada momento. Es posible también crear reglas para paquetes específicos de tráfico mediante Mangle, que es una propiedad de IPTables. Otra propiedad muy importante que tiene IPTables es la traducción de direcciones IP de red; esto significa que las direcciones de red de origen y destino pueden ser cambiadas (SNAT/DNAT) de acuerdo a la necesidad de recordar el camino seguido por un paquete.

Algunas veces la configuración de todas las características puede resultar abrumante en IPTables. Por este motivo existen programas de software que ayudan a simplificar el proceso de configuración. Uno de estos programas se denomina “Shorewall” y reduce en gran manera los pasos necesarios para crear un router o firewall con software libre de Linux.

¿Y el hardware?

El hardware libre permite conocer todas las propiedades del circuito que compone un sistema. De esta forma también se conocen todas las propiedades de un chip o circuito integrado necesarias para su programación y uso. Así es posible construir un router en software libre y hardware libre.

Los puertos Ethernet son fundamentales en un router ya que su diseño en hardware determina la característica de velocidad de transmisión de datos que maneja el router. Estos pueden ser de 10 Mbps, 100 Mbps, 1Gbps y hasta 10 Gbps. En otros casos se utiliza fibra óptica en Ethernet para la transmisión a mayores velocidades. Para el funcionamiento a mayor velocidad se necesita mayor número de señales de control y de datos desde los chips hacia los puertos. Esto significa a la vez que a mayor velocidad se necesitan circuitos integrados más complejos, capaces de manejar más información de control y datos rápidamente.

Para construir un router pequeño se necesita una computadora que pueda tener más de un puerto Ethernet instalado o tener un sistema embebido de microprocesador pequeño, con la posibilidad de tener varios puertos Ethernet disponibles.

La solución más sencilla sería el uso de una computadora personal e instalar tarjetas adicionales PCIe de red para tener tantos puertos Ethernet como se necesiten para construir un router. Una vez que se cuente con el hardware se procede a instalar una distribución de Linux y se configura el programa IPTables que está presente por defecto en el kernel.

Router de sistema embebido de 5 puertos Ethernet Fuente: www.banana-pi.com

Router de sistema embebido de 5 puertos Ethernet
Fuente: www.banana-pi.com

Una de las propiedades que es posible añadir a la construcción del router o firewall, es la detección de del funcionamiento efectivo del enlace. Para lograr esto se puede crear un programa pequeño o script que utilice el programa ping para detectar la existencia del enlace cada determinado tiempo y tomar acciones correspondientes en caso de que se caiga. Por ejemplo, es posible cambiar todo el tráfico hacia otros enlaces cuando el ping falle e informar al administrador de la red.

Las posibilidades de un router básico de software libre también incluyen la oportunidad de balancear el tráfico repartiendo el tráfico por turnos o prioridades hacia diferentes destinos fuera del router para no sobrecargar de tráfico de los servicios de Internet, o dar una forma particular al tráfico de acuerdo a las prioridades y necesidades en la oficina (traffic shaping).

2 thoughts on “En la construcción de un router con software y hardware libre

  1. Buen proyecto, seria bueno tenerlo y de seguro reemplazara el mikrotik en muchos lugares.

  2. Super, me gusto mucho la informacion, felicidades Erick

Responder a Teodoro Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *