Forçar o tráfego de rede local através do switch

Forçar o tráfego de rede local através do switch

Tenho uma máquina com três placas de rede. Uma placa está conectada a uma WAN e as outras duas placas estão conectadas ao mesmo switch com a mesma sub-rede (192.168.1.0/24). O que eu quero fazer é enviar dados entre as duas placas, mas certifique-se de que os dados realmente passem pelo switch, em vez de permanecerem internos na pilha de rede do Linux.

Quando configuro as duas placas normalmente e tento pingar uma da outra, funciona mas o Wireshark não mostra nenhum tráfego, então não vai para a rede.

Eu tentei configurar rotas estáticas para o switch tentando forçar todo o tráfego a passar pelo switch. Quando faço isso, os pings são respondidos pela rede e recebo uma enxurrada de solicitações ARP sem resposta tentando encontrar o outro endereço. Mas qualquer um dos endereços pode executar ping em outra máquina na sub-rede, e essa máquina pode executar ping em qualquer endereço.

Tentei alterar as configurações do filtro arp no kernel do Linux, mas sem sorte.

Alguma sugestão? Obrigado!

Além disso, pontos extras por configurar uma NIC com alias de IP para fazer a mesma coisa.

Responder1

Sou novo aqui, mas talvez tenha a resposta para essa pergunta.

O sistema operacional tentará reconhecer que a outra placa de rede é um desenvolvedor local. Eu acho que você pode usar o 'desenvolvedor'opção para'rota ip' para forçar a saída da outra placa de rede.

Por exemplo, eu tenho um endereço IP:

45.32.160.129

E a rota para esta sub-rede mostra o dispositivo dev ens3

45.32.160.0/24 dev ens3 proto kernel scope link src 45.32.160.129

Mas digamos que eu tenha outra placa de rede, ens4 em 45.32.161.4/24:

45.32.161.0/24 dev ens4 proto kernel scope link src 45.32.161.4

então você pode usar o 'desenvolvedor'opção para'rota ip'para especificar o dispositivo usado. Desta forma você pode especificar que a outra placa de rede use a si mesma para o ip ens3 em vez de usar o ens3 (própria) quando você tentar acessá-la a partir da máquina local. O truque para isso é que você também precisa usar o roteamento de políticas. Porque você não pode fazer com que a placa de rede tente acessar a si mesma e sair da interface das outras placas também, porque ela nunca se encontrará. Portanto, você deve especificar com o roteamento de política/fonte que ele só deve passar pela outra placa quando essa placa estiver tentando acessá-la. É aí que você teria que especificar uma correspondência de origem. Ainda mais, você teria que se certificar de que está vinculando o endereço de origem IP correto no software de rede de sua escolha que você está tentando usar ou testar. Isso deve forçá-lo a acessar a outra placa de rede pelo switch. É claro que você faria o mesmo com o outro cartão, mas ao contrário.

Isso pode resolver seu problema. Olhe para a 'rota ip' página de manual para precedência de rota e o 'desenvolvedor'parâmetro. Em seguida, observe a correspondência de regras para fazer a parte da política. Deve ser algo assim:

ip rule add from 45.32.161.4 lookup from1
ip rule add from 45.32.160.129 lookup from2

Em seguida, adicione as rotas opostas:

ip route add 45.32.160.129 via 45.32.161.4 dev ens4 table from1
ip route add 45.32.161.4 via 45.32.160.129 dev ens3 table from2

E você precisa que essas tabelas sejam criadas em /etc/iproute2

informação relacionada