SynProxy ne peut pas renvoyer les paquets syn ack avec une topologie asymétrique à double pont

12

J'ai une topologie asymétrique à double pont comme indiqué ci-dessous lorsque je me connecte à partir de 172.16.11.5 et 172.16.10.6 avec ssh mais je ne peux pas me connecter à cause de 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
                  |     |
                  -------

Sur toutes les machines entre 172.16.11.5 et 172.16.10.6, le "filtrage rp" est désactivé et le "transfert IP" est activé. Il y a une machine au milieu de la topologie qui s'appelle une machine "XXX". XXX a deux ponts et un SynProxy.

Lorsque SynProxy est désactivé sur XXX, je peux envoyer une requête ping de 172.16.11.5 à 172.16.10.6 et les paquets icmp suivent ce chemin: br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0. De plus, je peux accéder de 172.16.11.5 à 172.16.10.6 avec ssh. Le trafic TCP fonctionne donc comme je m'y attendais.

Cependant, lorsque SynProxy est activé sur XXX, je peux envoyer une requête ping de 172.16.11.5 à 172.16.10.6 et les paquets icmp suivent le même chemin. Mais je ne peux pas accéder de 172.16.11.5 à 172.16.10.6 en utilisant ssh. En effet, synproxy ne peut pas envoyer de réponses syn ack via br1 iface. Si j'ajoute une route pour les paquets synack sur XXX, je peux me connecter de 172.16.11.5 à 172.16.10.6 avec ssh.

route add 172.16.11.5 dev enp10s0f0

Règles SynProxy pour 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

Mais ce n'est pas acceptable car le réseau 172.16.11.0 est cloud. Donc, je ne pouvais pas ajouter l'itinéraire tout le réseau cloud à la table de routage et je ne pouvais pas ajouter l'adresse mac à la table arp.

Comment puis-je me connecter de 172.16.11.5 à la machine 172.16.10.6 à l'aide de ssh lorsque SynProxy est activé sur XXX? ou est-ce possible?

Merci d'avance,

nyzsirt
la source
Pouvez-vous dire quelles sont les valeurs medium_iddes interfaces de pont sur le synproxy? En outre, quelles sont vos règles SYNPROXY réelles dans toutes les tables?
Alexander Janssen
J'ai ajouté des règles iptables pour SynProxy. Mais je ne sais rien de medium_id. J'ai cherché rapidement sur internet mais ce n'est pas heplful @AlexanderJanssen
nyzsirt

Réponses:

0

Le moyen le plus simple que je vois pour résoudre ce problème est de modifier les itinéraires par défaut sur les machines de passerelle pour utiliser le même pont afin qu'il ne soit plus asymétrique.

  • Sur 172.16.11.6, définissez la valeur par défaut sur 2.2.2.1 (via br0)
  • Sur 172.16.10.1, définissez la valeur par défaut sur 2.2.2.2 (via br0)

Je suis curieux de savoir pourquoi il a été conçu de cette façon ... quel est le but du deuxième pont?

Rusé
la source