InicioLinuxUsando Linux como Router

Introducción

Una de las posibilidades que nos ofrece Linux es la de poder actuar como enrutador, es decir, decidir la ruta de los paquetes que reciba por cualquiera de sus interfaces de red. En este documento veremos un ejemplo de configuración básica fácilmente generalizable.



Arquitectura de red

Supongamos el siguiente caso: disponemos de un servidor Linux ejecutándose sobre una máquina con dos tarjetas de red (servidor.es), que deseamos que actúe como router uniendo dos redes según el siguiente esquema:



Deberemos permitir que la máquina 5.0.0.1 acceda a la red 192.168.133.0 a través de servidor.es, pasando por el router dedicado; asimismo, deberemos permitir que los paquetes provenientes tanto de la red 192.168.133.0 como de la 192.168.0.0 puedan acceder a la red 5.0.0.0.

Compilando el núcleo

El primer paso consiste en compilar el núcleo usando las opciones adecuadas. La explicación del proceso queda fuera de los objetivos del presente documento y se aconseja que se consulte el HOWTO correspondiente en caso de duda. En este apartado nos dedicaremos tan solo a indicar cuales deben ser las opciones que deberemos marcar para permitir a Linux actuar como Router.

Tras realizar un make menuconfig (o config, o xconfig...), en un núcleo 2.4.X, deberemos acceder al apartado Networking Options, y seleccionar la siguiente opción

IP: Advanced Router: Esta es la opción que va a permitir al sistema enrutar los paquetes. Para que funcione, deberemos introducir el siguiente comando:

echo '1' > /proc/sys/net/ipv4/ip_forward

Para que en un sistema Debian esto se haga automáticamente en el arranque, deberemos modificar a yes el valor de la opción ip_forward del fichero /etc/network/options.

Como resultado de esta selección, aparecerán nuevas opciones, entre las que elegiremos las que más nos convengan, consultando su ayuda correspondiente. Sería buena idea seleccionar IP: use TOS value as routing key para poder enrutar según el tipo de servicio (puerto) del paquete, y IP: verbose route monitoring para poder ver los errores a través del demonio del sistema klogd. Es conveniente consultar el resto de subapartados de advanced router para poder escoger aquellos que se adapten a nuestras necesidades.

Tras seleccionar las opciones compilamos el núcleo de la forma habitual.

Configurando las interfaces de red

Tal como hemos descrito en la arquitectura de red anterior, servidor.es dispone de dos tarjetas de red (dos interfaces Ethernet, que en un sistema linux son denominados eth0 y eth1). Deberemos configurar estos interfaces dotándoles de una dirección IP, una máscara de red, etc, pero de forma estática, consiguiendo de esta forma que cada vez que se arranque el equipo la configuración permanezca. Para ello deberemos modificar el contenido de algunos ficheros, cuya ubicación y sintaxis será distinta dependiendo de la distribución que estemos utilizando. En este documento explicaremos la ubicación y sintaxis de dichos archivos para sistemas Debian y RedHat.

Los primeros archivos que podemos modificar son /etc/hosts y /etc/networks, teniendo ambos la misma forma en las dos distribuciones comentadas. En el archivo hosts especificamos los nombres de las máquinas (puede ser interesante poner nombres de máquinas que vayamos a incluir en nuestra tabla de rutas, para que al mostrar su contenido no se tenga que utilizar ningún servicio dns y sea más rápido). En cada línea especificamos la ip de una determinada máquina y uno o más nombres para esa máquina separados por tabuladores. El archivo networks tiene la misma estructura, pero en este caso definimos nombres para redes, no para máquinas concretas.

Debian:



La configuración de las interfaces de red la encontramos en /etc/network/interfaces. Para cada interfaz podemos indicar su dirección IP, su máscara de red, así como su dirección de red y de broadcast. Opcionalmente podemos especificar algún router por defecto. En nuestro caso particular el archivo debería tener el siguiente contenido:

#El interfaz loopback

auto lo

iface lo inet loopback

address 127.0.0.1

netmask 255.0.0.0

network 127.0.0.0

broadcast 127.255.255.255

#Tarjetas Ethernet

auto eth0

iface eth0 inet static

address 192.168.0.2

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

