eth0 -> 192.168.1.1
eth1 -> 192.168.2.1
En esta maquina queremos agregar dos rutas estáticas:
- 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).
- 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)
- route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.2
- route add -host 192.168.4.23 gw 192.168.2.2
Por lo tanto, debemos de encontrar una forma de poner estas rutas permanentes en nuestra maquina.
Red Hat/Fedora/CentOS
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):
- eth0 net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.2
- eth1 host 192.168.4.23 gw netmask 255.255.255.255 192.168.2.2
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 (tambien con CentOS). 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/", o , "/etc/sysconfig/network-scrips/ para CenTOS. 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
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
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
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
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
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/CentOS, SuSE, Slackware, Debian o Ubuntu) saludos a todos….