Bridge não encaminha todo o tráfego (Ubuntu Xenial)

1

Sou muito novo nesse mundo de ponte. Estou com um problema que quebrou meu pescoço para consertar, mas falhei.

Eu tenho uma máquina que tem (Ubuntu xenial 16.04) instalado que tem uma VM guest. Eu criei uma ponte (virbr - que está vinculado a vnet1) para encaminhar todo o tráfego de host - > VM.

Parece que nem todo o tráfego é encaminhado normalmente. Temos muita falta de tráfego. Por exemplo, o Trace-1 chegou à ponte, mas não foi visto na vnet1 (nada foi encaminhado). Trace-1 Amostra de tráfego do rastreamento 1 Alguma idéia por favor? No caso do Trace-2, todos os pacotes vistos no vnet0 (100% encaminhados) entram na descrição da imagem aqui Amostra de tráfego do rastreamento 2

Eu não toquei no iptables

root@physc_host:/proc/sys/net/unix# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc
root@physc_host:/proc/sys/net/unix# 
    
por Banna 13.10.2017 / 16:09

1 resposta

0

Eu encontrei a solução para o meu problema. As pontes precisam aprender quais computadores estão conectados a quais LANs. Mais formalmente, eles precisam aprender se devem encaminhar para cada endereço. Para saber quais endereços estão em uso e quais portas (interfaces na ponte) estão mais próximas, as pontes observam os cabeçalhos dos quadros Ethernet recebidos. Examinando o endereço de origem MAC de cada quadro recebido e registrando a porta na qual ele foi recebido, a ponte pode saber quais endereços pertencem aos computadores conectados por meio de cada porta. Isso é chamado de "aprendizado". Na figura abaixo, considere três computadores X, Y, Z. Suponha que cada um envia quadros para os outros computadores. Os endereços de origem X, Y são observados na rede A, enquanto o endereço do computador Z será observado na rede B.

Os endereços aprendidos são armazenados em uma tabela de endereços de interface associada a cada porta (interface). Uma vez que esta tabela tenha sido configurada, a ponte examina o endereço de destino de todos os quadros recebidos, então verifica as tabelas de interface para ver se um quadro foi recebido do mesmo endereço (ou seja, um pacote com um endereço de origem correspondente ao endereço de destino atual) . Existem três possibilidades:

  1. Se o endereço não for encontrado, nenhum quadro foi recebido da origem. A origem pode não existir ou pode não ter enviado quadros usando esse endereço. (O endereço também pode ter sido excluído pela ponte porque o software da ponte foi reiniciado recentemente, teve poucas entradas de endereço na tabela de interface ou excluiu o endereço porque era muito antigo). Como a bridge não sabe qual porta utilizar para encaminhar o quadro, ela será enviada para todas as portas de saída, exceto aquela em que foi recebida. (É claramente desnecessário enviá-lo de volta para o mesmo segmento de cabo do qual ele foi recebido, uma vez que qualquer outro computador / bridges neste cabo já deve ter recebido o pacote.) Isso é chamado de flooding.

  2. Se o endereço for encontrado em uma tabela de interface e o endereço estiver associado à porta em que foi recebido, o quadro será descartado. (Ele já deve ter sido recebido pelo destino.)

  3. Se o endereço for encontrado em uma tabela de interface e o endereço não estiver associado à porta em que foi recebido, a ponte encaminhará o quadro para a porta associada ao endereço.

Pacotes com uma fonte de X e destino de Y são recebidos e descartados, já que o computador Y está diretamente conectado à LAN A, enquanto os pacotes de X com um destino de Z são encaminhados para a rede B pela ponte.

Para resolver isso: Defina o tempo de envelhecimento para Zero pelo comando abaixo $ brctl setageing br0 0

insira a descrição da imagem aqui

    
por 18.10.2017 / 12:01