Aplicativo que recebe o boradcast de uma sub-rede diferente

2

Tenho 2 caixas Linux com a seguinte descrição

Caixa A: Kernel: Linux 2.6 IP: 172.19.1.99/24

Caixa B: Kernel: Linux 3.14 IP: 192.168.200.100/24

Conectado com o switch da camada 2

Ambas as caixas executam um serviço de transmissão UDP e um serviço UDP Receiver. O que quer que seja enviado por transmissão é recebido pelo recebimento do serviço. Esses serviços juntos formam o protocolo de descoberta personalizado usado por um aplicativo da Web executado nessas caixas.

Problema:

Quando a Caixa A é movida para a sub-rede 192.168.200.0/24 e depois movida de volta para a sub-rede 172.19.1.0/24, o serviço receptor na Caixa B ainda receberá a transmissão da Caixa A, mas tecnicamente deve parar de receber a transmissão de A. Agora mesmo serviço em execução na Caixa A não recebe a transmissão da Caixa B neste ponto.

Só para confirmar eu anexei strace ao serviço de recebimento na Caixa B e posso ver que a chamada do sistema recvfrom está, de fato, recebendo broadcast enviado pelo Box A para endereço 192.168.200.255.

Agora, se eu matar o serviço de recebimento na Caixa B e reiniciá-lo, ele deixará de receber as transmissões enviadas da Caixa A.

Em suma, o problema é visto apenas quando uma caixa em execução na mesma sub-rede é migrada para uma sub-rede diferente e só é vista na Caixa B.

Alguma idéia de por que isso pode estar acontecendo?.

UPDATE: Apenas para adicionar mais informações, o Box B também usa o iptables com módulos conntrack. Isso pode influenciar este comportamento?.

    
por Vasudev 03.02.2017 / 09:41

0 respostas