Hacer un switch/bridge LAN por software con GNU/Linux

Recien pasada la entrega del proyecto de Redes, decidí publicar una información que me llevó casi 2 semanas de investigación en google buscando algun tipo de software que me permitiera usar una máquina linux con 2 interfaces de red, como un switch LAN (Nivel 2), sin saber que era tan sencillo y que el mismo kernel lo podía hacer, con el front-end necesario (en este caso bridge-utils), y yo pensando en soluciones mas complejas como hacerme un programa para capturar los marcos en C, qué desperdicio de tiempo y esfuerzo hubiera sido! Por eso, aqui les va el dato:

Requisitos:
Hardware:
– 1 ordenador que soporte GNU/Linux.
– 2 o mas dispositivos de red(ya sean alambradas o inalámbricas(wifi)) soportadas por el kernel y correctamente funcionales.
– 2 o mas cables UTP cruzados si se va a utilizar ethernet alambrado.
Software:
– Cualquier distribución moderna de gnu/linux obviamente (se recomienda Ubuntu por su facilidad y soporte)
– El paquete bridge-utils.

1. Se deberá instalar los 2 dispositivos de red a la maquina donde se desee instalar, con sus cables cruzados conectados a sus respectivas máquinas clientes para cuando se use Ethernet.

2. Encender el ordenador y arrancar gnu/linux, y luego verificar si existen las 2 intefaces, para ver esto ejecutar el sig. comando como root:

# ifconfig

2.1 Si los dispositivos estan correctamente instalados, aparecerá en pantalla el nombre de las interfaces, en mi caso aparece eth0 y eth1, pues son dos tarjetas ethernet 100baseT. Si se usa inalambricas, aparecera ya sea wifi0, ra0, ar0, etc.

3. Instalar el paquete bridge-utils, que contiene las interfaces que accederan al kernel para agregar los bridges virtuales,

3.a. Si se utiliza Debian, Ubuntu, o cualquier derivado, colocar en la linea de comandos
$ sudo apt-get install bridge-utils

3.b. pero si se baja el paquete desde el sitio oficial, o se usa otra distribucion que no sea Debian, Ubuntu o cualquier derivado, muy probablemente se deberá desempaquetar primero, y luego compilar con:

$ ./configure
$ make

y como root.

# make install

4. Luego de instalado el paquete, se deberá proceder a crear un nuevo bridge virtual con el sig. comando como root:
# brctl addbr br0

5. Despues de que el bridge/switch br0 virtual ha sido correctamente creado. debemos conectar a éste las interfaces de red que tenemos disponibles, escribiendo en la consola como root:

# brctl addif br0 eth0
# brctl addif br0 eth1

… y asi con todos los dispositivos de red que querramos conectar.

6. Debemos activar el protocolo STP (Spanning-Tree Protocol) en nuestro switch linux, para que nuestro switch no tenga problemas al interconectarse a otro switch. Esto se hace escribiendo el sig. comando como root:
# brctl stp br0 on

7. Para evitar conflictos, se debera inicializar en 0 los IP de todos los dispositivos de red escribiendo como root lo que sigue:
# ifconfig eth0 0
# ifconfig eth1 0

… y asi con todos los dispositivos de red que conectemos al bridge

8. Si se desea, se le puede agregar un IP al bridge, es recomendable que se le de un IP valido para la red a la que se va a conectar. Escribiendo lo siguiente como root:

# ifconfig br0 192.168.1.50

Asumiendo que estamos en la red 192.168.1.0, y que el IP dado al bridge no esta asignado a ninguna otra maquina. Ya con esto podemos conectar nuestro bridge a cualquier cliente.

Eso es todo. Con linux podemos hacer maravillas y revivir maquinas viejas que sirvan para algun proposito util. Incluso se pueden realizar Routers baratos y eficientes usando el software Quagga, pero esta es otra historia….

12 comentarios

  1. NESESITO INSTALAR UN SWITCH O ROUTER PARA TENER INTERNET EN MUCHAS PC LINUX SOY NOVATO PERO CON TU AYUDA SE K LO INSTALARE………..ASME ESE PARO DIME CON UNA VERSION MAS DETAYADA DE COMO INSTALAR EL ROUTER…………MY CORREO ES……….juan-r-m@hotmail.com.
    asme ese paro no seas aka……telo agradesere mucho……….bye…….y….grasias

  2. ¡¡HOYGAN!!

  3. Agree.
    ¡¡HOYGAN!!

  4. Jajaja, interesante esto de Hoygan, no sabía de que se trataba.

  5. […] doy cuenta que todo pasó por un comment, hecho ya bastante rato, en el cual se cometen “brutalidades” ortográficas, las cuales […]

  6. HOYGANME!!

  7. Una pregunta. Todo esto si reinicio se pierde? no hace falta crear algun scrip y hacer que se inicie con el SO?. Gracias

  8. @roger, Si, esa informacion es volatil, y se borrara cuando reinicies la maquina. Para que esta informacion persista, deberas modificar el archivo /etc/network/interfaces como superusuario y agregar la sig, linea


    auto br0
    iface br0 inet dhcp
    bridge_ports eth0

    (los espacios en blanco al inicio de las dos ultimas lineas son tabs)

    donde en la parte de bridge_ports se debe listar todas las interfaces que se quieran interconectar.

  9. Hmmm, al usar un bridge no estarias convirtiendo al host linux en cuestion en un Hub en lugar de un Switch?

  10. Oook, pensaba que en un bridge linux el trafico se “copiaba” a cada puerto adicional conectado…

    Esta bueno, voy a probarlo…

  11. yo pondria la ip bro como una real de la red (adquirida por dhcp) desde un router o lo que le conectes para salir y también le daría ip reales a las maquinas conectadas a eth0 y 1 por si se cae la interfaz virtual se puede seguir accediendo a los servidores.

    Capishe?
    Un saludo.-

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: