brctl significa Bridge Control.
En Linux, este comando se usa para crear y manipular el puente de ethernet.
Por lo general, esto se usa cuando tiene varias redes Ethernet en sus servidores y desea combinarlas y presentarlas como una sola red lógica.
Por ejemplo, si tiene eth0 y eth1, puede combinarlos y presentarlo simplemente como br0, que a su vez usará tanto eth0 como eth1 para el tráfico de red.
En este tutorial, hemos cubierto lo siguiente:
- Crear un nuevo puente Ethernet usando addbr
- Mostrar puente Ethernet disponible usando show
- Eliminar puente Ethernet existente usando delbr
- Agregar una interfaz a un puente existente
- Agregue varias interfaces al puente existente
- Seguimiento de la dirección MAC de un Bridge
- Establecer el tiempo de caducidad de la dirección Mac en un puente
- Configurar el árbol de expansión en el puente Ethernet
- Mostrar valores de parámetros STP de un puente
- Cambiar los valores de los parámetros del puente
1. Crear un nuevo puente Ethernet usando addbr
Usando brctl addbr, podemos crear un nuevo puente ethernet.
En el siguiente ejemplo, hemos creado tres puentes Ethernet en este servidor:dev, stage y prod.
brctl addbr dev brctl addbr stage brctl addbr prod
Tenga en cuenta que en esta etapa, este es solo un puente Ethernet vacío que no tiene ninguna otra red Ethernet.
Tenga en cuenta que este brctl es un poco diferente a la vinculación de NIC de Linux EtherChannel que discutimos anteriormente.
2. Muestra el puente Ethernet disponible usando show
Usando brctl show, podemos ver todos los puentes de ethernet disponibles en su servidor.
El siguiente ejemplo mostrará todas las instancias actuales de los tres puentes que acabamos de crear.
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no stage 8000.000000000000 no
Si nota que la última columna "interfaces" no tiene nada. Esto significa que ninguno de estos puentes tiene ningún dispositivo Ethernet asociado todavía.
En una nota relacionada:9 ejemplos de ethtool de Linux para manipular la tarjeta Ethernet
3. Elimine el puente Ethernet existente usando delbr
Usando brctl delbr, podemos eliminar un puente ethernet existente.
El siguiente ejemplo eliminará la instancia de "escenario" del puente ethernet.
brctl delbr stage
Como puede ver en el comando show, ya no vemos el puente ethernet de "escenario".
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
Tenga en cuenta que cuando un puente está activo (es decir, activo), puede eliminarlo. Primero debe derribar el puente y luego eliminarlo.
Además, tenga en cuenta que el comando brctl anterior se llamaba brcfg.
4. Agregar una interfaz a un puente existente
Usando brctl addif, podemos agregar una interfaz a un puente ethernet existente.
El siguiente ejemplo agregará la red ethernet eth0 al puente "dev" que acabamos de crear.
Advertencia:no intente esto en ninguna máquina crítica, ya que podría perder la conexión de red a esa máquina cuando algo sale mal. Intente esto solo en una instancia de prueba en la que tenga acceso a la consola.
brctl addif dev eth0
En lo anterior:
- Esto realmente hará que eth0 sea un puerto del puente "dev".
- Entonces, todas las tramas que lleguen a eth0 se procesarán como si realmente estuvieran llegando al puente.
- Además, cuando las tramas se envían en el puente "dev", utilizará eth0. Cuando varias interfaces forman parte del puente "dev", entonces eth0 será un candidato potencial para enviar las tramas salientes desde el puente.
Después de agregar eth0 al puente "dev", el comando brctl show mostrará lo siguiente.
# brctl show bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 prod 8000.000000000000 no
Como puede ver en el resultado anterior, la última columna "interconecta" cómo tiene eth0 para el puente "dev".
Nota:si algo sale mal al agregar eth0 al puente "dev", ejecute el siguiente comando desde la consola para eliminar el puente dev.
# brctl delbr dev
Además, tenga en cuenta que si intenta agregar la interfaz de bucle invertido al puente, obtendrá el siguiente comando de argumento no válido.
Como puede imaginar, no puede agregar al puente una interfaz que no existe en el sistema.
# brctl addif dev eth2 interface eth2 does not exist!
5. Agregue varias interfaces al puente existente
En el ejemplo anterior, agregamos solo un dispositivo Ethernet (eth0) al puente.
Pero, la idea general de usar un puente es agregar más interfaces al puente.
En el siguiente ejemplo, agregamos eth0 y eth1 al puente "dev".
# brctl addif dev eth0 eth1
Como puede ver en el siguiente resultado, para el puente de desarrollo vemos dos líneas. En la última columna "interfaces", vemos tanto eth0 como eth1 para el puente ethernet "dev".
# brctl show bridge name bridge id STP enabled interfaces dev 8000.0050568954bc no eth0 eth1 prod 8000.000000000000 no
Nota:si una interfaz de Ethernet en particular ya es parte de un puente, entonces no puede agregarla a otro puente.
Básicamente, una red puede ser parte de un solo puente. De lo contrario, obtendremos el siguiente mensaje de error cuando intentemos agregarlo a otro puente.
# brctl addif prod eth1 device eth1 is already a member of a bridge; can't enslave it to bridge prod
6. Seguimiento de la dirección MAC de un Bridge
Usando brctl showmacs, podemos ver todas las direcciones MAC aprendidas de un puente.
En el siguiente ejemplo, a partir de ahora, las siguientes son las dos direcciones mac que se conectaron al puente ethernet "prod". Estos datos seguirán cambiando dependiendo del estado actual de lo que está conectado al puente.
# brctl showmacs prod port no mac addr is local? ageing timer 1 00:50:56:89:54:bc yes 0.00 2 00:60:50:46:bc:40 no 0.00
7. Establecer el tiempo de caducidad de la dirección Mac en un puente
En el siguiente ejemplo, estamos configurando el tiempo de caducidad de la dirección mac en 120 segundos en el puente ethernet "dev".
brctl setaging dev 120
En lo anterior:
- dev es el nombre del puente donde estamos configurando este valor
- 120 son segundos
- Entonces, si no se ve un marco para el puente "dev" en 120 segundos, entonces el puente "dev" eliminará la dirección mac de la base de datos de reenvío.
8. Configurar el árbol de expansión en el puente Ethernet
Usando brctl stp, podemos configurar el árbol de expansión en el puente ethernet.
Pero por defecto, el árbol de expansión no está habilitado cuando creamos un puente.
El árbol de expansión es útil cuando tiene varios puentes en su red y todos pueden colaborar para encontrar la ruta más corta entre dos ethernets.
En el siguiente ejemplo, estamos activando el árbol de expansión en el puente Ethernet "dev".
Podemos usar on o yes para habilitar el árbol de expansión. Entonces, los dos comandos siguientes harán exactamente lo mismo.
brctl stp dev on brctl stp dev yes
Como puede ver en el siguiente resultado del programa, los valores en la columna "STP habilitado" para el puente "dev" ahora son "sí".
# brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 yes prod 8000.000000000000 no
Para desactivar el árbol de expansión en su puente ethernet, haga lo siguiente:
# brctl stp dev off # brctl show bridge name bridge id STP enabled interfaces dev 8000.000000000000 no prod 8000.000000000000 no
9. Mostrar valores de parámetros STP de un puente
STP significa Protocolo de árbol de expansión.
Una vez que haya habilitado stp en su puente, puede usar showstp como se muestra a continuación para ver todos los valores de parámetros de stp de su puente.
Lo siguiente mostrará el parámetro stp y su valor actual para el puente "dev".
# brctl showstp dev dev bridge id 000a.000000000000 designated root 000a.000000000000 root port 0 path cost 0 max age 19.99 bridge max age 19.99 hello time 1.99 bridge hello time 1.99 forward delay 14.99 bridge forward delay 14.99 ageing time 299.95 hello timer 0.00 tcn timer 0.00 topology change timer 0.00 gc timer 0.00 hash elasticity 4 hash max 512 mc last member count 2 mc init query count 2 mc router 1 mc snooping 1 mc last member timer 0.99 mc membership timer 259.96 mc querier timer 254.96 mc query interval 124.98 mc response interval 9.99 mc init query interval 31.24 flags
10. Cambiar los valores de los parámetros del puente
Los valores predeterminados del parámetro del árbol de expansión para un puente específico se pueden cambiar. También puede cambiar otros valores de parámetros del puente que creó.
Todos los siguientes comandos set mencionados en la siguiente tabla comienzan con brctl. Por ejemplo:
brctl setageing dev 100
La siguiente tabla muestra los comandos set disponibles para brctl. El valor del tiempo está en segundos.
comando brctl | Descripción |
---|---|
Tiempo de puesta en escena del puente | Establecer tiempo de vencimiento |
setbridgeprio puente prio | Establecer prioridad de puente (entre 0 y 65535) |
tiempo de puente setfd | Establecer retardo de reenvío de puente |
hora del puente sethello | Establecer tiempo de saludo |
establecer el tiempo de puente máximo | Establecer la edad máxima del mensaje |
configuración de la hora del puente | Establecer el intervalo de recolección de basura en segundos |
puente sethashel int | Establecer elasticidad hash |
puente sethashmax int | Establecer hash máximo |
setmclmc puente int | Establecer recuento de últimos miembros de multidifusión |
setmcrouter bridge int | Establecer enrutador de multidifusión |
setmcsnoop puente int | Establecer indagación de multidifusión |
setmcsqc puente int | Establecer el recuento de consultas de inicio de multidifusión |
tiempo de puente setmclmi | Establecer el intervalo del último miembro de multidifusión |
tiempo de puente setmcmi | Establecer intervalo de membresía de multidifusión |
establecer tiempo de puente mcqpi | Establecer intervalo de consulta de multidifusión |
establecer tiempo de puente mcqi | Establecer intervalo de consulta de multidifusión |
establecer tiempo de puente mcqri | Establecer intervalo de respuesta de consulta de multidifusión |
establecer tiempo de puente mcqri | Establecer intervalo de consulta de inicio de multidifusión |
setpathcost costo del puerto puente | Establecer costo de ruta |
setportprio puente puerto prio | Establecer prioridad de puerto (entre 0 y 255) |
setportmcrouter puente puerto int | Establecer enrutador de multidifusión de puerto |
puente sethashel int | Establecer valor de elasticidad hash |
.