Resulta sencillo que un ratón tenga cabeza,
basta con alargar la mano y dejar que las ideas fluyan a través de ella.

Su visita a esta página es a la vez una invitación y una provocación
A continuación les presento una serie de pequeñas muestras de mis capacidades en el campo del diseño gráfico, la fotografía, la programación y el desarrollo web. Todavía quedan muchas cosas que mostrar y demostrar pero valga para ellas este adelanto.

Invitación a mostrar.
Provocación para demostrar.
fecha de hoy: 21(Thu) - August - 2008
Enrutamiento básico en linux

 

enrutamiento en linux (básico)

Comenzamos aquí una serie de dos capítulos sobre el apasionante tema de los enrutamientos en los sistemas linux. Empecemos pues por lo básico.

Enrutamiento. ¿Qué es?

Podemos definir enrutamiento como la acción que tiene que llevar a cabo un equipo para dirigir las peticiones de paquetes IP de un origen a un destino. En pocas palabras (y menos técnicas), un enrutamiento es decirle a un paquete de datos que camino tiene que seguir para llegar desde el ordenador A hasta el ordenador C, pensando siempre que habrá un ordenador B (o enlace de cualquier tipo, ej. router) intermedio.

equipo A
192.168.10.2
enlace A-B
equipo B
192.168.10.1
192.254.10.1
enlace B-C
equipo C
192.254.10.2

El comando que permitirá realizar todas estas acciones se llama ROUTE.

¿Pero quién es ROUTE?

Para poder conectarse a una red mas allá de los sistemas locales necesitamos informar a nuestro equipo, o a otros equipos, de la necesidad de trazar una ruta por donde discurrirán los paquetes de información. La manera de hacer esto es mediante un comando llamado ROUTE que nos permite indicar las direcciones IP (internet Protocol) que serán utilizadas para tal fin.

Imaginemos el ejemplo de antes. Tenemos un ordenador A que está conectado directamente a un ordenador B y este a su vez a un ordenador C. Inicialmente la conectividad entre A y B está resuelta de forma que si hacemos PING (este es un comando que, aunque no lo parezca, merece su sección aparte) entre A y B, o desde A a B (PING 192.168.10.1) obtendremos respuesta. La conexión entre A y C no está resuelta ya que ambos poseen máscaras de Red distintas (192.168.10.2 y 192.254.10.2) y no es posible una conexión directa. Sin embargo, la conexión entre B y C si está resuelta de tal forma que si desde B hacemos PING 192.254.10.2 obtendremos respuesta.

¿Entonces?

La solución pasa por indicarle al sistema que todos los paquetes de A se enruten, direccionen o como prefieras llamarle a través del ordenador B. Es decir, el ordenador B pasaría a ser una pasarela de A hacia C.

Imaginemos ahora que C es la red de redes, Internet. Tenemos nuestro ordenador A, y cien ordenadores mas A1, A2, A3,... A100 conectados a B. Mediante el comando ROUTE podríamos indicar que B es la pasarela determinada para acceder a todas las redes (con sus respectivas IP´s) que forman Internet.

ROUTE ADD DEFAULT GATEWAY 192.168.10.1

Este comando le indica a ROUTE que añada 192.168.10.1 como la dirección predeterminada para alcanzar internet. Cualquier paquete de información que no tenca un itinerario prefijado para alcanzar su destino (podría tratarse de un envío entre el ordenador A2 y el A56) se pasará a 192.168.10.1 desde donde será direccionado hacia Internet.

Desde la línea de comandos de Linux podemos escribir ROUTE sin opciones para obtener una salida similar a esta:

Destination
Gateway
Genmask
Flags
Metrics
Ref
Use
Iface
default
192.168.10.1
0.0.0.0
UG
0
0
0
eth0

Si se deseara elminar este enrutamiento bastaría con escribir:

ROUTE DEL DEFAULT

A continuación transcribo la copia literal de la MAN del comando ROUTE. Este manual (de ahí MAN) está disponible en todas las versiones de Linux y es gratuito.

ROUTE(8) Manual del Programador de Linux ROUTE(8)
NOMBRE
route - manipula la tabla de encaminamiento IP
SINOPSIS
route [-CFvnee]

route [-v] [-A familia] add [-net|-host] objetivo [netmask Nm] [gw Gw] [metric N] [mss M]
[window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]

route [-v] [-A familia] del [-net|-host] objetivo [gw Gw] [netmask Nm] [metric N] [[dev]
If]

route [-V] [--version] [-h] [--help]
DESCRIPCIÓN
Route manipula la tabla de encaminamiento IP del kernel. Su uso fundamental es el de
establecer rutas estáticas hacia ordenadores o redes específicos vía interfaces previamente
configuradas con el programa ifconfig(8).
OPCIONES
-v Selecciona el modo de información detallada.

