SynProxy无法返回具有非对称双桥拓扑的syn ack数据包


12

当我使用ssh从172.16.11.5和172.16.10.6连接时,我具有如下所示的非对称双桥拓扑,但是由于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
                  |     |
                  -------

在172.16.11.5和172.16.10.6之间的所有计算机上,“ rp过滤”已关闭,“ ip转发”已打开。拓扑中间有一台机器,称为“ XXX”机器。XXX有两个桥和一个SynProxy。

当SynProxy在XXX上关闭时,我可以从172.16.11.5 ping到172.16.10.6,icmp数据包遵循以下路径:br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0。另外,我可以使用ssh从172.16.11.5到172.16.10.6进行访问。因此,TCP流量可以按我的预期工作。

但是,当SynProxy在XXX上打开时,我可以从172.16.11.5 ping到172.16.10.6,并且icmp数据包遵循相同的路径。但是我无法使用ssh从172.16.11.5访问172.16.10.6。这是因为synproxy无法通过br1 iface发送syn ack答复。如果我在XXX上为synack数据包添加路由,则可以使用ssh从172.16.11.5连接到172.16.10.6。

路由添加172.16.11.5 dev enp10s0f0

XXX的SynProxy规则:

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

但这是不可接受的,因为172.16.11.0网络是云。所以我无法将路由所有云网络添加到路由表,也无法将mac地址添加到arp表。

在XXX上打开SynProxy后,如何使用ssh从172.16.11.5连接到172.16.10.6计算机?或有可能吗?

提前致谢,


您能告诉一下medium_idsynproxy上桥接接口的值是什么?另外,您在所有表格中实际使用的SYNPROXY规则是什么?
亚历山大·詹森

我为SynProxy添加了iptables规则。但是我对medium_id一无所知。我在互联网上进行了快速搜索,但搜索结果并不令人满意@AlexanderJanssen
nyzsirt

Answers:


0

我可以看到解决此问题的最简单方法是将网关计算机上的默认路由更改为使用同一网桥,以使其不再不对称。

  • 在172.16.11.6上将默认设置为2.2.2.1(通过br0)
  • 在172.16.10.1上将默认设置为2.2.2.2(通过br0)

我很好奇为什么如此设计……第二座桥的目的是什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.