소프트웨어 부하 분산 장치가 클라이언트 IP를 마스킹하는 이유는 무엇입니까?

소프트웨어 부하 분산 장치가 클라이언트 IP를 마스킹하는 이유는 무엇입니까?

현재 저는 Cisco CSS 하드웨어 로드 밸런서를 사용하고 있습니다. 웹 서버의 관점에서 보면 최종 사용자의 IP 주소는 마치 로드 밸런서가 존재하지 않는 것처럼 모든 트래픽에 찍혀 있습니다.

현재 HAProxy, Pound 또는 AWS ELB와 같은 소프트웨어 대체품을 찾고 있습니다. 이들 모두에는 한 가지 공통점이 있습니다. 웹 서버는 최종 사용자의 IP 대신 로드 밸런서의 IP를 받습니다. 시스템은 이를 인지하고 최종 사용자의 IP를 원하는 경우 X-Forwarded-For 헤더에 액세스해야 하며, SSL의 경우 트래픽을 해독하고 다시 암호화해야 합니다.

그래서 제 질문은 이렇습니다. 왜 이런 일이 일어나는 걸까요? 소프트웨어 부하 분산 장치가 하드웨어 부하 분산 장치와 동일한 방식으로 작동하지 않고 단순한 네트워킹 장치인 것처럼 TCP 패킷을 전달할 수 있는 이유는 무엇입니까?

답변1

이러한 소프트웨어는 계층 7(응용 프로그램)에서 작동하기 때문입니다.OSI 모델, 3/4 레이어에서 작동하는 소프트웨어 솔루션이 있습니다.LVS.

문제와 관련하여 Apache를 웹 서버로 사용하는 경우 솔루션은 매우 간단합니다. 설치만 하면 됩니다.mod_rpaf. 이 모듈을 사용하면 X-Forwarded-For 헤더에서 제공하는 IP를 직접 기록할 수 있습니다.

답변2

음, 짧은 대답은 "그들은 할 수 있습니다"이므로 질문에 답할 수 있을지 잘 모르겠습니다.

하지만 하드웨어 솔루션과 소프트웨어 솔루션의 차이점은 하드웨어 상자가 라우터 역할을 하도록 설계되었다는 것입니다. 즉, 클라이언트에서 최종 서버로의 모든 트래픽을 볼 수 있으며 이에 따라 양방향으로 마사지합니다. 소프트웨어 솔루션은 라우팅되지 않는 상자에 있으므로 리턴 홉 트래픽이 마사지를 위해 다시 통과하도록 하는 저렴하고 즐거운 방법으로 클라이언트 주소를 다시 작성합니다.

답변3

소프트웨어 부하 분산 장치는 더 높은 TCP 스택 계층에서 작동합니다. iptables동일한 효과를 얻으려면 사용해야 합니다 . 예를 찾을 수 있습니다여기.

답변4

가능하지만 커널에서는 기본적으로 지원되지 않습니다. 일반적으로 소스 주소 스푸핑이라고 합니다. Google에서 "소스 스푸핑 haproxy"를 검색하면 몇 가지 조회수가 표시됩니다.

특히.

http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/

관련 정보