我有一个不对称的双桥拓扑结构,如下所示,当我从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 filtering”closures,“ip forwarding”打开。 在拓扑结构中间有一台机器被称为“XXX”机器。 XXX有两个桥梁和SynProxy。
当XXX上的SynProxyclosures时,我可以从172.16.11.5 ping到172.16.10.6,并且icmp数据包遵循以下path:br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0。 另外,我可以通过ssh访问172.16.11.5到172.16.10.6。 所以TCPstream量正如我所料。
但是,当SynProxy在XXX上打开时,我可以从172.16.11.5 ping到172.16.10.6,并且icmp数据包遵循相同的path。 但是我不能使用ssh从172.16.11.5到172.16.10.6访问。 这是因为synproxy不能通过br1 iface发送同步回复。 如果我在XXX上添加synack数据包的路由,我可以使用ssh从172.16.11.5到172.16.10.6连接。
路由添加172.16.11.5 dev enp10s0f0
SynProxy规则适用于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
但这是不可接受的,因为172.16.11.0networking是云。 所以我不能添加路由所有的云networking到路由表,不能添加MAC地址到ARP表。
SynProxy在XXX上打开时,如何使用ssh从172.16.11.5连接到172.16.10.6机器? 或者可能吗?
提前致谢,
我可以看到解决这个问题最简单的方法是更改网关机器上的默认路由,以使用相同的网桥,使其不再不对称。
我很好奇它为什么这样devise…第二座桥的目的是什么?