nyz*_*irt 13 linux tcp tcpdump linux-networking
当我使用 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
| |
-------
Run Code Online (Sandbox Code Playgroud)
在 172.16.11.5 和 172.16.10.6 之间的所有机器上,“rp 过滤”关闭而“ip 转发”打开。拓扑中间有一台机器,称为“XXX”机器。XXX 有两个网桥和一个 SynProxy。
当在 XXX 上关闭 SynProxy 时,我可以从 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 流量按我的预期工作。
但是,当在 XXX 上打开 SynProxy 时,我可以从 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
Run Code Online (Sandbox Code Playgroud)
但这是不可接受的,因为 172.16.11.0 网络是云。所以我无法将路由所有云网络添加到路由表,也无法将 mac 地址添加到 arp 表。
在 XXX 上打开 SynProxy 时,如何使用 ssh 从 172.16.11.5 连接到 172.16.10.6 机器?或者有可能吗?
提前致谢,
我认为解决此问题的最简单方法是更改网关计算机上的默认路由以使用同一网桥,使其不再不对称。
我很好奇为什么要这样设计……第二座桥的目的是什么?