El comando route en Ubuntu

Publicado por P. Ruiz en

En un sistema operativo, la tabla de enrutamiento contiene las direcciones de los nodos a los que podrán enviarse paquetes a través de la red. Un nodo es cualquiera de los dispositivos conectados a la misma red y que normalmente se identifica con una dirección IP. Por lo tanto, la tabla de enrutamiento representa la topología de la red que existe alrededor del sistema que estemos analizando.

Cuando el sistema necesita enviar un paquete a través de la red, consultará la tabla de enrutamiento para averiguar el camino más adecuado por el que realizar el envío.

En el caso de GNU/Linux, el comando que nos permite consultar o modificar la tabla de enrutamiento utilizada por el núcleo del sistema se llama route.

Consultar la tabla de enrutamiento

Una forma sencilla de consultar el contenido de la tabla de enrutamiento del sistema consiste en utilizar el siguiente comando:

route -n

Escribimos el comando y pulsamos la tecla Intro.

El-comando-route-en-Ubuntu-001

Para entender la información que nos ofrece el comando, vamos a analizarla columna a columna, teniendo en cuenta que cada línea representa una ruta diferente:

  • Destino: Las redes o hosts a las que pueden ir destinados los paquetes. si su valor es 0.0.0.0 indica que el destino puede ser cualquiera.
  • Pasarela: Las puertas de enlace que se utilizarán. Un valor 0.0.0.0 indicará cualquier red.
  • Genmask: Las máscaras de red que se utilizarán en cada caso.
  • Indic: Informa sobre el estado de la ruta. Una U significa que se encuentra activa, una G que utiliza una puerta de enlace y una H que el destino es un Host.
  • Metric: Muestra la distancia al objetivo y suele medirse en saltos.
  • Ref: Si la tabla de enrutamiento perteneciese a un router, aquí tendríamos el número de referencias que se le harían desde otros nodos. Cuando pertenece al núcleo del sistema operativo, su valor es cero.
  • Uso: Cuenta las búsquedas para esa ruta.
  • Interfaz: Identifica el adaptador de red al que estamos haciendo referencia. Si nuestro ordenador tuviese más de uno, aparecerían un nuevo conjunto de líneas en la tabla de enrutamiento para definir sus características.

Según se puede ver en la imagen anterior, todos los paquetes enviados a la red 192.168.1.0/24 se enviarán a la red local ya que no hay valor para la pasarela. Lo mismo ocurre con los paquetes de la red 169.254.0.0/24.

Sin embargo, los paquetes enviados a cualquier otro destino (0.0.0.0 y máscara de red 0.0.0.0) se enviarán a la puerta de enlace 192.168.1.1.

Por cierto, el resultado puede puede ser algo más legible si mostramos la tabla de enrutamiento en formato hostname. Para lograrlo, basta con cambiar el argumento -n por -e:

route -e

La salida del comando es como se muestra en la imagen.

El-comando-route-en-Ubuntu-002

Otra alternativa es utilizar el comando netstat con la siguiente sintaxis:

netstat -r -n

Como puedes ver, el resultado es equivalente a la primera opción.

El-comando-route-en-Ubuntu-003

Modificar la tabla de enrutamiento

El comando route también nos permite modificar la tabla de enrutamiento del sistema según nuestras necesidades. Por ejemplo, si quisiéramos añadir una nueva ruta estática para que todos los paquetes enviados a la red 192.168.0.0/24 sea dirigido a la interfaz  enp0s3 y use la puerta de enlace 192.168.1.1, escribiríamos lo siguiente:

sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.1.1 dev enp0s3

Como es lógico, necesitaremos privilegios administrativos

El-comando-route-en-Ubuntu-004

Para comprobar que la operación se ha realizado con éxito, basta con volver a consultar la tabla de enrutamiento:

route -n

Como vemos, aparece una nueva entrada con la modificación que hemos añadido.

El-comando-route-en-Ubuntu-005

De forma similar, podemos eliminar cualquiera de las entradas de la tabla de enrutamiento. Bastará con escribir algo parecido a esto:

sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.1.1 dev enp0s3

Esto eliminará la entrada que hemos creado antes.

El-comando-route-en-Ubuntu-006

… Y para comprobarlo, sólo tenemos que volver a realizar una consulta de la tabla de enrutamiento:

Así comprobamos que la línea anterior ha desaparecido.

El-comando-route-en-Ubuntu-007

Y hasta aquí el artículo de hoy. Espero que te haya parecido interesante.