SynProxy tidak dapat mengembalikan paket ack dengan topologi jembatan ganda asimetris

12

Saya memiliki topologi jembatan ganda asimetris seperti yang ditunjukkan di bawah ini ketika saya terhubung dari 172.16.11.5 dan 172.16.10.6 dengan ssh tetapi saya tidak dapat terhubung karena 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
                  |     |
                  -------

Pada semua mesin antara 172.16.11.5 dan 172.16.10.6 "rp filtering" mati dan "ip forwarding" menyala. Ada mesin di tengah topologi yang disebut mesin "XXX". XXX memiliki dua jembatan dan SynProxy.

Ketika SynProxy dimatikan pada XXX, saya dapat melakukan ping dari 172.16.11.5 ke 172.16.10.6 dan paket icmp mengikuti jalur ini: br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0. Selain itu, saya dapat mengakses dari 172.16.11.5 hingga 172.16.10.6 dengan ssh. Jadi lalu lintas TCP berfungsi seperti yang saya harapkan.

Namun, ketika SynProxy diaktifkan ON di XXX, saya bisa melakukan ping dari 172.16.11.5 ke 172.16.10.6 dan paket icmp mengikuti jalur yang sama. Tetapi saya tidak dapat mengakses dari 172.16.11.5 hingga 172.16.10.6 menggunakan ssh. Ini karena synproxy tidak dapat mengirim balasan syn ack melalui br1 iface. Jika saya menambahkan rute untuk paket synack di XXX, saya dapat terhubung dari 172.16.11.5 ke 172.16.10.6 dengan ssh.

rute tambahkan 172.16.11.5 dev enp10s0f0

Aturan SynProxy untuk 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

Tetapi ini tidak dapat diterima karena jaringan 172.16.11.0 adalah cloud. Jadi saya tidak bisa menambahkan rute semua jaringan cloud ke tabel rute dan tidak bisa menambahkan alamat mac ke tabel arp.

Bagaimana saya bisa terhubung dari 172.16.11.5 ke mesin 172.16.10.6 menggunakan ssh ketika SynProxy dihidupkan pada XXX? atau mungkinkah?

Terima kasih sebelumnya,

nyzsirt
sumber
Bisakah Anda memberi tahu nilai apa yang medium_iddimiliki antarmuka jembatan pada synproxy? Juga, apa aturan SYNPROXY Anda yang sebenarnya di semua tabel?
Alexander Janssen
Saya menambahkan aturan iptables untuk SynProxy. Tetapi saya tidak tahu apa-apa tentang medium_id. Saya mencari dengan cepat di internet tetapi tidak dengan senang hati
@AlexanderJanssen

Jawaban:

0

Cara paling sederhana yang bisa saya lihat untuk memperbaikinya adalah mengubah rute default pada mesin gateway untuk menggunakan jembatan yang sama sehingga tidak lagi asimetris.

  • Pada 172.16.11.6 atur default menjadi 2.2.2.1 (via br0)
  • Pada 172.16.10.1 atur default menjadi 2.2.2.2 (via br0)

Saya ingin tahu mengapa ini direkayasa dengan cara ini ... apa tujuan dari jembatan kedua?

Rumit
sumber