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,
la source
medium_id
des interfaces de pont sur le synproxy? En outre, quelles sont vos règles SYNPROXY réelles dans toutes les tables?Réponses:
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.
Je suis curieux de savoir pourquoi il a été conçu de cette façon ... quel est le but du deuxième pont?
la source