Linux는 설정된 연결에 대한 라우팅 및 IP 정보를 캐싱합니다. 비대칭 라우팅 문제

Linux는 설정된 연결에 대한 라우팅 및 IP 정보를 캐싱합니다. 비대칭 라우팅 문제

우리는 다음과 같은 설정을 가지고 있습니다:

  1. 클라이언트(10.10.0.2)
  2. 밸런서(eth1:10.11.0.3, eth2:10.12.0.1)
  3. 네트워크 서버(eth1:10.11.0.4, eth2:10.12.0.2 및 eth1:10.11.0.3 아래 참조)
  4. 매스커레이드 라우터는 10.10을 10.11로 라우팅합니다.

각각 우분투 18을 실행합니다.

TCP 연결은 클라이언트에서 밸런서를 통해 웹 서버로 이동합니다.

SYN 패킷이 밸런서(10.11.0.3)에 도달하면 웹 서버의 IP(10.12.0.2)를 DNAT하여 완벽하게 라우팅되어 웹 서버에 나타납니다.

웹 서버에서 패킷을 10.11.0.3(밸런서와 동일한 IP이지만 웹 서버에 연결됨)으로 DNAT했습니다.

웹 서버가 10.11.0.3을 로컬로 인식하고 밸런서의 10.11.0.3과 충돌하지 않도록 하기 위해 (10.11.0.3을 소유한) 웹 서버에서 ARP 요청을 필터링합니다. 마지막으로 응답 패킷이 eth1 10.11.0.3에서 클라이언트로 직접 전송되기를 원합니다. 그러나 패킷은 eth2에서 전송되며 연결이 설정되고 모든 것이 캐시되므로 패킷은 eth2에 도달합니다.

다음 설정을 실행하면:

클라이언트 -> 밸런서 -> 중개자 -> 웹 서버, 중개자에서 모든 패킷 수정을 수행할 수 있으며 완벽하게 작동합니다. 네트워크 서버가 재구성을 수행하는 동일한 시스템에 있는 경우 응답 패킷을 재구성할 수 없습니다.

이 문제를 어떻게 극복할 수 있을지 아시나요?

관련 정보