GNU/Linux >> Tutoriales Linux >  >> Linux

Introducción a los fundamentos del enrutamiento IP de Linux (Parte 1)

Probablemente sepa cómo verificar las rutas existentes (o incluso agregar/modificar rutas) en Linux usando el comando route o netstat. Es posible que lo haya hecho sin entender mucho sobre cómo funciona el enrutamiento de IP.

Este artículo lo ayudará a comprender los principios detrás del enrutamiento de IP y cómo funciona.

Esta es la primera parte de la serie de artículos Enrutamiento de IP.

El enrutamiento de IP implica el reenvío de datagramas de IP. Es un proceso simple en el que el host envía el datagrama IP directamente al destino si el host de destino está conectado. Por ejemplo, a través de un enlace punto a punto oa través de una red compartida. Si el host de destino no está conectado directamente, el host envía el datagrama de IP al enrutador predeterminado y permite que el enrutador decida dónde enviar el datagrama de IP.

Principios de enrutamiento

Una diferencia fundamental entre un host normal y un enrutador es que un host nunca reenvía un datagrama de una interfaz a otra, mientras que un enrutador puede reenviar un datagrama.

Hoy en día, la mayoría de los sistemas multiusuario se pueden configurar para actuar como un enrutador. Por lo tanto, se puede especificar un algoritmo de enrutamiento común que puede ser utilizado tanto por el enrutador como por un host. Cuando un host puede actuar como un enrutador, generalmente se dice que el host tiene una funcionalidad de enrutador integrada. Dicho host que tiene una funcionalidad de enrutador integrada nunca debe reenviar datagramas hasta que esté configurado para hacerlo, es decir, configurado para actuar como un enrutador.

La capa IP mantiene una tabla de enrutamiento que utiliza al tomar decisiones sobre qué hacer con el datagrama recibido. Cuando el paquete de datos se recibe de la red, la capa IP primero verifica su dirección IP para ver si la dirección IP es propia o no.

En caso de que la dirección IP de destino en el datagrama sea propia, el datagrama se envía al protocolo apropiado en la capa de transporte, pero si la dirección de destino no es propia, el datagrama se reenvía si el host se configuró para actuar como un enrutador, de lo contrario, el datagrama se descarta.

Los datos en la tabla de enrutamiento generalmente están en forma de entradas. Una entrada típica de la tabla de enrutamiento contiene las siguientes entradas principales:

  • Dirección IP de destino :este campo representa la dirección IP del destino. Esta dirección IP podría ser la dirección de un solo host o podría ser de una red. Si esta entrada contiene la dirección IP de un host, se indica con una ID de host distinta de cero en la dirección, mientras que si la entrada contiene la dirección IP de una red, se indica con un valor de ID de host de 0.
  • Dirección IP del siguiente enrutador :¿Por qué hemos usado el término "siguiente"? Porque este no siempre es el enrutador final, pero podría ser un enrutador intermedio. Esta entrada proporciona la dirección IP del próximo enrutador que decide cómo enviar un datagrama IP recibido en su interfaz.
  • Banderas :este campo proporciona otro conjunto de información vital, como la dirección IP de destino (especificada anteriormente), es una dirección de host o una dirección de red. Además, las banderas indican si el próximo enrutador (especificado arriba) es realmente un próximo enrutador o una interfaz conectada directamente.
  • Especificaciones de la interfaz de red :Se debe pasar alguna especificación sobre la interfaz de red del datagrama para su posterior transmisión.

¿Cómo funciona el enrutamiento básico?

Entonces, si tratamos de visualizar brevemente el proceso de enrutamiento ahora, vemos que tan pronto como se recibe un datagrama de una red en la capa IP de un host (que está configurado para actuar como un enrutador), luego de verificar que la IP de destino dirección en el paquete no es la de este host se consultan las tablas de enrutamiento.

Cualquier entrada cuyo primer campo coincida completamente con la dirección IP de destino (un host) o parcialmente (una red) indicará la dirección IP del próximo enrutador. Esta es la información vital que un host (que actúa como un enrutador) necesitaría para reenviar un paquete, ya que esta información indica directamente a qué enrutador siguiente se debe reenviar el datagrama. Todos los demás campos de la entrada respaldan la toma de decisiones al proporcionar más información para el enrutamiento.

En el párrafo anterior construimos una comprensión básica, pero si tratamos de obtener un nivel más profundo, los siguientes puntos brindan información detallada sobre el algoritmo de la tabla de enrutamiento:

  • Primero se busca en la tabla de enrutamiento una entrada cuyo campo "Dirección IP de destino" coincida completamente con la dirección IP de destino del datagrama. Por completo, se entiende que la ID de host y la ID de red de las direcciones IP coinciden. Si se encuentra, el datagrama se envía a esa interfaz o al enrutador intermedio.
  • Si no se encuentra una coincidencia completa, se realiza una búsqueda de ID de red coincidentes. Si se encuentra, el datagrama se reenvía al enrutador indicado. Entonces vemos que todos los hosts en esta red son administrados por esta única entrada en la tabla de enrutamiento.
  • Si ninguno de los dos anteriores es cierto, entonces el datagrama se reenvía a un "enrutador predeterminado".
  • Si el paso anterior también falla, es decir, no hay un enrutador predeterminado, el datagrama termina siendo imposible de entregar. Cualquier datagrama que no se pueda entregar produciría un host ICMP inalcanzable o Red ICMP inalcanzable y este error se devuelve a la aplicación que generó este datagrama.

A veces, uno preguntaría por qué hay dos tipos de entradas en la tabla de enrutamiento o, para ser más precisos, ¿por qué se necesitan entradas relacionadas con la red en un enrutador? Bueno, tener entradas en la tabla de enrutamiento correspondientes a las redes tiene una gran ventaja. La ventaja es que al tener una entrada relacionada con una red completa, se evita la necesidad de tener una gran cantidad de entradas separadas de cada host en esa red. Esto reduce el tamaño de la tabla de enrutamiento a un nivel significativo, lo que siempre es bueno.

Comando para listar tablas de enrutamiento

Puede usar el comando netstat para enumerar las tablas de enrutamiento como se muestra a continuación.

$ netstat -rn
Kernel IP routing table
Destination  Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.2.0  0.0.0.0         255.255.255.0   U         0 0        0    eth0
169.254.0.0  0.0.0.0         255.255.0.0     U         0 0        0    eth0
0.0.0.0      192.168.2.1     0.0.0.0         UG        0 0        0    eth0

La salida proporciona información detallada sobre las direcciones IP de destino y sus puertas de enlace. La bandera 'U' sugiere que la ruta está activa y la bandera 'G' sugiere que el enrutador está en una puerta de enlace (enrutador). Si esta bandera no está configurada, se puede suponer que el destino está conectado directamente.


Linux
  1. Una introducción al espacio de intercambio en sistemas Linux

  2. Permisos de Linux:una introducción a chmod

  3. Fundamentos de señales de Linux - Parte I

  4. Introducción a los subprocesos de Linux - Parte I

  5. error de enrutamiento de linux?

Una introducción a la detección de movimiento básica en Linux

Una introducción al navegador Vivaldi en Linux

Introducción a la gestión de contenedores de Linux

Todo es un archivo en Linux - Parte 2

Todo es archivo en Linux – Parte 1

La introducción de un administrador de sistemas de Linux a cgroups