duas NICs na mesma sub-rede - precisa configurar o roteamento

0

Eu tenho um caso complicado:

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

Em D2 eth0 e eth1 têm endereços IP da mesma sub-rede: eth0 10.1.1.1/24 , eth1 10.1.1.2/24 . Interfaces no D1 não têm endereços designados e atuam como um switch.

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

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

Obrigado.

    
por Mark 08.01.2015 / 20:53

2 respostas

1

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

Eu pensei que seria possível usar iptables e DNAT para alterar o destino para um endereço não usado na sub-rede e usar ip neigh para definir o endereço MAC estaticamente para o outro NIC, mas nem mesmo a regra DNAT é correspondida por 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.1 on eth0 . Mas você precisaria de proxy ARP e DNAT para mover os pacotes de entrada da interface física para a virtual.

Se vale a pena esse esforço?

    
por 08.01.2015 / 21:44
0

Os namespaces de rede podem ser uma opção. Eles são essencialmente instâncias independentes da pilha de rede, pelo que, em teoria, deveriam poder separar duas interfaces.

A última vez que tentei jogar com eles, não consegui fazer com que a coisa funcionasse corretamente.

    
por 20.06.2016 / 00:31