У меня топология асимметричного двойного моста, как показано ниже, когда я подключаюсь с 172.16.11.5 и 172.16.10.6 с помощью ssh, но я не могу подключиться из-за 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 на 172.16.10.6, и пакеты icmp следуют по этому пути: br1-> 172.16.10.1-> 172.16.10.6-> 172.16.10.1-> br0. Кроме того, я могу получить доступ с 172.16.11.5 к 172.16.10.6 с помощью ssh. Так что трафик TCP работает так, как я ожидал.
Однако, когда SynProxy включен на XXX, я могу пинговать с 172.16.11.5 на 172.16.10.6, и пакеты icmp следуют по тому же пути. Но я не могу получить доступ с 172.16.11.5 к 172.16.10.6 с помощью ssh. Это связано с тем, что synproxy не может отправлять ответы на синхронизацию через br1 iface. Если я добавлю маршрут для пакетов synack на XXX, я смогу подключиться с 172.16.11.5 к 172.16.10.6 с помощью ssh.
добавить маршрут 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.0 облачная. Поэтому я не мог добавить маршрут всей облачной сети в таблицу маршрутизации и не мог добавить MAC-адрес в таблицу arp.
Как я могу подключиться с 172.16.11.5 к машине 172.16.10.6 с помощью ssh, когда SynProxy включен на XXX? или это возможно?
Заранее спасибо,
Самый простой способ исправить это - изменить маршруты по умолчанию на шлюзовых машинах, чтобы они использовали один и тот же мост, чтобы он больше не был асимметричным.
Мне любопытно, почему он был спроектирован таким образом ... какова цель второго моста?