IT/AWS[Amazon Web Service]

[AWS] VPC 와 private subnet

송시 2022. 6. 9. 22:58
728x90

VPC 를 그냥 간단히 공유기라고 생각하자

우리집에 있는 공유기를 VPC라고 부를 뿐이다.

우리 집에 아이패드, 맥북, 데스크탑, 노트북, 아이폰, 갤럭시 합쳐보니 6개의 장비가 있다.

이 장비를 모두 사용하고 싶어서 WIFI가 되는 공유기를 하나 샀다.

이 공유기에 전원만 연결했는데 IPTIME 이라는 이름으로 WIFI가 (AP 라고 한다) 되는 거시다.

노트북이고 아이폰이고 뭐고 다 연결했다.

모두 다 연결 다 잘되었는데 왜 인터넷이 안되는 걸까?

IP가 제대로 잡히는지 확인해보니 192.168.0.2 ~ 7 순서대로 잘 잡혀있는 것이 확인 된다.

노트북을 통해 gateway 를 확인해봤는데 192.168.0.1 로 잘 잡혀 있는 것이 확인 된다.

노트북에서 사용하는 IP는 192.168.0.3 이고 ping 192.168.0.1 로 테스트 해보니, 정상적으로 되는게 확인이 된다.

아니 근데 왜 안되는거냐?

게이트웨이도 잡혀있고, 아이피도 할당되어 있는데 말이다.

왜 인터넷이 안되냔 말이다.

사설망으로 내부가 구성이(192.168.0.0/24) 되어 있지만 외부로 나갈 수 있는 회선이 없기 때문이다.

AWS 관점에서 본다면 VPC 를 공유기라고 했을 때 그 공유기에 1개의 subnet 을 만든 것이다. 192.168.0.0/24

그래서 그 subnet 에는 192.168.0.1 ~ 192.168.0.255 범위로 IP를 할당해서 사용할 수 있는 범위가 정해진다.

그런데 우리가 이미 알고 있듯이 0,255는 보통 게이트웨이나 브로드캐스트로 사용을 하는 편이기에 1~254(254개)를 사용할 수 있게된다.

여기에 AWS가 별도로 예약되어 사용하는 IP 가 있으니 그거슨 처음 4개의 숫자(0,1,2,3)와 마지막 숫자(255)는 예약되어서 사용 한다.(앞서 설명한 보통 브로드캐스트로 사용하는 255는 aws에서는 vpc에서 브로드캐스트를 지원하지 않으며 향후를 위해 예약되었다)

그래서 공유기에 의해서 만들어진 192.168.0.1/24 는 4~244 까지 251개를 사용 할 수 있는 private subnet 이 있게 된다.

뭐 어거지로 공유기라는 틀에 짜맞추느라고 VPC의 사용 범위와 subnet 을 다시 나누는 것에 대해서 설명이 부족했지만, 언젠가 이 글이 이해되는 날이 오지 않을까?

어쨌든 그래서 내가 말하고자 하는 핵심은

VPC 안에 있는 서브넷이 어떠한 도움도 없이(Elastic IP, NAT)외부로 인터넷이 안되는 상황이라면 그게 private subnet 이고, 외부로 인터넷이 되는 상황이 public subnet 이라는 점이다.

private subnet 과 public subnet 의 또 다른 특징은 외부로 나가지 못하는 private subnet 에는 공유기에 빗대어 설명하면 192.168.0.1이라는 routing table 만 존재한다는 점이다.

실제 AWS에서는 VPC 에서 사용하는 Local 이라는 gateway로 나가는 형태를 가진다.

아래의 그림에서 처럼 10.0.0.0/16 인 VPC 안에 두개의 private subnet 이 존재 한다.

10.0.0.0/24 와 10.0.1.0/24 이 두개가 private subnet 이라는 점은 route table 에 VPC 의 CIDR을 사용하는 IP 대역들은 Local로 패킷이 전송된다.

여기서 말하는 Local은 그림의 가운데에 있는 Router 인것으로 파악된다(현재 내 지식으론 그러하다)

VPC의 범위를 벗어나는 CIDR 예를 들어 0.0.0.0/0 에 대해서는 패킷을 전달할 수 있는 곳이 없으며 그림상으로는 VPC 상단에 인터넷게이트 웨이도 없기에 VPC 의 라우터를 떠나더라도 외부로 나갈 수 없는 구조다.
(이거슨 마치 앞에서 공유기에 전원만 꼽고 WIFI가 되어서 192.168.0.0/24 대역의 IP 를 할당 받았지만, 실제로 인터넷이 안되는 문제와 유사하다)

출처는 aws

그래도 재미난 것은 같은 subnet 끼리의 통신이야 L2 를 통해 통신이 되기에 당연한 일인데 subnet 이 다른 대역은 Local의 Router를 통해 서로 통신할 수 있다는 점이다.

그림에서 10.0.0.5 -> 10.0.1.7 로 통신이 가능하며 그 반대로도 가능하다.

이는 public subnet 이냐, private subnet 이냐의 문제가 아니라 같은 VPC 안에 있다면 Local router 에 의해서 서로 통신이 가능하다는 점이다.

그래서 서로 다른 VPC 간에 있는 EC2가 통신하기 위해서는 VPC 간을 연결하는 기술이 필요한데 이를 VPC peering 이라고 한다.

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/how-it-works.html

728x90

'IT > AWS[Amazon Web Service]' 카테고리의 다른 글

[AWS] ENI  (0) 2022.06.22
[AWS] NAT instance  (0) 2022.06.19
[AWS] NAT gateway  (0) 2022.06.15
[AWS] VPC public subnet  (0) 2022.06.10
[AWS-network specialty] route 53 트래픽을 분석하고싶오  (0) 2022.06.08