Ruteo en Debian

Configuración del Gateway

TOBEDONE

Configurando las Tablas de Ruteo

Para gestionar la tabla de ruteo se utiliza dos utilidades: SysCTL y iptables.

Lo primero es agregar una línea a nuestro archivo /etc/sysctl.conf para indicarle al Kernel que debe permitir el ruteo y derivación de paquetes (FORWARDING):

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

:!: Ver también las otras funcionalidades para SysCTL.

Una vez hecho esto, ejecutamos sysctl para recargar las opciones desde el archivo:

[root@debian-router] ~$ sysctl -p
net.ipv4.ip_forward = 1

Llegados a este punto y si el servidor DHCP está iniciado, nuestra máquina ya está derivando paquetes desde una interfase a la otra y por tanto las máquinas en la red interna ya pueden salir hacia afuera.

Sin embargo, esto no es suficiente. Si la arquitectura de red de nuestra red principal (proveedora) tiene normas de seguridad o restricciones de segmentos para la salida a Internet, entonces debemos configurar nuestro servidor DHCP para que provea de traslación de NAT.

Esto se hace en un paso con la utilidad Iptables.

Traslación de NAT

Para indicarle a nuestro router que debe proveer la característica de traslación de NAT, que permite convertir direcciones IP desde la red interna a un rango determinado de la red externa, debemos instalar y configurar el paquete iptables:

Instalación1):

[root@router-debian] ~$ apt-get install iptables

A continuación debemos ejecutar una serie de comandos para limpiar la tabla actual de Iptables y colocar la regla de NAT que deseamos:

habilitar-ruteo.sh
iptables -Z
iptables -F # a este punto IPtables se ha limpiado
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Iptables:

  • -t nat: deseamos modificar la tabla de traslación de NAT.
  • -A POSTROUTING: deseamos agregar una cláusula (chain) para modificar los paquetes a medida que van saliendo (POSTROUTING).
  • -o eth1: los paquetes saldrán por la interfase eth1 (que hemos configurado como externa).
  • -j MASQUERADE: para aquellos paquetes que cumplan con las condiciones anteriores será aplicado el proceso de enmascaramiento de IP (MASQUERADE).
Más información de la utilidad iptables, por supuesto:

Configuración desde Webmin

Esta sección muestra cómo llevar a cabo la tarea de configuración anterior usando la interfaz de Webmin.

Entramos a la configuración de Webmin, a la cabecera Networking, Routing and Gateways:

Pantalla de configuración de red provista por Webmin
(el acceso se ha realizado en una máquina virtual equivalente)

Aquí podremos acceder a las opciones del Linux Firewall, donde tenemos acceso a la configuración de la utilidad iptables. Con esta interface web se va a crear una regla de iptables para hacer FORWARD, es decir, pasar paquetes de red de una interface de red a la otra, y así salir al Exterior.

  1. Vamos a la sección FORWARDED PACKETS (FORWARD).
  2. Hacemos clic en el botón Add Rule lo que nos lleva a la pantalla de selección de la regla.

Llenamos los siguientes criterios para la regla:

  • Descripción: forwarding de eth1 a eth0 (Internet)
  • Action to Take: [×] Accept (originalmente en “Do Nothing”)
  • Source addresses: Equals, 192.168.24.0/24 (usamos la Notación CIDR)
  • Incoming Interface: Equals, eth1
  • Outgoing Interface: Equals, eth0 (en estricto rigor no es necesaria si sólo hay esa otra interface de red)
  • Connection States: se deja en <Ignored>, o en: Equals, ESTABLISHED.

Una vez que guardamos esta regla con el botón de comando al final, debemos obtener un resumen de la regla FORWARD en la pantalla de configuración de Linux Firewall, parecido a lo que sigue:

TODO:
  1. marcar las otras entradas de iptables para routers reales (no virtuales)
  2. marcar las entradas de firewall de ICMP (para permitir ping, etc…)
  3. chequear las entredas de PRE/POST·ROUTING

Ejecución de la Prueba Real

La prueba real equivalente consiste en la instalación del PC cliente y su conexión a la misma red del router (usando para esto un hub Ethernet). A continuación se utilizan las herramientas de configuracion de red del cliente (Conexiones de Red en Windows, NetworkManager / ifconfig en Linux) para asignar una IP al cliente en el rago cubierto por el router (originalmente 192.168.40.0/24), y designar como gateway y servidor DNS al router.

Para comprobar el correcto funcionamiento del router es necesario determinar las direcciones IP entregadas a la salida. Esto es necesario hacerlo en la prueba real porque usualmente al conectar máquinas virtuales estas quedan en el mismo socket de conexión al exterior que el host y por tanto cualquier router ADSL externo o página del tipo showmyip mostrará la misma IP que el host.

Una vez instalados el cliente y router reales, usamos el cliente y el router por separado para navegar a una página web con un servicio de identificación de IP, comp checkip.dyndns.org. La IP que obtenemos debe ser distinta en ambos casos, seña que el ruteo funciona perfectamente (en particular, la IP obtenida por el router debe ser la misma que es provista por el ISP).

Archivos

Ver También

1)
lo más probable es que el paquete se encuentre ya instalado