Temos uma ponte configurada no Ubuntu para conectar nossa LAN ao nosso gateway que está na mesma sub-rede. Precisamos disso para poder controlar o tráfego e, no momento, não estamos em condições de alterar as sub-redes, portanto, não podemos simplesmente roteá-lo.
O gateway é controlado por nosso ISP, que fornece MPLS para várias outras sub-redes /24 dentro de 192.168.0.0/16.
A configuração atual é a seguinte:
192.168.10.1 (gw) <-> eth0 <-> br0 (192.168.10.3) <-> eth1 <-> LAN (192.168.10.0/24)
br0 Link encap:Ethernet HWaddr ..
inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
eth0 Link encap:Ethernet HWaddr ..
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr ..
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Isso está funcionando bem e não está causando problemas.
Também temos uma VPN Tinc para nossa infraestrutura de datacenter no mesmo servidor (192.168.10.3) que não faz parte da ponte. ou seja:
tincvpn Link encap:Ethernet HWaddr ..
inet addr:192.168.10.3 Bcast:192.168.255.255 Mask:255.255.0.0
...
Gostaríamos de substituir o roteamento de pacotes que passam pela ponte da LAN para determinados destinos (por exemplo, 192.168.5.0/24) para fazê-los passar pelo tinc. ou seja: 192.168.10.x na LAN para 192.168.5.x deve passar pelo tinc e não pelo gateway.
Gostaríamos que isso funcionasse para todas as máquinas na LAN sem precisar configurar nada, mas encontramos uma solução alternativa por enquanto que é adicionar a seguinte rota estática a cada PC/Servidor na LAN:
route add -net 192.168.5.0/24 via 192.168.10.3 dev eth0
Para que a rota estática funcionasse também tivemos que habilitar proxy_arp para todas as interfaces em 192.168.10.3.
Tentamos a seguinte configuração mas não funcionou:
ip rule add fwmark 20 lookup 20
ip route add 192.168.0.0/16 dev tincvpn table 20
ebtables -t broute -I BROUTING -i eth1 -p ipv4 --ip-dst 192.168.5.0/24 -j REDIRECT --redirect-target DROP
iptables -t mangle -I PREROUTING -i eth1 -d 192.168.5.0/24 -j MARK --set-mark 20
Com esta configuração os pacotes chegaram à regra mangle e foram marcados, mas não foram roteados para a interface tincvpn
Nosso entendimento era que precisávamos retirar os pacotes da ponte usando ebtables e então usar roteamento baseado em políticas para fazer os pacotes passarem pelo tinc. Esse entendimento está correto?
Se alguém tiver alguma idéia de por que isso não funcionou, agradeceríamos.
Muito obrigado,
Tom