gateway 192.168.0.1

auto eth1

iface eth1 inet static

address 5.0.0.2

netmask 255.255.255.0

network 5.0.0.0

broadcast 5.0.0.255

gateway 5.0.0.1

Red Hat:



En un sistema Red Hat la configuración de las tarjetas de red puede ser un poco más enrevesado, porque la información no se encuentran centralizada en un solo archivo como en el caso de Debian. Concretamente deberemos tener un archivo /etc/sysconfig/network-scripts/ifcfg-xxx (donde xxx sería el nombre de la interfaz) por cada una de las interfaces. Por ejemplo, en el caso de eth0, y siguiendo con nuestro ejemplo, en servidor.es tendríamos que tener el siguiente archivo /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.0.2

NETMASK=255.255.255.0

ONBOOT=yes

Debemos tener en cuenta que dentro del directorio /etc/sysconfig/network-scripts podremos tener tantos archivos de estos como deseemos (uno por cada interfaz), pero para que el script de arranque correspondiente active la interfaz deberemos incluir la línea de ONBOOT indicada.

El gateway por defecto debemos indicarlo en el archivo /etc/sysconfig/network.

Configurando las rutas

Por último debemos especificar las rutas que deseamos utilizar. Para ello podemos utilizar el comando route. La explicación de su funcionamiento queda fuera de los objetivos de este documento, pero podremos encontrar gran cantidad de información sobre su uso en las propias páginas de man..

Supongamos que tenemos servidor.es usando Debian, y sus interfaces de red están configurados tal como se ha descrito en el punto anterior. Tras arrancar la máquina y ejecutar route podremos ver que las rutas hacia las redes 192.168.0.0 y 5.0.0.0, así como hacia las máquinas 192.168.0.1 y 5.0.0.1 ya están definidas (el script de inicio sacó esta información de los archivos de configuración). Tan solo nos faltaría por asegurar una ruta a la red 192.168.133.0 a través del router situado en 192.168.0.1. Para usar una máquina como gateway, deberemos crear una ruta hacia dicha máquina. En este caso lo podemos hacer de la siguiente forma:

route add 192.168.0.1 eth0

Ahora ya podremos especificar la ruta que necesitamos:

route add -net 192.168.133.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0

Sin embargo, si solo utilizamos route deberíamos repetir todo el proceso cada vez que arranquemos el sistema. Es por ello que debemos especificar las rutas estáticamente para que sean establecidas en cada arranque. De nuevo, y dependiendo de la distribución, la configuración de las rutas tendrá una ubicación u otra. En Red Hat debemos incluirlas en el fichero /etc/sysconfig/static-routes, el cual tiene la siguiente sintaxis:

net netmask [netmask] gw

por ejemplo: eth0 net 192.168.133.0 netmask 255.255.255.0 gw 192.168.0.1

En Debian podremos utilizar la opción up comando dentro del archivo /etc/network/interfaces (man interfaces). En ese caso, y siguiendo con nuestro ejemplo, el archivo quedaría de la siguiente forma:

#El interfaz loopback

auto lo

iface lo inet loopback

address 127.0.0.1

netmask 255.0.0.0

network 127.0.0.0

broadcast 127.255.255.255

#Tarjetas Ethernet

auto eth0

iface eth0 inet static

address 192.168.0.2

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

gateway 192.168.0.1

up route add 192.168.0.1 eth0 || true

up route add -net 192.168.133.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0 || true

auto eth1

iface eth1 inet static

address 5.0.0.2

netmask 255.255.255.0

network 5.0.0.0

broadcast 5.0.0.255

gateway 5.0.0.1

(Si un comando up no se ejecuta correctamente no se ejecutarán tampoco los siguientes. Para evitar esto podemos incluir '|| true' al final de cada uno de estos comandos).

Otra opción, tanto en un sistema como en otro es incluir los comandos route dentro de algún script de inicio.

COMENTAR NO CUESTA NADA, MUCHAS GRACIAS...

Fuente original: http://www.alu.ua.es/p/psp4/Documentacion/Noviembre_2001/linux_router.html



Datos archivados del Taringa! original
10puntos
1,674visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
cowper🇦🇷
Usuario
Puntos0
Posts52
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.