Ubuntu Linux - duas interfaces, mesma sub-rede, diferentes vlan - problemas MAC / ARP

6

Estou tentando configurar um servidor que precisa ter interfaces na mesma sub-rede IP, mas diferentes VLANs:

eth1.102  Link encap:Ethernet  HWaddr 00:50:56:b1:00:0f  
          inet addr:10.1.1.6   Bcast:10.1.1.255  Mask:255.255.255.0

eth1.103  Link encap:Ethernet  HWaddr 00:50:56:b1:00:0f  
          inet addr:10.1.1.12  Bcast:10.1.1.255  Mask:255.255.255.0

O problema que estou vendo é que quando uma solicitação ARP chega de um dispositivo em uma das sub-redes, o servidor responde apenas ao ARP em uma interface e parece ignorar qualquer ARP na outra interface:

Primeira interface:

# ping -I eth1.102 10.1.1.1
PING 10.1.1.1 (10.1.1.1) from 10.1.1.6 eth1.102: 56(84) bytes of data.
^C
--- 10.1.1.1 ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7008ms

segunda interface:

# ping -I eth1.103 10.1.1.1
PING 10.1.1.1 (10.1.1.1) from 10.1.1.12 eth1.103: 56(84) bytes of data.
64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.400 ms
64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=0.332 ms
^C

(para o registro, 10.1.1.1 existe em ambas as sub-redes em ambas as VLANs)

# arp -an
? (10.1.1.1) at 02:00:1a:f2:00:02 [ether] on eth1.103
? (10.1.1.1) at 02:00:72:a3:00:08 [ether] on eth1.102

Mesmo se eu fizer ping do dispositivo cliente para o IP específico da interface do servidor, ele ainda será ignorado em uma e responderá na outra.

O Ubuntu tem alguns filtros arp / spoofing por padrão, então eu desativei o que eu posso encontrar, por exemplo

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

Eu já vi algumas perguntas com problemas semelhantes, mas geralmente é com o fluxo de ARP porque é o mesmo segmento (não separado por VLAN) e a solicitação ARP está sendo respondida por ambos, o que não é o caso aqui. Se eu tcpdump ambas as interfaces, o ARP vindo que não é respondido não é visto em qualquer lugar em qualquer outra interface (pensando nas linhas que está respondendo em uma interface diferente) - parece apenas silenciosamente ignorar o pedido.

Alguém se deparou com isso antes?

EDITAR:

Okay, sinta-se um pouco idiota, mas pode ajudar os outros ...

Eu estava na área certa desativando o rp_filter, mas presumivelmente porque ele está ativado por padrão com o Ubuntu ele o aplicou em todas as interfaces, então enquanto eu definia rp_filter = 0 para as duas entradas listadas acima, o configurações de interface ainda eram 1, assim ..

# sysctl -w net.ipv4.conf.eth1/102.rp_filter=0
# sysctl -w net.ipv4.conf.eth1/103.rp_filter=0

... fez o truque.

    
por Andy Coates 09.03.2012 / 17:13

1 resposta

4

Você precisa desabilitar o filtro de caminho inverso (rp_filter) para cada interface individual

# sysctl -w net.ipv4.conf.eth1/102.rp_filter=0
# sysctl -w net.ipv4.conf.eth1/103.rp_filter=0
    
por 18.03.2013 / 20:10