Uso de ebtables para eliminar paquetes del puente y enrutarlos a través de Tinc VPN

Uso de ebtables para eliminar paquetes del puente y enrutarlos a través de Tinc VPN

Tenemos un puente configurado en Ubuntu para vincular nuestra LAN a nuestra puerta de enlace que está en la misma subred. Necesitamos esto para poder controlar el tráfico y actualmente no estamos en condiciones de cambiar las subredes, por lo que no podemos simplemente enrutarlo.

La puerta de enlace se controla a través de nuestro ISP, que proporciona MPLS a otras subredes /24 dentro de 192.168.0.0/16.

La configuración actual es la siguiente:

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

Esto funciona bien y no causa ningún problema.

También tenemos una VPN Tinc para la infraestructura de nuestro centro de datos en el mismo servidor (192.168.10.3) que no forma parte del puente. es decir:

tincvpn   Link encap:Ethernet  HWaddr ..
          inet addr:192.168.10.3  Bcast:192.168.255.255  Mask:255.255.0.0
          ...

Nos gustaría anular el enrutamiento de los paquetes que pasan a través del puente desde la LAN para ciertos destinos (por ejemplo, 192.168.5.0/24) para que pasen a través de tinc. es decir: 192.168.10.x en LAN a 192.168.5.x debe ir a través de tinc y no a la puerta de enlace.

Nos gustaría que esto funcione para todas las máquinas en la LAN sin tener que configurar nada, pero por ahora hemos encontrado una solución que es agregar la siguiente ruta estática a cada PC/Servidor en la LAN:

route add -net 192.168.5.0/24 via 192.168.10.3 dev eth0

Para que funcione la ruta estática, también tuvimos que habilitar proxy_arp para todas las interfaces en 192.168.10.3.

Probamos la siguiente configuración pero no funcionó:

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

Con esta configuración, los paquetes llegaron a la regla de mangle y se marcaron, pero no se enrutaron a la interfaz tincvpn.

Entendimos que necesitábamos eliminar los paquetes del puente usando ebtables y luego usar el enrutamiento basado en políticas para hacer que los paquetes pasaran por tinc. ¿Es correcto este entendimiento?

Si alguien tiene alguna idea de por qué esto no funcionó, se lo agradecería.

Muchas gracias,

Tomás

información relacionada