------- | | ---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之间的所有机器上@H_502_2@“rp filtering”已关闭,“ip forwarding”已启用.@H_502_2@拓扑中间有一台机器@H_502_2@叫“XXX”机器. XXX有两个桥和一个SynProxy.
当在XXX上关闭SynProxy时,我可以ping通@H_502_2@172.16.11.5到172.16.10.6和icmp数据包如下@H_502_2@该路径:br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0.@H_502_2@另外,我可以从172.16.11.5访问到@H_502_2@172.16.10.6 with ssh.因此TCP流量按预期工作.
但是,当在XXX上打开SynProxy时,我可以ping通@H_502_2@从172.16.11.5到172.16.10.6,然后是icmp数据包@H_502_2@同样的道路.但我无法从172.16.11.5访问@H_502_2@使用ssh到172.16.10.6这是因为synproxy可以@H_502_2@不通过br1 iface发送syn ack回复.如果我添加一个@H_502_2@在XXX上的synack数据包的路由,我可以连接@H_502_2@带有ssh的172.16.11.5到172.16.10.6.
route add 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,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网络@H_502_2@是云.所以我无法添加路由所有云网络@H_502_2@路由表,无法将MAC地址添加到arp@H_502_2@表.
如何从172.16.11.5连接到172.16.10.6@H_502_2@在XXX上打开SynProxy时使用ssh的机器?@H_502_2@或者有可能吗?
提前致谢,