Eu construí esta configuração simples:
---------------- ----------------
| Linux host A | <----- patch cable -------> | Linux host B |
---------------- ----------------
Então eu configurei 2 VLANs em cada host:
eth1 eth1
| |
|-- eth1.2 -> 192.168.1.2/24 |-- eth1.2 -> 192.168.1.4/24
|-- eth1.3 -> 192.168.1.3/24 |-- eth1.3 -> 192.168.1.5/24
No host A, quando eu faço:
ping -I eth1.2 192.168.1.4
funciona, mas quando eu faço:
ping -I eth1.3 192.168.1.5
não funciona.
Eu tentei definir em ambos os hosts:
sysctl net.ipv4.conf.enth1.rp_filter=0
sysctl net.ipv4.conf.enth1/2.rp_filter=0
sysctl net.ipv4.conf.enth1/3.rp_filter=0
mas isso não resolveu o problema.
Usando o wireshark no host B, o eth1 mostra que o ping com VLAN id 3 é recebido corretamente, mas o host B não responde.
Claro, eu verifiquei o meu iptables:
Chain INPUT
target prot opt in out source destination
ACCEPT all -- eth1 any anywhere anywhere
Chain OUTPUT (policy ACCEPT)
Quando faço no host A, simples:
ping 192.168.1.5
resposta do host B MAS eu vejo com o wireshark que os pacotes são marcados com VLAN id 2,
isso obviamente funciona.
Então, acho que algo está errado com o roteamento de pacotes com tags VLAN para o host B, mas não consigo encontrar o que!