duas NICs na mesma sub-rede - é necessário configurar o roteamento

duas NICs na mesma sub-rede - é necessário configurar o roteamento

Eu tenho um caso complicado:

+---+                      +----+
|D1 +->eth0---------<-eth0-+D2  |
|   |                      |    |
|   +->eth1---------<-eth1-+    |
+---+                      +----+

Em D2 eth0e eth1​​possuem endereços IP da mesma sub-rede: eth0 10.1.1.1/24, eth1 10.1.1.2/24. As interfaces em D1 não possuem endereços atribuídos e funcionam como um switch.

Agora, quero que D2 possa enviar o tráfego para 10.1.1.2via eth0, então o caminho do pacote deve ser: D2(eth0)--D1(eth0)--D1(eth1)--D2(eth1).

No momento em que faço ping 10.1.1.2do D2 ele envia pacotes localmente, ou seja, D1 não recebe nenhum. O que devo mudar em D2 para alcançar o comportamento desejado?

Obrigado.

Responder1

O que você deseja não é possível com o Linux. Pelo menos não dentro da camada de roteamento. Se um endereço de destino pertencer a uma interface local, então o pacote sempre passa pela interface de loopback de onde não pode (por RfC) ser roteado para o exterior.

Achei que seria possível usar iptablese DNATalterar o destino para um endereço não utilizado na sub-rede e usar ip neighpara definir o endereço MAC estaticamente para o da outra NIC, mas nem mesmo a DNATregra é correspondida para pacotes para endereços locais.

Pode ser possível com uma máquina virtual ou com namespaces de rede para que o kernel não veja 10.1.1.1o eth0. Mas você precisaria de proxy ARP e DNAT para mover os pacotes recebidos da interface física para a interface virtual.

Se vale a pena esse esforço?

Responder2

Namespaces de rede podem ser uma opção. Eles são essencialmente instâncias independentes da pilha de rede, portanto deveriam, pelo menos em teoria, ser capazes de separar duas interfaces.

Da última vez, tentei brincar com eles, mas não consegui fazer nada funcionar corretamente.

informação relacionada