SynProxy no puede devolver paquetes syn ack con topología asimétrica de doble puente

12

Tengo una topología asimétrica de puente doble como se muestra a continuación cuando me conecto desde 172.16.11.5 y 172.16.10.6 con ssh pero no puedo conectarme debido a SynProxy.

                  -------
                  |     |
                  ---o--- 172.16.11.5
                     |
                     |
                -----o----- 172.16.11.6
                |         |
                |         | default gw 1.1.1.1
                |         |
     1.1.1.2/30 --o----o--- 2.2.2.2/30
                  |    |
                  |    |
                  |    | (enp10s0f0)
              ----o----o-----
              |             |
              |     XXX     |
              |             |
              |  br1   br0  | synproxy
              |             |
              ----o----o-----
                  |    |
                  |    |
                  |    |
     1.1.1.1/30 --o----o--- 2.2.2.1/30
                |         |
                |         | default gw 2.2.2.2
                |         |
                -----o----- 172.16.10.1
                     |
                     |
                  ---o--- 172.16.10.6
                  |     |
                  -------

En todas las máquinas entre 172.16.11.5 y 172.16.10.6 "rp filtering" está desactivado y "ip forwarding" está activado. Hay una máquina en el medio de la topología que se llama máquina "XXX". XXX tiene dos puentes y un SynProxy.

Cuando SynProxy está APAGADO en XXX, puedo hacer ping desde 172.16.11.5 a 172.16.10.6 y los paquetes icmp siguen esta ruta: br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0. Además, puedo acceder desde 172.16.11.5 a 172.16.10.6 con ssh. Entonces, el tráfico TCP funciona como esperaba.

Sin embargo, cuando SynProxy se ENCIENDE en XXX, puedo hacer ping desde 172.16.11.5 a 172.16.10.6 y los paquetes icmp siguen la misma ruta. Pero no puedo acceder desde 172.16.11.5 a 172.16.10.6 usando ssh. Esto se debe a que synproxy no puede enviar respuestas de sincronización a través de iface br1. Si agrego una ruta para paquetes synack en XXX, puedo conectarme desde 172.16.11.5 a 172.16.10.6 con ssh.

ruta agregar 172.16.11.5 dev enp10s0f0

Reglas de SynProxy para XXX:

iptables -t raw -A PREROUTING -i br0 -p tcp -m physdev --physdev-in 
enp10s0f0 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j CT --notrack
iptables -t raw -A PREROUTING -i br1 -p tcp -m physdev --physdev-in 
enp11s0f0 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j CT --notrack

iptables -t filter -A FORWARD -i br0 -p tcp -m physdev --physdev-in 
enp10s0f0 -m tcp -m state --state INVALID,UNTRACKED -j SYNPROXY 
--sack-perm --timestamp --wscale 7 --mss 1460
iptables -t filter -A FORWARD -i br0 -m physdev --physdev-in enp10s0f0 
-m state --state INVALID -j DROP
iptables -t filter -A FORWARD -i br1 -p tcp -m physdev --physdev-in 
enp11s0f0 -m tcp -m state --state INVALID,UNTRACKED -j SYNPROXY 
--sack-perm --timestamp --wscale 7 --mss 1460
iptables -t filter -A FORWARD -i br1 -m physdev --physdev-in enp11s0f0 
-m state --state INVALID -j DROP

Pero esto no es aceptable porque la red 172.16.11.0 es en la nube. Por lo tanto, no pude agregar la ruta de toda la red en la nube a la tabla de rutas y no pude agregar la dirección mac a la tabla arp.

¿Cómo puedo conectarme desde 172.16.11.5 a la máquina 172.16.10.6 usando ssh cuando SynProxy está activado en XXX? o es posible?

Gracias por adelantado,

nyzsirt
fuente
¿Puedes decir qué valores tienen las medium_idinterfaces bridge en synproxy? Además, ¿cuáles son sus reglas SYNPROXY reales en todas las tablas?
Alexander Janssen
Agregué las reglas de iptables para SynProxy. Pero no sé nada sobre medium_id. Busqué rápidamente en Internet, pero no es útil @AlexanderJanssen
nyzsirt

Respuestas:

0

La forma más simple que puedo ver para solucionar esto es cambiar las rutas predeterminadas en las máquinas de puerta de enlace para usar el mismo puente para que ya no sea asimétrico.

  • En 172.16.11.6 establezca el valor predeterminado como 2.2.2.1 (a través de br0)
  • En 172.16.10.1 establezca el valor predeterminado como 2.2.2.2 (a través de br0)

Tengo curiosidad por saber por qué ha sido diseñado de esta manera ... ¿cuál es el propósito del segundo puente?

Difícil
fuente