Usando ebtables para descartar pacotes de bridge e rotear via Tinc VPN

1

Temos uma ponte configurada no Ubuntu para vincular nossa LAN ao nosso gateway, que está na mesma sub-rede. Precisamos que isso seja capaz de controlar o tráfego e, no momento, não estamos em condições de alterar as sub-redes, de modo que não possamos simplesmente rotea-lo.

O gateway é controlado através de nosso ISP que fornece MPLS para várias outras / 24 sub-redes 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 do Tinc para a 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 em pacotes que passam pela ponte da LAN para determinados destinos (por exemplo, 192.168.5.0/24) para fazer com que eles passem pelo tinc. ou seja: 192.168.10.x na LAN para 192.168.5.x deve passar por tinc e não para o gateway.

Gostaríamos que isso funcionasse para todas as máquinas na LAN sem ter que 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 a rota estática funcionar, também tivemos que habilitar proxy_arp para todas as interfaces em 192.168.10.3.

Nós 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 do mangle e foram marcados, mas não foram encaminhados para a interface tincvpn

Nosso entendimento era que precisávamos descartar os pacotes da ponte usando ebtables e depois usar o 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, será apreciado.

Muito obrigado,

Tom

    
por Tom 20.05.2013 / 12:12

0 respostas