Por que o Linux requer mover o IP da interface eth para a interface bridge

27

Quando uma interface de rede (por exemplo, eth0) é adicionada a uma ponte Linux (por exemplo, br0), o endereço IP deve ser removido de eth0 e adicionado a br0 para que a rede funcione corretamente.

Lembro-me de ler em algum arquivo leia-me do Open vSwitch (que não consigo encontrar no momento) que a movimentação do endereço IP é necessária devido à maneira como o kernel do Linux é implementado. O que há na implementação do Linux que exige que o endereço IP seja movido da NIC para a ponte?

Lorin Hochstein
fonte

Respostas:

10

A NIC representa o cabo de ligação ascendente. Um cabo é a camada 1, não a camada 3.

Agora o Bridge funciona como o dispositivo que está sendo endereçado para tráfego de rede (de entrada) no servidor - na camada 2 (Ethernet / MAC) e / ou na camada 3 (IP).

Portanto, o dispositivo que responde às solicitações de ARP é a ponte - o que é bom, pois precisa distribuir o tráfego para as outras interfaces nessa ponte.

Se o dispositivo de resposta fosse a NIC, o tráfego não seria repassado para a ponte.

Em alguns guias, é recomendável até remover o MAC da NIC (ligação ascendente).

Nils
fonte
Então, falando sobre os mecanismos linux reais (não sobre boas práticas), significa que se eu colocar uma interface sob uma ponte, ela não será mais considerada pelo kernel como uma interface endereçável L2 / L3? direito ? Como nada impede de atribuir um MAC / IP, é confuso.
Jocelyn delalande
11
@Jocelyn O contrário. Se ainda for endereçável como L2 / 3, bloqueará o outro tráfego. Portanto, não deve ser endereçado diretamente se estiver em uma ponte.
Nils
ok, mas por padrão a porta permanece endereçável em L2 (mantém um MACaddr se eu não removê-lo), certo? por que permite que o tráfego L2 flua para a ponte?
Jocelyn delalande
2
@Jocelyn Desde que não responda às solicitações de arp, tudo ficará bem em l2 / 3. Se não capturar pacotes, deixará passar pacotes para a parte de rede do kernel.
Nils
Está bem. Eu perguntei porque notei que algum tráfego foi descartado ao atribuir um endereço à porta; mas foi causado por rp_filter.
Jocelyn delalande #
1

A ponte distribui o tráfego para onde precisa ir quando várias interfaces estão em uma ponte. Mais ou menos, as interfaces individuais na ponte estão trabalhando na camada 2 agora, de acordo com o que a ponte determina, não independentemente na camada 3. Portanto, você deseja endereçar a ponte como um todo, não as interfaces individuais dentro dela.

LawrenceC
fonte