miércoles, 9 de febrero de 2011

Introducción a NetKit( III ): switches y enrutado


Bueno, pues seguimos con esto, como dijimos la última vez, ahora lo que queremos es crear una red de 4 máquinas, dos switches conectados entre sí y cada uno a otra máquina, y que se puedan comunicar entre ellos sin problemas, el esquema en general sería este:
 No es tanto un problema con NetKit ya que se puede hacer con lo que ya sabemos, como un ejercicio sobre como hacer tablas de enrutado.


Lo primero es asignar decidir el número de conexiones que requiere cada máquina, así vemos que cada switch tiene dos conexiones, una con el otro switch y otra con la hoja, y cada hoja solo tiene una, con su switch correspondiente, podríamos entonces dividir la red en 3 dominios de colisión:

El archivo "lab.conf" quedaría entonces así:

hoja_1[0]=rama1
hoja_2[0]=rama2
switch_1[0]=rama1
switch_2[0]=rama2

switch_1[1]=tronco
switch_2[1]=tronco

Nota: las '_' no están permitidas en el nombre de los dominios de colisión.

Y se crearían 4 directorios, hoja_1, hoja_2, switch_1 y switch_2, si ejecutamos el laboratorio( lstart . )

Ahora hay que decidir las IP para establecer las tablas de enrutado, por ejemplo estas:


Hoja 1:
  En Rama 1: 10.0.1.2


Switch 1:
  En Rama 1: 10.0.1.1
  En Tronco: 10.0.0.1


Hoja 2:
  En Rama 2: 10.0.2.2


Switch 2:
  En Rama 2: 10.0.2.1
  En Tronco: 10.0.0.2

En este caso, como hay redes que por defecto se consideran /8 es necesario especificar la máscara de red.
Por comodidad hacemos que las IP se asignen al iniciar con archivos .startup :
hoja_1.startup:

#!/bin/sh
ifconfig eth0 10.0.1.2 netmask 255.255.255.0


hoja_2.startup:

#!/bin/sh
ifconfig eth0 10.0.2.2 netmask 255.255.255.0


switch_1.startup:

#!/bin/sh
ifconfig eth0 10.0.1.1 netmask 255.255.255.0
ifconfig eth1 10.0.0.1 netmask 255.255.255.0



switch_2.startup:

#!/bin/sh
ifconfig eth0 10.0.2.1 netmask 255.255.255.0
ifconfig eth1 10.0.0.2 netmask 255.255.255.0


Si probamos el laboratorio comprobaremos que solo se pueden comunicar con las máquinas con las que están conectadas directamente, ahora hay que hacer que los switches enruten los paquetes, para esto tenemos que diseñar la tabla de enrutado.

De forma sencilla, los paquetes que salen de hoja_1 por defecto irán hacia switch_1 ( igual si hubiera otras máquinas en la misma red ) , y los de hoja_2 hacia switch_2. Con los que quedan es cuando se pone interesante, tomemos el caso de switch_1.
  • Si los paquetes van hacia una de sus IP, los responde automáticamente ( esto lo hace siempre a menos que le digamos lo contrario )
  • Si los paquetes van hacia otra dirección del segmento 10.0.0.* , se envían por la interfaz eth1 .
  • Si los paquetes van hacia el segmento 10.0.1.* , se envían por la interfaz eth0 .
  • Si van hacia el segmento 10.0.2.* , se le envían a 10.0.0.2, por la interfaz eth1 .
En caso de switch_2, igual:
  • Si los paquetes van hacia una de sus IP, los responde automáticamente.
  • Si los paquetes van hacia otra dirección del segmento 10.0.0.* , se envían por la interfaz eth1.
  • Si los paquetes van hacia el segmento 10.0.2.* , se envían por la interfaz eth0 .
  • Si van hacia el segmento 10.0.1.* , se le envían a 10.0.0.1, por la interfaz eth1 .

Las tablas se podrían aplicar de esta forma:

hoja_1:

route add default gw 10.0.1.1


hoja_2:

route add default gw 10.0.2.1


switch_1:

route add -net 10.0.0.0/24 dev eth1route add -net 10.0.2.0/24 gw 10.0.0.2 dev eth1
route add -net 10.0.1.0/24 dev eth0


switch_2:

route add -net 10.0.0.0/24 dev eth1route add -net 10.0.1.0/24 gw 10.0.0.1 dev eth1
route add -net 10.0.2.0/24 dev eth0


Una vez añadidas a los archivos  *.startup , ya está todo listo:


Y eso es todo, solo queda explicar como hacer una "salida" a Internet, nos vemos.

ps: el laboratorio ya preparado [ labo.tar.gz.b64 ], se puede descomprimir con

base64 -d labo.tar.gz.b64 |gunzip |tar -x


2 comentarios:

  1. Wenas. Disculpa el retraso de este acuse de recibo del mensaje que dejaste en mi bitácora, el de los colectores de basuras.

    Me pasé por aquí hace tiempo, pero no he vuelto a pasar. Hoy he escrito otra cosa de programación y me he acordado de que no hice el "acuse". Tengo que pasarme más veces por aquí, a ver qué te cuentas...

    ResponderEliminar
  2. ok, avisado quedo
    Por cierto, muy bueno el último post :D

    ResponderEliminar