ELB는 AWS의 아웃바운드 응답 트래픽도 라우팅합니까?

ELB는 AWS의 아웃바운드 응답 트래픽도 라우팅합니까?

저는 퍼블릭/프라이빗 서브넷이 있는 AWS VPC에서 라우팅이 어떻게 작동하는지 이해하려고 노력해 왔습니다.

퍼블릭 서브넷에는 ELB와 NAT가 있고 프라이빗 서브넷에는 웹 서버가 있는 Amazon에서 권장하는 설정이 있습니다. 다음과 같이 보안 그룹(SG)을 구성했습니다.http://blogs.aws.amazon.com/security/blog/tag/NAT모든 것이 예상대로 작동합니다. 엄청난!

Amazon VPC 구성을 사용한 참조 아키텍처

내가 아직 이해하지 못하는 것은 위 아키텍처의 웹 서버 인스턴스에서 HTTP 응답이 어떻게 반환되는지입니다.

따라서 HTTP를 통해 공용 인터넷에서 웹 요청이 들어오면 80은 ELB에 도달하고 ELB는 이를 웹 서버의 개인 IP로 가져갑니다. 이제 웹서버가 응답해야 합니다. 내가 이해한 바에 따르면 응답은 다른 상위 TCP 포트(1024-65535)를 통해 이루어집니다. NAT SG는 포트 80 및 443을 통한 아웃바운드 트래픽만 허용합니다. 그렇다면 이 응답은 어떻게 공용 인터넷으로 다시 전달됩니까? NAT를 통과할 수 없습니다. 이는 응답이 ELB를 통해 다시 전송된다는 의미입니까? Amazon 다이어그램은 ELB 트래픽 방향 화살표를 양방향으로 표시하지 않으며 ELB 문서에는 ELB가 상태 저장 NAT처럼 작동한다고 명시하지도 않습니다. 그렇습니까?

답변1

다이어그램의 화살표는 트래픽 흐름이 아닌 연결 설정 방향만 나타냅니다.

예, 반환 트래픽은 ELB를 통해 다시 돌아갑니다.

그러나 이는 상태 저장 NAT가 아니라 TCP 연결 프록시입니다. ELB 시스템은 구성된 수신 포트에서 TCP 연결을 수락하고, 구성된 경우 SSL 세션을 종료하고 백엔드 서버에 대한 새 TCP 연결을 설정합니다. 리스너가 HTTP용으로 구성된 경우 ELB는 페이로드 인식 모드에서 작동하여 HTTP 요청을 구문 분석, 로깅 및 백엔드에 전달합니다. 그렇지 않으면 페이로드에 구애받지 않고 백엔드에 대한 1:1 새 TCP 연결을 설정합니다. 들어오는 각 연결에 대해 "파이프를 함께 연결"합니다(HTTP 수준 인식이나 수정 없이).

어느 쪽이든, 애플리케이션으로 들어오는 연결의 소스 주소는 원래 클라이언트가 아닌 ELB 노드의 주소가 됩니다. 이는 응답 트래픽이 클라이언트로 반환되기 위해 ELB로 반환되는 방식입니다.

http 모드에서 ELB는 다음을 추가합니다.X-Forwarded-For애플리케이션이 원래 클라이언트 IP를 식별할 수 있을 뿐만 아니라 X-Forwarded-Proto: [ http | https ]클라이언트 연결이 SSL을 사용하는지 여부와 X-Forwarded-Port프런트엔드 포트를 나타낼 수 있도록 헤더 에 추가하거나 헤더를 추가합니다 .


업데이트:위의 내용은 현재 "ELB Classic" 또는 ELB/1.0(HTTP 상태 확인과 함께 보내는 사용자 에이전트 문자열에 있음)으로 알려진 로드 밸런서 유형을 나타냅니다.

최신 레이어 7 밸런서인 Application Load Balancer 또는 ELB/2.0은 트래픽 흐름과 관련하여 유사하게 작동합니다. 레이어 4("투명" TCP) 기능은 ALB에서 제거되고 레이어 7 기능은 크게 향상되었습니다.

최신 유형의 로드 밸런서인 Network Load Balancer는 레이어 3 밸런서입니다. 다른 두 가지와는 달리 인바운드(외부에서 시작된) 연결만 처리하고 EIP-addr+port를 통해 source-addr+port를 인스턴스-private-ip:adde+port로 매핑하는 동적 NAT와 매우 유사하게 동작합니다(EIP 사용). "밸런서"에 바인딩됩니다. 다른 두 가지 유형의 밸런서와 달리 인스턴스는 퍼블릭 서브넷에 있어야 하며 이를 위해 자체 퍼블릭 IP를 사용해야 합니다.

개념적으로 말하면, Network Load Balancer는 실제로 인터넷 게이트웨이의 동작을 수정하는 것처럼 보입니다. 인터넷 게이트웨이 자체는 비활성화하거나 교체할 수 없거나 의미 있는 의미에서 오류가 발생할 수 없는 논리적 객체입니다. 이는 실제로 "숨겨진" EC2 인스턴스에서 작동하는 ELB 및 ALB와 대조됩니다. NLB는 모든 면에서 네트워크 인프라 자체에서 작동합니다.

답변2

NLB에 대한 AWS 설명서에 따르면 계층 3이 아닌 계층 4입니다. 또한 백엔드 또는 대상 서버가 퍼블릭 서브넷에 있을 필요가 없습니다. 실제로 대상 그룹의 IP 주소 범위는 다음 중 하나여야 합니다. 가능한 대상 유형은 다음과 같습니다.

인스턴스 대상은 인스턴스 ID로 지정됩니다.

ip 대상은 IP 주소로 지정됩니다.

대상 유형이 ip인 경우 다음 CIDR 블록 중 하나에서 IP 주소를 지정할 수 있습니다.

대상 그룹에 대한 VPC의 서브넷

10.0.0.0/8(RFC 1918)

100.64.0.0/10(RFC 6598)

172.16.0.0/12(RFC 1918)

192.168.0.0/16(RFC 1918)

중요한

공개적으로 라우팅 가능한 IP 주소는 지정할 수 없습니다.

이게 도움이 되길 바란다.

관련 정보