Por que atribuir endereços MAC e IP na interface Bridge

Por que atribuir endereços MAC e IP na interface Bridge

Digamos que eu crie uma interface bridge no Linux ( br0) e adicione algumas interfaces a ela ( eth0,, tap0etc.). Meu entendimento é que essa interface funciona como um switch virtual com todas as interfaces/portas que eu adiciono a ela.

Qual é o significado de atribuir um endereço MAC e um endereço IP a essa interface? A interface atua como uma porta adicional no switch/ponte que permite que outras portas acessem a máquina host?

Já vi algumas páginas falarem sobre a atribuição de um endereço IP a uma ponte. A atribuição MAC está implícita (ou automática)?

Responder1

Como uma ponte é um dispositivo Ethernet, ela precisa de um endereço MAC. Uma ponte Linux pode originar coisas como quadros de protocolo spanning-tree, e tráfego como esse precisa de um endereço MAC de origem.

Uma ponte nãoexigirum endereço IP. Existem muitas situações em que você não terá um. No entanto, em muitos casos vocêpoderiatenha um, como:

  • Quando a ponte atua como gateway padrão para um grupo de contêineres ou máquinas virtuais (ou mesmo interfaces físicas). Neste caso é necessário um endereço IP (porque o roteamento acontece na camada IP).

  • Quando sua NIC "primária" é membro da ponte, de modo que a ponte seja sua conectividade com o mundo exterior. Nesse caso, em vez de atribuir um endereço IP a (por exemplo) eth0, você o atribuiria ao dispositivo ponte.

Se a ponte estivernãonecessário para roteamento IP, então não precisa de um endereço IP. Exemplos desta situação incluem:

  • Quando a ponte está sendo usada para criar uma rede privada de dispositivos sem conectividade externa ou com conectividade externa fornecida por meio de um dispositivo diferente da ponte.

Responder2

O dispositivo de ponte listado com seus outros dispositivos de rede não representa a ponte virtual, mas sim uma NIC virtual conectada à ponte. Se você tivesse uma ponte física conectada a dispositivos de rede físicos, também não veria a ponte física listada em seus dispositivos de rede - mas veria sua NIC conectada à ponte, que obviamente tem seu próprio endereço MAC, como qualquer outro dispositivo de rede.

Atribuir um endereço IP ao dispositivo de ponte (que, novamente, é na verdade uma NIC virtual conectada à ponte virtual) permite que seu dispositivo host roteie pacotes para a sub-rede criada pela ponte e todos os dispositivos conectados a ela. Organizado!

Embora ferramentas de dispositivos de rede como iproute2(com os comandos ip linke ip addr) permitam ver a NIC virtual conectada à ponte, também é possível ver a própria ponte virtual com o brctlprograma. O brctl showcomando listará todas as pontes e suas interfaces anexadas. Aqui está um exemplo usando iproutee brctlcom pontes e tuntaps Linux:

# 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

Observe que o que está listado em "interfaces" na saída de brctl showsão osoutrointerfaces anexadas à ponte, além da br0interface que foi adicionada automaticamente quando a ponte foi criada. (Acho que o Linux não permite a criação de uma ponte virtual sem dispositivos conectados, e pontes sem dispositivos são destruídas automaticamente.) Só para constar, não pesquisei isso no kernel, nem sou um especialista em redes. Postei isso porque parece explicar de forma convincente a implementação bastante confusa de pontes virtuais no Linux. Não acredito que as próprias pontes virtuais tenham endereços MAC.

Responder3

Sim, a interface bridge atua como uma porta adicional.

Depois man 5 systemd.netdev:

Um dispositivo bridge é um switch de software, e cada um de seus dispositivos escravos e a própria bridge são portas do switch.

Responder4

As br0interfaces virbr0e listadas por ip addre ip linksão interfaces tap que conectam o host à br0ponte e virbr0à ponte, respectivamente. Esta sobrecarga de nomes pode certamente ser confusa.

Então, o que é virbr0-nic?

Isso não fazia parte da pergunta original, mas acrescentarei meus 2 centavos aqui, pois isso me confundiu no passado. virbr0-nicé uma interface fictícia cujo endereço MAC é usado pela virbr0ponte como seu próprio endereço MAC. Essa interface sempre presente existe para evitar que virbr0o endereço MAC do seja alterado quando portas são adicionadas ou removidas dinamicamente da ponte. O host não envia nenhum tráfego pela virbr0-nicinterface.

Verhttps://backreference.org/2010/07/28/linux-bridge-mac-addresses-and-dynamic-portsehttps://www.redhat.com/archives/libvirt-users/2012-September/msg00038.htmlpara uma explicação.

informação relacionada