-A family
Usa la familia de direcciones especificada (por ejemplo `inet', `inet6').

-n Muestra direcciones numéricas en vez de tratar de determinar nombres simbólicos de
ordenadores. Resulta útil si pretende averiguar por qué la ruta a su servidor de nom­
bres se ha evaporado.

-e Use el formato de netstat(8) para mostrar la tabla de encaminamiento. -ee generará
una línea muy larga con todos los parámetros de la tabla de encaminamiento.

-net El objetivo es una red.
-host El objetivo es un ordenador.
-F Muestra la tabla de encaminamiento FIB del núcleo. La disposición de la información
se puede cambiar con -e y -ee.

-C Muestra la caché de rutas del núcleo.
del Borra una ruta.
add Añade una ruta.
objetivo
La red u ordenador de destino. Se pueden proporcionar direcciones IP en formato deci­
mal con puntos o por medio de nombres de ordenador/red.

netmask Nm
Este modificador especifica la máscara de red de la ruta que se va a añadir.

gw Gw Cualquier paquete IP para la red u ordenador objetivo se encaminará a través del
gateway especificado. NOTA: el gateway especificado debe habilitarse en primer
lugar. Normalmente esto significa que se ha de establecer una ruta estática hacia ese
gateway previamente. Si se especifica la dirección de uno de los interfaces locales,
bres se ha evaporado.

-e Use el formato de netstat(8) para mostrar la tabla de encaminamiento. -ee generará
una línea muy larga con todos los parámetros de la tabla de encaminamiento.

-net El objetivo es una red.
-host El objetivo es un ordenador.
-F Muestra la tabla de encaminamiento FIB del núcleo. La disposición de la información
se puede cambiar con -e y -ee.

-C Muestra la caché de rutas del núcleo.

route add default gw mango-gw
añade una ruta por defecto (que será usada en caso de no poder usar ninguna otra).
Todos los paquetes que sigan esta ruta serán encaminados a un gateway por medio de
"mango-gw". El dispositivo utilizado para esta ruta dependerá de cómo pueda alcan­
zarse "mango-gw" - se tendrá que configurar previamente la ruta estática a "mango-
gw".

route add ipx4 sl0
Añade la ruta al anfitrión "ipx4" a través del interfaz SLIP (asumiendo que "ipx4" es
el anfitrión SLIP).

route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
Este comando añade la red "192.57.66.x" que ha de ser encaminada vía gateway a través
de la dirección anterior hacia el interfaz SLIP.

route add 224.0.0.0 netmask 240.0.0.0 dev eth0
Este es un caso complicado que se documenta para que la gente sepa cómo utilizarlo.
Hace que todas las rutas IP clase D (multicast) vayan vía "eth0". Esta es normal­
mente la línea de configuración correcta para un núcleo multicasting.

route add 10.0.0.0 netmask 255.0.0.0 reject
Instala una ruta de rechazo para la red privada "10.x.x.x."
SALIDA
La salida de la tabla de encaminamiento del núcleo se organiza en las columnas siguientes:

Destination
La red u ordenador anfitrión de destino.

Gateway
La dirección del gateway o "*" si no hay ninguno configurado.

Genmask
La máscara de red para la dirección de destino; '255.255.255.255' si el destino es un
ordenador y '0.0.0.0' para la ruta por defecto.

Flags Las posibles flags son:
U (la ruta está activada (up))
H (el objetivo es un ordenador anfitrión (host))
G (usa un gateway)
R (restablece una ruta para encaminamiento dinámico)
D (instalada dinámicamente por un demonio o redirección)
M (modificada a partir del demonio de ruta o redirección)
! (ruta de rechazo)

Metric La "distancia" al objetivo (normalmente se cuenta en saltos). No se usa con los últi­
mos núcleos, pero puede que lo necesiten los demonios de ruta.

Ref Número de referencias a este ruta. (No se usa en el núcleo Linux)
Use Cuenta el número de búsquedas para esta ruta. Dependiendo del uso de -F y -C, se
referirá bien a los errores de caché de ruta (-F) o a los aciertos (-C).

Iface Interfaz a través de la cual se enviarán los paquetes para esta ruta.
MSS Tamaño máximo de segmento por defecto de las conexiones TCP por esta ruta.
Window Tamaño de ventana por defecto para conexiones TCP por esta ruta.
irtt Valor RTT inicial (tiempo del viaje de ida y vuelta). El kernel usa este valor para
averiguar los parámetros del protocolo TCP óptimos sin tener que esperar respuestas
(posiblemente lentas).

HH (sólamente con caché)
El número de entradas ARP y de rutas en caché que se refieren a las cabecerás hard­
ware que hay en caché para la ruta en caché. Será -1 si no se necesita una dirección
hardware para el interfaz de la ruta en caché (por ejemplo, lo).

Arp (sólamente con caché)
Indica si la dirección de hardware para la ruta en caché está puesta al día o no.

FICHEROS
/proc/net/ipv6_route
/proc/net/route
/proc/net/rt_cache

VÉASE TAMBIÉN
ifconfig(8), netstat(8), arp(8), rarp(8)

HISTORIA
Route para Linux fue escrito originalmente por Fred N. van Kempen,
<waltje@uwalt.nl.mugnet.org> y modificado por Johannes Stille y Linus Torvalds para pl15.
Alan Cox añadió el mss y las opciones de ventanas para Linux 1.1.22, soporte irtt y su
fusión con netstat de Bernd Eckenfels.

AUTOR
Mantenido en la actualidad por Phil Blundell <Philip.Blundell@pobox.com>.

Herramientas de Red 8 Agosto 1997 ROUTE(8)

En un posterior capítulo analizaremos a fondo las capacidades de ROUTE junto con el manejo de otros comandos para conseguir complejos niveles de enrutamiento entre sistemas.

Si deseas ampliar la información sobre el tema, si tienes alguna duda, o simplemente si tienes otras ideas o sugerencias no dudes en ponerte en contacto conmigo.

Gracias.
Luis Álvarez

 
La cabeza del Ratón


'nuevomilenio' es una idea de Luis Álvarez
'CSI/dilvish666' es propiedad intelectual


CSI/dilvish666 - A Coruña
nuevomilenio@retemail.es