프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

AWS에서 웹서비스를 생성하던 중에, 의문점이 생겨서 ELB와 NAT GW에 대해 확실히 알게 된 점을 남겨본다.

 

 

 

AWS 공부를 하면 private subnet의 자원들은 외부의 트래픽을 NAT GateWay로 보낸다고 알게 된다.

그러면 ELB를 사용해서 private subnet의 웹 서버에 접속하면 다음과 같은 Flow가 된다고 생각했다.

 

 

클라이언트는 ELB의 IP로 요청을 보내고, 이 요청이 EC2 web server에게 전달된다.

여기서 웹 서버가 NAT GW로 응답을 보내면, 결국에 클라이언트의 웹 요청에 대한 응답이 NAT의 public IP로 바뀌어서 나가게 된다.

 

 

그렇다면, 클라이언트는 요청을 보낸 IP(ELB IP)와 다른 IP(NAT IP)로부터 응답을 받게 된다.

브라우저가 다른 ip에서 오는 응답을 어떻게 인식하고 수신할 수 있을까?

 

정말 NAT의 IP로 응답이 오는 것인지 확인하기 위해 ELB의 IP를 확인하고, 웹 요청을 보내서 패킷을 확인해 보았다. 

 

nlb의 ip 확인

 

웹 요청에 대한 응답

 

 

확인해 보면, NLB의 IP로 요청을 보내고 NLB의 IP로 응답을 받는다.

 

 

즉, private subnet의 자원에 대한 접근 Flow는 다음과 같다.

 

 

 

 

 

 

private subnet의 자원에대한 접근 Flow

 

요청의 경우에는 Source IP가 ELB에서 ELB의 private IP로 바뀌게 된다.

 

 

 

따라서 EC2는 public ip가 아닌 ELB의 private IP로부터 요청이 온 것으로 이해하고, 응답을 ELB에게 주게 된다.

여기서 EC2는 VPC의 네트워크 대역대가 아닌 경우에만 NAT GW로 트래픽을 보내기 때문에, NAT가 사용될 일은 없다.

 

 

 

 

만약 web server가 업데이트와 같이 인터넷으로부터 데이터를 요청해야 한다면, public ip에 대해서 요청을 보내야 한다.

이때는 routing table에 의해 NAT GW로 요청을 전달한다. 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함