지난 글에서 public subnet과 private subnet을 구성해 보았습니다.
2022.01.12 - [Working IT] - AWS - 가상 네트워크 구성
public subnet과 private subnet을 생성하였으나, 이름만 다를 뿐 특별히 다른 점은 없었습니다. 그러나, public subnet은 인터넷과 연결될 수 있어야 그 의미에 맞게 구성할 수 있습니다. 이번 시간에는 public subnet이 실제 인터넷망과 연결될 수 있도록 하는 절차를 진행해보려 합니다.
이를 위해 먼저 VPC에 인터넷 게이트웨이를 생성하여 연결해야 합니다.
인터넷 게이트웨이는 VPC와 인터넷 간에 통신이 가능하게 할 수 있는 구성요소입니다. 인터넷 게이트웨이는 VPC 라우팅 테이블에 인터넷으로 라우팅이 가능한 트래픽에 대한 대상으로 제공되고, public IPv4 주소가 할당된 인스턴스에 대해 NAT를 수행하는 두 가지 목적이 있습니다.
이번 시간에 public subnet으로서의 역할은 전자의 역할로서, public subnet이 인터넷 게이트웨이로 향하는 라우팅이 존재하는 라우팅 테이블과 연결되어야 합니다. 그렇지 않은 경우는 private subnet이라고 합니다.
즉, 다음과 같은 작업을 진행해야합니다.
라우팅 테이블은 private과 public으로 분리하여 2개가 존재하여야 하고, public 라우팅 테이블은 인터넷 게이트웨이를 타겟으로 하는 트래픽을 연결시켜줘야 합니다.
라우팅 테이블의 트래픽 연결 규칙은 위에서부터 순서대로 판단합니다. 따라서, 인터넷 게이트웨이를 통해 인터넷망과 연결될 수 있는 트래픽은 10.0.0.0/16을 제외한 모든 패킷이 대상이 됩니다.
이렇게 구성한 public 라우팅 테이블은 명시적으로 public subnet과 연결 시켜주면 완료됩니다. 기본 라우팅 테이블이 아닌 경우는 subnet을 명시적으로 지정해야 하고, 명시적으로 지정되지 않은 subnet은 기본 라우팅 테이블과 연결됩니다. 기본 라우팅 테이블은 아래 그림과 같이 기본 컬럼이 예로 표시됩니다. (VPC 생성 시 default로 생성된 라우팅 테이블과 같습니다.)
VPC를 생성할 때 기본적으로 생성된 2개의 보안관련 구성요소가 있었습니다. 네트워크 ACL과 보안그룹이었죠. 지난 글에서 설명한 바와 같이 네트워크 ACL은 subnet 단위의 보안, 보안그룹은 인스턴스 단위의 보안과 연관되어 있습니다. 두 구성요소 간의 차이점은 다음의 표와 같이 정리할 수 있습니다.
Security Group | 네트워크 ACL |
인스턴스 레벨에서 운영 | 서브넷 레벨에서 운영 |
허용 규칙만 지원 | 허용 및 거부 규칙 지원 |
StateFull : 규칙에 관계없이 반환 트래픽이 자동으로 허용 | Stateless: 반환 트래픽이 규칙에 의해 명시적으로 허용되어야 함 |
트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가 | 트래픽 허용 여부를 결정할 때 번호가 가장 낮은 규칙부터 순서대로 처리 |
인스턴스 생성 또는 차후에 특정 보안 그룹을 지정할 때 적용 | 연결된 서브넷의 모든 인스턴스에 자동 적용 |
표. 보안그룹과 네트워크 ACL의 차이점
보안그룹과 네트워크 ACL의 가장 큰 차이점은 StateFull 이냐, Stateless 인지 입니다. 이것은 Request Traffic에 대한 상태를 유지하는 지 유무와 관련되어 있습니다. 예를 들어 설명을 해보겠습니다.
각각에 대해 Inbound 규칙에 80포트를 허용하고, outbound에 대해서는 어떠한 패킷도 허용하지 않도록 설정했을 때 각각이 어떻게 대응을 할까요?
네트워크 ACL은 Stateless로 상태를 유지하지 않습니다. 즉, 80 포트로 들어온 웹서버 요청 트래픽은 통과시키고 해당 상태를 보관하고 있지 않습니다. 서버에서는 해당 요청에 대한 응답을 클라이언트에게 전달해야 하지만, 아웃바운드 규칙이 모든 트래픽을 막고 있어서 전달이 불가능하게 됩니다.
반면, 보안그룹은 StateFull로 상태를 기억합니다. 80 포트로 들어온 웹서버 요청 트래픽의 상태를 기억하고 웹서버가 응답한 트래픽이 클라이언트의 웹서버 요청에 대한 응답임을 검증할 수 있습니다. 아웃바운드 규칙은 어떠한 트래픽도 외부로 나갈 수 없지만, 보안그룹은 이것이 응답 패킷이라고 판단하고 외부로 나가는 것을 일시적으로 허용해 줍니다.
그럼 이제 public subnet이 인터넷망과 연결될 수 있도록 다음과 같은 네트워크 환경을 구성해 보도록 하죠.
동영상으로 실습과정을
'IT 개발자의 창고' 카테고리의 다른 글
AWS - EC2 서버 접속 및 웹서버 실행 (0) | 2022.02.10 |
---|---|
AWS - public subnet에 리눅스 서버 기동 (0) | 2022.02.02 |
AWS - 가상 네트워크 구성 (0) | 2022.01.12 |
클라우드 컴퓨팅이란? (0) | 2022.01.05 |
데브옵스(DevOps)란 무엇인가? (0) | 2021.12.29 |