martes, febrero 13, 2007

Manejo de rutas estaticas en tres de las distribuciones mas populares (Red Hat/Fedora, SuSE y Debian)

Articulo tomado de :(http://www.redes-linux.com),

 

Dado que ha surgido la pregunta de donde deberian de ir las rutas estaticas en tres de las distribuciones mas populares que podemos encontrar (Red Hat/Fedora, SuSE y Debian), de manera que no se pierdan cuando apagamos el ordenador o simplemente cuando reiniciamos la red de nuestra computadora.

Antes de nada
Antes de nada, para hacerlo todo más sencillo, vamos a imaginarnos que poseemos una maquina con dos interfaces, eth0 y eth1. Dichas interfaces tienen asociada una dirección IP cada una:
eth0 -> 192.168.1.1
eth1 -> 192.168.2.1
En esta maquina queremos meter dos rutas estáticas:

  1. Hacia la red 192.168.3.0, para lo cual tenemos que pasar por la maquina 192.168.1.2. (será el gateway hacia esta ruta).
  2. Hacia la maquina 192.168.4.23, para lo cual hay que pasar por el host 192.168.2.2 (este será la puerta de enlace a la maquina destino


Estas rutas, si las tuviéramos que meter a mano, bastaría con que tecleásemos los comandos:

  1. route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.2
  2. route add -host 192.168.4.23 gw 192.168.2.2


Con esto, las rutas que deseábamos poner en marcha, ya estarían funcionando perfectamente, pero si apagásemos la maquina o simplemente si reiniciasemos el demonio de red (por ejemplo porque estamos haciendo algún tipo de mantenimiento local que requiere que echemos abajo la interfaz y la volvamos a levantar), estas rutas se perderían, debiendo de teclear los comandos "route" de nuevo (si hay alguna vez que reiniciamos varias veces, puede llegar a ser desesperante).
Por lo tanto, debemos de encontrar una forma de poner estas rutas permanentes en nuestra maquina.
Una forma de hacer que estas rutas no se pierdan cada vez que reiniciemos nuestro ordenador, sería poniendo estos comandos "route", en algún script de inicio de nuestra maquina. Pero de esta forma, no evitaríamos que si reiniciamos solo el demonio de red o simplemente si echamos abajo la interfaz para luego volverla a levantar, perdiésemos irremediablemente estas rutas.
Por lo tanto, debemos encontrar una forma que estas rutas, si la red de nuestro computador esta funcionando, estén en marcha y sean permanentes. Pues bien, en este artículo vamos a poner la manera correcta de como se debería hacer (vamos a contar como dicen los desarrolladores de estas distribuciones que se debería hacer).

Red Hat/Fedora
En Red Hat, tradicionalmente las rutas se debían especificar en un fichero de texto, situado en el directorio "/etc/sysconfig", llamado "static-routes". En este fichero, debíamos especificar las rutas de esta forma (implementaremos las rutas de nuestros ejemplos):

  1. eth0 net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.2
  2. eth1 host 192.168.4.23 gw netmask 255.255.255.255 192.168.2.2


De manera que especificábamos una ruta por linea, las cuales estaban formadas por:
Interfaz a la que se aplicaba la ruta - tipo de ruta, ya sea hacia una red (net), hacia una maquina (host)... - IP del destino de la ruta (la red o el host al que se quiere acceder) - Mascara de red de este destino (precedido de la palabra "netmask") - IP del gateway o puerta de enlace para esta ruta, precedido de la palabra "gw" (esta maquina, actúa como puente o paso intermedio por el que se tiene que pasar para llegar a nuestro destino).

Esto era así hasta que apareció la versión Red Hat 8.0. A partir de esta versión, las rutas estáticas, se deben poner por separado, dependiendo de la interfaz. Es decir, cada ruta irá en un fichero diferente, dependiendo de la interfaz a la que vaya asociada. Estos ficheros se llamarán de la forma interfaz.route (eth0.route, eth1.route, eth2.route, ...) e irán situados en el directorio "/etc/sysconfig/networking/devices/". El formato de estos ficheros deberá ser:

  • ADDRESS0 = IP del destino de la ruta 0
  • NETMASK0 = Mascara de la subred del destino de la ruta 0
  • GATEWAY0 = IP del gateway intermedio para la ruta 0
  • ADDRESS1 = IP del destino de la ruta 1
  • NETMASK1 = Mascara de la subred del destino de la ruta 1
  • GATEWAY1 = IP del gateway intermedio para la ruta 1
  • ADDRESS2 = IP del destino de la ruta 2
  • etc, etc...



Por lo tanto, en nuestro ejemplo, tendríamos dos ficheros: "/etc/sysconfig/networking/devices/eth0.route" y "/etc/sysconfig/networking/devices/eth1.route", los cuales contendrían respectivamente:

/etc/sysconfig/networking/devices/eth0.route

  • ADDRESS0 = 192.168.3.0
  • NETMASK0 = 255.255.255.0
  • GATEWAY0 = 192.168.1.2

 

/etc/sysconfig/networking/devices/eth1.route

  • ADDRESS0 = 192.168.4.23
  • NETMASK0 = 255.255.255.255
  • GATEWAY0 = 192.168.2.2


Si hubiésemos tenido más de una ruta en alguna de las interfaces, bastaría con haberlas metido en el fichero asociado como ADDRESS1, ....

Con esto, ya no se nos perderían las rutas estáticas en nuestro Red Hat/Fedora, aunque solo reiniciasemos el demonio de red.

Actualización: Aparentemente, a partir de la versión 9.0, se deberían utilizar otros ficheros de configuración (aunque con los que he descrito, también funciona perfectamente), ya que los explicados anteriormente son utilizados por las herramientas de configuración de red "redhat-config-network". Los ficheros que deberíamos utilizar son: "/etc/sysconfig/network-scripts/route-eth0" y "/etc/sysconfig/network-scripts/route-eth1", teniendo este formato respectivamente:

/etc/sysconfig/network-scripts/route-eth1

  • to 192.168.3.0/24 via 192.168.1.2

/etc/sysconfig/network-scripts/route-eth1

  • to 192.168.4.23/32 via 192.168.2.2


Estos ficheros serán pasados como argumentos al comando "/sbin/ip route add"
Si estuviéramos hablando de rutas IPv6, los nombres de ficheros serían: "/etc/sysconfig/network-scripts/route6-eth0" y "/etc/sysconfig/network-scripts/route6-eth1".


SuSE 8.x/SuSE 9.0
A partir de la versión 8.0 de la distribución antes alemana (ahora pertenece a Novell), la administración de las rutas estáticas cambió, empezando a manejarse mediante el fichero de texto "/etc/sysconfig/network/routes". Además, al igual que en Red Hat, también se podía tener un fichero de rutas por cada una de las interfaces, pasando a administrarlas mediante los ficheros "/etc/sysconfig/network/ifroute-eth0", "/etc/sysconfig/network/ifroute-eth1", ..., dependiendo de la interfaz.
Todos estos ficheros, tienen el mismo formato:

  • IP del destino de la ruta 0 - IP del gateway intermedio - Mascara de red - Interfaz que interviene en la ruta 0
  • IP del destino de la ruta 1 - IP del gateway intermedio - Mascara de red - Interfaz que interviene en la ruta 1
  • IP del destino de la ruta 2 - IP del gateway intermedio - Mascara de red - Interfaz que interviene en la ruta 2


Si alguno de estos parámetros (menos el destino, que no puede omitirse) no lo especificamos, deberemos poner en su lugar el signo "-".
Por lo tanto, nosotros tendríamos un fichero "/etc/sysconfig/network/routes":
192.168.3.0 192.168.1.2 255.255.255.0 eth0
192.168.4.23 192.168.2.2 255.255.255.255 eth1


Debian
En Debian es otra historia un poco diferente al resto de las distribuciones, ya que la configuración de rutas estáticas, se debe realizar en el mismo fichero donde se configuran las interfaces de red: "/etc/network/interfaces".
En este fichero, se puede especificar, que se ejecute un cierto comando antes de levantar la interfaz, un comando una vez ha sido levantada, un comando antes de echarla abajo y/o un comando una vez echada abajo.
Para llevar a cabo esto, haremos uso de las palabras clave:

  • pre-up
  • up
  • down
  • post-down


Por lo tanto, nuestro fichero "/etc/network/interfaces", quedaría de la siguiente manera:

auto lo eth0 eth1
iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.2
 
iface eth1 inet static
        address 192.168.2.1
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        up route -host 192.168.4.23 gw 192.168.2.2




Slackware
En Slackware, la cosa también es diferente al resto de distribuciones, pareciéndose un poco a la configuración de Debian.
En esta distribución, como en el caso de Debian, hay un único fichero, donde se configuran los parámetros de red de nuestras interfaces y las rutas estáticas de nuestra red. El fichero en cuestión, es "/etc/rc.d/rc.inet1".
En este fichero, bastará con insertar las rutas directamente con el comando "route" de esta manera:

/sbin/route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.2 eth0
/sbin/route add -host 192.168.4.23 gw 192.168.2.2 eth1


Creo, que no hace falta decir, que estas rutas, deberían ir (en el fichero /etc/rc.d/rc.inet1) después de haber configurado las respectivas interfaces.


Y con esto ya hemos llegado al final del artículo, habiendo explicado como especificar rutas estáticas en nuestro sistema, sea cual sea la distribución que gastamos (si es Red Hat/Fedora, SuSE, Slackware o Debian).

 

Tomado de: http://www.redes-linux.com/rutas.php

 

Víctor Manuel Martínez M.

Consultor de Soluciones de TI

vimad@hotmail.com

http://vimadhook.googlepages.com/

 

No hay comentarios.: