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가 있습니다.

XXX에서 SynProxy가 꺼져 있으면 172.16.11.5에서 172.16.10.6으로 ping을 수행 할 수 있으며 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에서 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 네트워크가 클라우드이기 때문에 허용되지 않습니다. 그래서 모든 클라우드 네트워크를 라우팅 테이블에 라우팅 할 수 없으며 arp 테이블에 mac 주소를 추가 할 수 없습니다.

XXX에서 SynProxy가 켜져있을 때 ssh를 사용하여 172.16.11.5에서 172.16.10.6 시스템에 어떻게 연결할 수 있습니까? 또는 가능합니까?

미리 감사드립니다.


medium_idsynproxy의 브릿지 인터페이스 값이 어떤 값인지 알 수 있습니까 ? 또한 모든 테이블에서 실제 SYNPROXY 규칙은 무엇입니까?
Alexander Janssen 2016 년

SynProxy에 iptables 규칙을 추가했습니다. 그러나 나는 medium_id에 대해 아무것도 모른다. 인터넷에서 빠르게 검색했지만 그다지 좋지 않습니다. @AlexanderJanssen
nyzsirt

답변:


0

이 문제를 해결하는 가장 간단한 방법은 더 이상 비대칭이 아닌 동일한 브리지를 사용하도록 게이트웨이 시스템의 기본 경로를 변경하는 것입니다.

  • 172.16.11.6에서 기본값을 2.2.2.1 (br0을 통해)로 설정하십시오.
  • 172.16.10.1에서 기본값을 2.2.2.2 (br0을 통해)로 설정하십시오.

왜 이런 식으로 설계되었는지 궁금합니다. 두 번째 브릿지의 목적은 무엇입니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.