1. Bridges

Os bridges (pontes) en Linux son dispositivos virtuais de rede que permiten interconectar varias interfaces de rede a nivel de capa 2 (enlace de datos) do modelo OSI, funcionando como un switch de software. En Linux, os bridges son especialmente útiles en virtualización, redes de contedores e en topoloxías de rede complexas, xa que permiten que varias interfaces físicas e/ou virtuais compartan a mesma rede de maneira transparente

1. Introdución aos Bridges en Linux

En Linux, un bridge permite interconectar varias interfaces nun único segmento de rede, reenvíando tráfico entre elas. Funciona como un switch, utilizando a dirección MAC dos paquetes para decidir a que porto envialos. Os bridges empréganse amplamente en:

  • Virtualización: para conectar máquinas virtuais (VMs) ou contedores entre si e coa rede física.
  • Redes de contedores: permitindo que varios contedores estean nunha mesma rede.
Conceptos clave:

  • Interfaces escravas: son as interfaces físicas ou virtuais engadidas ao bridge.
  • Filtrado de tráfico: os bridges en Linux poden filtrar tráfico segundo enderezos MAC, habilitar STP (Spanning Tree Protocol) e aprender que interfaces son responsables de cada MAC.

2. Ferramentas para a Xestión de Bridges

Linux proporciona principalmente dúas ferramentas para a xestión de bridges:

  • brctl (parte do paquete bridge-utils): a ferramenta máis tradicional.
  • ip (parte do paquete iproute2): máis avanzada e versátil, con soporte adicional para configuracións modernas.

Ambas permiten tarefas como crear bridges, engadir ou eliminar interfaces, listar configuracións, entre outras.

3. Instalación das Ferramentas de Xestión de Bridges

Para instalar as ferramentas necesarias en Debian/Ubuntu:

apt update apt install bridge-utils iproute2

4. Creación e Configuración de Bridges con brctl

brctl é a ferramenta básica para crear e xestionar bridges en Linux. A continuación, detállase como usar brctl para configurar bridges.

4.1 Crear un Bridge

Para crear un bridge:

brctl addbr br0

Este comando crea un bridge chamado br0. Un bridge sen interfaces non reenvía tráfico, polo que é preciso engadir interfaces escravas para que sexa funcional.

4.2 Engadir Interfaces a un Bridge

As interfaces pódense engadir ao bridge co seguinte comando:

brctl addif br0 eth0 brctl addif br0 eth1

Neste caso, eth0 e eth1 son interfaces físicas engadidas ao bridge br0. Os paquetes recibidos en eth0 poden reenviarse a eth1 e viceversa a través do bridge br0.

Nota: Ao engadir unha interface a un bridge, recoméndase non asignarlle IP directamente; no seu lugar, asigna a IP ao propio bridge.

4.3 Eliminar Interfaces dun Bridge

Para quitar unha interface do bridge:

brctl delif br0 eth0

Este comando elimina eth0 de br0, restaurando a súa configuración de rede independente.

4.4 Configurar o Spanning Tree Protocol (STP)

O STP evita bucles na rede. Para habilitar STP no bridge:

brctl stp br0 on

Isto pode ser útil en redes complexas onde existe o risco de bucles.

4.5 Listar Bridges e Verificar a Configuración

Para listar os bridges existentes e verificar a configuración:

brctl show

Este comando amosa todos os bridges creados, as interfaces engadidas e o estado do STP.

4.6 Eliminar un Bridge

Para eliminar un bridge (deben quitarse as interfaces primeiro):

brctl delbr br0

Este comando elimina br0.

4.7 Configuración de bridges no arranque con /etc/network/interfaces

Para configurar  un bridge en /etc/network/interfaces no arranque, se configura como unha "tarxeta normal", pero indicando logo con bridge_ports as tarxetas incluidas no bridge. Si o bridge non ten tarxetas se indicará bridge_ports none

auto br0
iface br0 inet static
bridge_ports none
address ....

5. Creación e Configuración de Bridges con ip

O comando ip ofrece funcionalidade avanzada na xestión de bridges, incluíndo opcións non soportadas por brctl.

5.1 Crear un Bridge

Para crear un bridge con ip:

ip link add br0 type bridge

Este comando crea un bridge chamado br0.

5.2 Engadir Interfaces a un Bridge

Para engadir interfaces a un bridge:

ip link set eth0 master br0 ip link set eth1 master br0

Con isto, eth0 e eth1 convértense en interfaces escravas do bridge br0.

5.3 Asignar IP ao Bridge

Recoméndase asignar a IP ao bridge e non ás interfaces escravas:

ip addr add 192.168.1.1/24 dev br0

Este comando asigna o enderezo IP 192.168.1.1 ao bridge br0.

5.4 Activar o Bridge

Para activar o bridge (e cada interface engadida):

ip link set br0 up

5.5 Listar a Configuración de Bridges

Para ver os bridges e as súas configuracións:

ip link show type bridge

Este comando amosa os bridges creados e as súas propiedades.

5.6 Eliminar un Bridge

Para eliminar un bridge (primeiro quitar interfaces):

ip link delete br0 type bridge

6. Comparación entre brctl e ip para a Xestión de Bridges

Funciónbrctlip
Crear un bridgebrctl addbr br0ip link add br0 type bridge
Engadir interface ao bridgebrctl addif br0 eth0ip link set eth0 master br0
Eliminar interface do bridgebrctl delif br0 eth0ip link set eth0 nomaster
Activar o bridgeifconfig br0 upip link set br0 up
Eliminar o bridgebrctl delbr br0ip link delete br0 type bridge
Soporte avanzado (e.g., VLANs)LimitadoCompleto

7. Exemplo Completo de Configuración de Bridge

# Crear o bridge ip link add br0 type bridge # Engadir interfaces físicas ip link set eth0 master br0 ip link set eth1 master br0 # Asignar dirección IP ao bridge ip addr add 192.168.1.1/24 dev br0 # Activar o bridge ip link set br0 up

Neste caso, br0 actúa como un switch que conecta eth0 e eth1, permitindo que dispositivos nestas interfaces intercambien tráfico de rede.

8. Integración con Redes Virtuais

Os bridges en Linux son útiles en contornas de virtualización, conectando interfaces de máquinas virtuais ou contedores coa rede física ou entre eles, ao modo dun switch virtual.