SynProxy non è in grado di restituire i pacchetti sincronizzati con topologie asimmetriche a doppio ponte

Ho una topologia a doppio ponte asimmetrico come mostrato di seguito quando ho collegato da 172.16.11.5 e 172.16.10.6 con ssh, ma non riesco a connettersi a causa di 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 | | ------- 

Su tutte le macchine tra 172.16.11.5 e 172.16.10.6 "filter rp" è spento e "inoltro ip" è acceso. C'è una macchina al centro della topologia che viene chiamata macchina "XXX". XXX ha due ponti e una SynProxy.

Quando SynProxy viene distriggersto su XXX, posso pingare da 172.16.11.5 a 172.16.10.6 e i pacchetti icmp seguire questo path: br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0. Inoltre, posso accedere da 172.16.11.5 a 172.16.10.6 con ssh. Quindi il traffico TCP funziona come mi aspetto.

Tuttavia, quando SynProxy è triggersto su XXX, posso pingare da 172.16.11.5 a 172.16.10.6 e i pacchetti ICMP seguire lo stesso path. Ma non posso accedere da 172.16.11.5 a 172.16.10.6 utilizzando ssh. Questo perché il sinproxy non può submit risposte sincronizzate tramite br1 iface. Se aggiungo un path per i pacchetti di synack su XXX, posso collegarmi da 172.16.11.5 a 172.16.10.6 con ssh.

path aggiungere 172.16.11.5 dev enp10s0f0

Regole SynProxy per 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 

Ma questo non è accettabile perché la networking 172.16.11.0 è cloud. Quindi non ho potuto aggiungere rotta tutta la networking cloud alla tabella di routing e non potrei aggiungere indirizzo MAC alla tabella arp.

Come posso colbind da 172.16.11.5 alla macchina 172.16.10.6 utilizzando ssh quando SynProxy è triggersto su XXX? o è ansible?

Grazie in anticipo,

  • Problema di Nginx TCP Fast Open
  • tcpdump on interface bridge (virbr) non riceve alcun pacchetto destinato a uno dei suoi indirizzi
  • Segmenti TCP di una richiesta HTTP in ordine errato
  • Come posso filtrare i Heartbeats di Replica MongoDB con tcpdump?
  • Esaminare localmente il traffico di networking della macchina remota
  • filter tcpdump sulla networking e la maschera di substring
  • Che cosa significa "SSAP sconosciuto" e "DSP sconosciuto" in tcpdump?
  • Fare dump TCP senza perdite di pacchetti
  • One Solution collect form web for “SynProxy non è in grado di restituire i pacchetti sincronizzati con topologie asimmetriche a doppio ponte”

    Il modo più semplice che posso vedere per risolvere questo problema è quello di cambiare le rotte predefinite sulle macchine gateway per utilizzare lo stesso ponte in modo che non sia più asimmetrica.

    • In 172.16.11.6 impostare l'impostazione predefinita come 2.2.2.1 (via br0)
    • In 172.16.10.1 impostare il valore predefinito come 2.2.2.2 (via br0)

    Sono curioso di come sia stato progettato in questo modo … qual è lo scopo del secondo ponte?

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.