Conflicto SNAT de puentes e iptables

Conflicto SNAT de puentes e iptables

Estoy trabajando en una configuración aquí y la hago funcionar con una pequeña excepción.

Los dispositivos en un lado de mi puente no reciben SNAT a Internet.


El diagrama / descripción general:

                Primary_Network (Site_A)
                        |
                        |
Internet ------- Linux_Bridge_GW (GW)
                        |
                        |
                 Secondary/CoLo Site (Site_B)

Aquí está la configuración:

  1. Site_A tiene todos los servidores y estaciones de trabajo de producción.
  2. Site_B tiene un conjunto de servidores a los que nos gustaría realizar una conmutación por error y desde donde también brindar nuestros servicios de Internet.
  3. GW tiene dos interfaces troncalizadas que transportan el tráfico VLAN apropiado (permiten la propagación del tráfico de capa 2 entre sitios) // todo esto funciona perfectamente bien.
  4. El problema que se está encontrando es que los hosts del Sitio_B tienen su GW predeterminado en el Sitio_A (misma subred). El GW no tiene IP en las VLAN que se están pasando.
  5. Todos los hosts del Sitio_A pueden acceder a Internet sin problemas.
  6. GW tiene direcciones en una subred que SÓLO es para tráfico destinado a Internet. (Esto se hizo para que Websense no tuviera que analizar tráfico innecesario. Usamos esta VLAN como fuente del puerto de monitor en el conmutador donde se encuentra Websense).

Lo que creo que está pasando:

  1. El paquete/trama llega a physdev en el Sitio_B con destino a Internet.
  2. El kernel ve el paquete y lo reenvía por el otro lado del puente al GW predeterminado de ese host.
  3. Site_A (que contiene el GW predeterminado de la red central) ve que el paquete está destinado a un host que no conoce, por lo que lo envía a su GW predeterminado (el puente de Linux, ya que está vinculado a Internet).
  4. El núcleo dice "Oye, te he visto antes" y, por lo tanto, no realiza SNAT en el paquete y lo envía a Internet, donde tiene un agujero negro.

Por qué creo que está sucediendo:

  1. Un tcpdump en Internet frente a la NIC muestra que el paquete sale de la interfaz con la dirección privada como origen.

Lo que me gustaría:

  1. Haga que le hagan el SNAT al paquete.
  2. Algo como lo siguiente sería increíble.
    • El paquete llega desde el sitio_B.
    • El kernel ve que el paquete NO está destinado a sí mismo ni a ninguna dirección privada.
    • El kernel dice "OK, bueno, ya que estás destinado a Internet, te enviaré esta interfaz en lugar de reenviarte a tu GW predeterminado normal que es WAAAY".
    • El paquete proviene de Internet y se envía al puente physdev apropiado dependiendo del sitio al que esté destinado el host.

Respuesta1

Si los paquetes están siendo puenteados, por supuesto, iptables nunca los verá.

¿Solución? use ebtables para redirigir los paquetes vinculados a Internet a la máquina para que reciban el tratamiento SNAT (yo usaría -j REDIRECT para alterar MAC)

información relacionada