Debido a que un puente es un dispositivo Ethernet, necesita una dirección MAC. Un puente de Linux puede originar cosas como marcos de protocolo de árbol de expansión, y el tráfico como ese necesita una dirección MAC de origen.
Un puente no requiere una dirección IP. Hay muchas situaciones en las que no tendrás uno. Sin embargo, en muchos casos puede tener uno, como:
-
Cuando el puente actúa como puerta de enlace predeterminada para un grupo de contenedores o máquinas virtuales (o incluso interfaces físicas). En este caso, necesita una dirección IP (porque el enrutamiento ocurre en la capa IP).
-
Cuando su NIC "principal" es miembro del puente, de modo que el puente es su conectividad con el mundo exterior. En este caso, en lugar de asignar una dirección IP a (por ejemplo)
eth0
, lo asignaría al dispositivo puente en su lugar.
Si el puente no requerido para el enrutamiento IP, entonces no necesita una dirección IP. Ejemplos de esta situación incluyen:
- Cuando el puente se utiliza para crear una red privada de dispositivos sin conectividad externa, o con conectividad externa proporcionada a través de un dispositivo que no sea el puente.
Sí, la interfaz puente actúa como un puerto adicional.
Después de man 5 systemd.netdev
:
Un dispositivo puente es un conmutador de software, y cada uno de sus dispositivos esclavos y el propio puente son puertos del conmutador.
El dispositivo de puente enumerado con sus otros dispositivos de red no representa el puente virtual, representa una NIC virtual que está conectada al puente. Si tuviera un puente físico conectado con dispositivos de red físicos, tampoco vería el puente físico en la lista de sus dispositivos de red, pero sí vería su NIC que está conectada al puente, que por supuesto tiene su propia dirección MAC como cualquier otro dispositivo de red.
Asignar una dirección IP al dispositivo puente (que, de nuevo, es en realidad una NIC virtual conectada al puente virtual) permite que su dispositivo host enrute paquetes a la subred creada por el puente y todos los dispositivos conectados a él. ¡Genial!
Mientras que las herramientas de dispositivos de red como iproute2
(con el ip link
y ip addr
comandos) le permiten ver la NIC virtual adjunta al puente, también es posible ver el puente virtual en sí mismo con el brctl
programa. El brctl show
El comando enumerará todos los puentes y sus interfaces adjuntas. Aquí hay un ejemplo usando iproute
y brctl
con puentes Linux y tuntaps:
# ip link add br0 type bridge
# ip tuntap add dev tap0 mode tap
# ip tuntap add dev tap1 mode tap
# ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev br0
# ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev tap0
# ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev tap1
# brctl addif br0 tap0
# brctl addif br0 tap1
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.2e22e593fe8c no tap0
tap1
# ip addr show to 10.0.0.0/24
11: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
inet 10.0.0.1/24 brd 10.0.0.255 scope global br0
valid_lft forever preferred_lft forever
12: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
inet 10.0.0.2/24 brd 10.0.0.255 scope global tap0
valid_lft forever preferred_lft forever
13: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
inet 10.0.0.3/24 brd 10.0.0.255 scope global tap1
valid_lft forever preferred_lft forever
Tenga en cuenta que lo que aparece en "interfaces" en la salida de brctl show
son los otros interfaces adjuntas al puente, además del br0
interfaz que se agregó automáticamente cuando se creó el puente. (Supongo que Linux no permite crear un puente virtual sin dispositivos conectados, y los puentes sin dispositivos se destruyen automáticamente). Para que conste, no he investigado esto en el kernel, ni soy un experto en redes. Publiqué esto porque parece explicar de manera convincente la implementación bastante confusa de los puentes virtuales en Linux. No creo que los puentes virtuales mismos tengan direcciones MAC.