인프런 커뮤니티 질문&답변

이민준님의 프로필 이미지
이민준

작성한 질문수

AWS Certified Solutions Architect - Associate 자격증 준비하기

NACL & Security Groups

VPC NACL 관련 질문이 있습니다.

작성

·

271

0

EC2 웹서버 운영시 외부에서 Client가 접속 후 리턴 트래픽을 받을 때 NAT를 사용하므로 임시포트 1024-65535를 사용

-> 이라고 설명해주셨는데 publicIP 를 privateIP 로 전환해주는 1:1 NAT 말고 다른것을 이야기하는건가요?

잘 이해가 안됩니다.

 

리턴 트래픽을 받을때는 목적지 포트가 클라이언트가 요청을 보낸 프로세스의 포트일테고, 해당 포트를 허용해주면 되는거아닌가요? NAT 가 왜 나오는지 잘 이해가 안됩니다.

답변 3

0

코드바나나님의 프로필 이미지
코드바나나
지식공유자

안녕하세요.

인터넷게이트웨이는 EC2의 Private IP 주소를 인터넷과 통신하는 Public IP로 바꿔 주는 NAT 기능을 합니다.

예를 들어 아래와 같이 EC2 Private IP 10.0.0.6을 IGW를 거치면서 Public IP 198.51.100.2로 변경되게 됩니다.

image

질문하신 부분에 대한 답변을 하자면 아래와 같습니다.

예를 들어 EC2의 Private IP는 10.0.0.6 , Public IP는 198.51.100.2라고 하겠습니다.

클라이언트의 IP는 웹서버의 아웃바운드와 관련이 없고 NACL이나 보안그룹의 인바운드 설정에서 차단 허용하는 것과 관련이 있기에 답변에서 빼었습니다.

 

  1. 요청 전송:

    • 클라이언트는 웹서버 198.51:100.2:80 포트로 요청을 보냅니다.

     

  2. AWS 및 NAT 게이트웨이:

    • 요청이 AWS VPC의 IGW(NAT) 에 도착합니다.

    • IGW(NAT)는 요청의 소스 출발 포트를 예를 들어 198.51.100.2:80 --> 10.0.0.6:80으로 변경합니다.

     

  3. EC2 웹 서버에 요청 도착:

     

    • 변경된 요청이 EC2 웹 서버에 도착합니다.

    • 웹 서버는 이 요청을 처리한 후 응답을 보냅니다.

     

  4. 응답 전송:

    • 웹 서버는 응답을 IGW(NAT) 에게 포트 10.0.0.6:4321로 보냅니다.

    • 이 때 NAT 로 가기전에, NACL 에서 아웃바운드 트래픽에 대한 검사가 이뤄집니다.

    • IGW(NAT) 출발지의 IP를 198.51.100.2:4321로 변경합니다.

0

이민준님의 프로필 이미지
이민준
질문자

안녕하세요 코드바나나님 우선 답변 감사드립니다.


제가 이해한바로는 아래를 말씀해주신것 같은데 맞는지 확인 부탁드립니다 🙇

 

  1. 요청 전송:

    • 클라이언트는 웹서버80 포트로 요청을 보냅니다.

    • 이 때, 출발 IP는 클라이언트의 IP, 출발 포트는 1234이라고 가정합니다.

  2. AWS 및 NAT 게이트웨이:

    • 요청이 AWS VPC의 IGW(NAT) 에 도착합니다.

    • NAT 는 요청의 소스 출발 포트를 예를 들어 4321으로 변경합니다.

  3. EC2 웹 서버에 요청 도착:

     

    • 변경된 요청이 EC2 웹 서버에 도착합니다.

    • 웹 서버는 이 요청을 처리한 후 응답을 보냅니다.

  4. 응답 전송:

    • 웹 서버는 응답을 NAT 에게 포트 4321로 보냅니다.

    • 이 때 NAT 로 가기전에, NACL 에서 아웃바운드 트래픽에 대한 검사가 이뤄집니다.

    • NAT 게이트웨이는 이 응답의 목적지 IP와 포트를 클라이언트의 IP와 포트 1234로 변경합니다.


이민준님의 프로필 이미지
이민준
질문자

위에서는 인바운드도 NAT 가 포트포워딩을 해주는데, 아웃바운드만 해주나요..?

0

코드바나나님의 프로필 이미지
코드바나나
지식공유자

안녕하세요.

네트워크 설명이 깊게 들어가는 듯하여 실제 기출이 되었던 부분만 간단히 설명하고 했는데 그 설명이 부족했던 것 같습니다.

문구를 조금 수정 하자면 "EC2 웹서버 운영시 인터넷 접속을 위해서는 인터넷게이트웨이(NAT기능을 함) 또는 NAT게이트웨이/NAT인스턴스를 사용하기에 외부에서 Client가 접속 후 리턴 트래픽을 받을 때 임시포트(ephemeral ports) 1024-65535를 사용" 이라고 바꿔도 될 듯 합니다.

 

추가적인 설명을 드리면

EC2인스턴스의 퍼블릭 IPv4가 인터넷과 연결을 위해서는 NAT게이트웨이를 사용하지 않을 경우 인터넷게이트웨이를 사용하게 됩니다.

이 인터넷 게이트웨이는 아래 링크의 설명처럼 인스턴스는 VPC 내부에서는 프라이빗 IP를 사용해 통신을 하므로 퍼블릭 IPv4 주소를 가진 EC2가 퍼블릭 인터넷과 통신하기 위해 논리적으로 1:1 NAT 기능을 제공합니다.

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Internet_Gateway.html

image

인터넷의 수십, 수백의 사용자가 동일한 EC2의 IP와 포트 번호로 접속을 시도 하면 서버는 여러 사용자와 동시 접속을 허용해야 하기에 IP는 동일할 지라도 사용자마다 다른 포트번호를 써야 합니다.

따라서 EC2에서 클라이언트로 보내는 리턴 트래픽의 포트는 사용자마다 각각 다른 임시포트/휘발성포트(ephemeral ports)를 사용하게 됩니다.

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-network-acls.html

image

따라서 아래와 같이 예를 들어 EC2 웹서버가 퍼블릭 클라이언트와 HTTP 통신을 위해서는 NACL에서 인바운드는 80번 포트를 허용하지만 아웃바운드는 임시포트인 1024-65535를 허용해 주어야 합니다.

image

설명이 도움이 되었길 바라며 다음번 강의 업데이트시 이부분에 대한 개선을 하도록 하겠습니다.

감사합니다.

이민준님의 프로필 이미지
이민준
질문자

추가질문 남겼는데 답변 부탁드리겠습니다 🙏

이민준님의 프로필 이미지
이민준

작성한 질문수

질문하기