06장. 가상 네트워크 서비스 Amazon VPC
💡 Amazon VPC란 AWS 계정 전용 가상 네트워크이다.
ㅤ 네트워크와 서브넷 범위, 라우팅 테이블, 네트워크 게이트웨이 등을 설정할 수 있다.
🎨 6.1 VPC: AWS에 생성하는 가상 네트워크
📌 6.1.1 Amazon VPC란
- 웹 서버나 데이터베이스 서버와 같은 서버들은 네트워크에 연결되어 있어야 한다.
- 한 장소에 모아서 네트워크를 연결하는 것도 가능하지만 그렇게 되면 서버로서의 의미가 없다.
- 이러한 네트워크를 구축하기 위해 사용하는 것이 Amazon Virtual Private Cloud(Amazon VPC)이다.
- 아마존 VPC는 AWS계정 전용 가상 네트워크 서비스로, AWS에서 제공하는 리소스만 설치할 수 있다.
- 특히 EC2나 RDS의 경우 VPC를 선택하지 않으면 서버를 생성할 수 없기 때문에 리소스를 사용하기 위해서 반드시 필요한 서비스다.
📌 6.1.3 VPC의 기능
- VPC는 네트워크 게이트웨이 등과 같은 가상 네트워킹 환경을 설정할 수 있다.
- 가상 환경이기 때문에 물리적인 네트워크와 다른 점도 있지만, 기본적인 개념은 같다.
- 또한, IPv4와 IPv6 둘 다 사용할 수 있다.
📌 6.1.4 VPC 네트워크의 특징과 라우팅 테이블
- VPC 네트워크는 클라우드이기 때문에 일반 네트워 조금 다르다.
- 가장 큰 차이점은 라우터이다.
- VPC는 물리적인 라우터가 아닌 소프트웨어가 라우터 역할을 하며 라우팅을 수행한다.
- 라우팅은 설정된 라우팅 테이블에 따라 동작하는데, 라우팅 테이블 하나에 서브넷 여러 개를 설정할 수 있다.
- 물리적인 서버의 경우 LAN 케이블과 와이파이로 라우터와 연결하겠지만, 클라우드는 라우팅 테이블로 연결한다.
- 일반적인 서버넷 사이의 통신을 라우터로 이루어지지만, VPC의 경우 라우터 없이 직접 통신할 수 있다.
- 또한, VPC 하나의 인터넷 게이트웨이 한 개만 설정할 수 있다.
- 라우터와 인터넷 게이트 외에는 명시적인 IP 주소가 부여되지 않는다.
😃 VPC 네트워크의 특징
- 소프트웨어가 라우팅한다. 라우터는 IP 주소를 갖지 않는다.
- 라우팅 테이블 한 개에 서브는 여러 개를 설정할 수 있다. 줄바꿈할 수 있고, IP
- 주소를 갖지 않는다. 서브넷 사이의 통신을 라우터 없이 직접 통신할 수 있다.
🎨 6.2 VPC의 사용 절차: 가상 네트워크를 사용하자
📌 6.2.1 VPC 설정을 위해 꼭 필요한 사항
- VPC는 네트워크이다.
- 따라서 서버가 어떤 환경에 설치되어 있는지 그리고 인터넷에 연결해야 하는지에 대한 설정이 필요하다.
- 특히 중요한 것은 인터넷 연결 여부와 오토 스케일링이다.
- 인터넷에 연결해야 한다면 인터넷 게이트웨이를 설정해야 한다.
- 오토 스케일링을 설정해야 한다면 서버가 자동으로 늘어나기 때문에 IP 주소를 많이 확보해 두어야 한다.
- 또한, 보안 그룹과 네트워크 ACL을 설정하려면 인스턴스 용도에 맞는 포트를 설정하는 것도 고려해야 한다.
🎨 6.3 기본 VPC: AWS가 제공하는 기본 VPC
📌 6.3.1 기본 VPC란
- AWS는 리전별로 기본 VPC를 제공한다.
- 기본 VPC는 특별한 설정 없이 바로 사용할 수 있다.
- 특별한 요건이 없다면 기본 VPC를 사용하는 편이 좋다.
📌 6.3.2 기본 VPC의 구성
- 기본 VPC는 서브넷과 인터넷 게이트웨이가 기본적으로 구성되어 있다.
- EC2, RDS를 생성할 때도 기본 VPC를 선택할 수 있다.
🎨 6.4 서브넷과 DHCP: 사용할 범위 선택
📌 6.4.1 서브넷이란
- 서브넷이란 커다란 네트워크를 작게 나눈 네트워크를 말한다.
- AWS의 경우에는 어떤 가용 영역에 서브넷을 둘지 설정한다.
- 또한, VPC는 사용자가 사용할 수 있는 네트워크 범위를 생성하고 그 아래 용도에 따라서 서브넷(작은 네트워크)를 생성한다.
- 일반적인 네트워크의 경우 서브넷끼리 통신하려면 라우팅이 필요하지만, VPC의 경우에는 라우팅 없이도 통신할 수 있다.
📌 6.4.2 네트워크의 범위와 CIDR 표기
- 네트워크와 서브넷의 범위를 나누는 데 사용되는 표기법을 CIDR(Classless Inter-Domain Routing)라고 한다.
- 프리픽스 표기라고도 하는데 /24, /20처럼 /(슬래시) 뒤에 네트워크 길이를 숫자로 적어서 표기한다.
- CIDR는 IP 주소의 수를 나타낸다.
- 네트워크 범위는 범위 안에서 가장 첫 번째 IP 주소와 CIDR 순으로 표기한다.
- 172.31.0.0/16이라면 /16은 65,536개라는 의미이므로 172.31.0.0부터 172.31.255.25까지가 네트워크 범위이다.
📌 6.4.3 네트워크 클래스
- 네트워크는 규모에 따라서 A, B, C 세 클래스가 있다.
- A 클래스는 13만~1,677만 개 정도의 IP 주소를 가진, 범위가 넓은 네트워크다.
- B 클래스는 중간 규모이며 대략 512~6만 5천개를 가지고 있다.
- C 클래스는 소규모로 1~255개 범위이다.
- 스스로 CIDR를 설정할 때 /16이나 /20의 크기를 기준으로 하면 설정하기 쉽다.
💎 A 클래스에 대해서
- AWS의 경우 부모가 되는 네트워크를 A 클래스로 설정할 수 있지만, 서브넷으로 사용할 수 있는 범위는 /16(B클래스 최대치)이하이다.
- 따라서 A 클래스를 서브넷으로 설정할 수 없다.
📌 6.4.4 IP 주소 할당과 DHCP
- 일반적인 네트워크의 경우 IP 주소를 할당할 수 있는 것은 EC2 인스턴스와 RDS 인스턴스(데이터베이스)등이다.
- 하지만 AWS VPC는 EC2 인스턴스나 RDS 인스턴스 외에도 라우터나 인터넷 게이트웨이에 IP 주소로도 앞서 설명한 예약 주소를 사용할 수 있다.
- 네트워크 및 서버넷에 사용되는 IP 주소의 범위는 관리자가 설정할 수 있고, DHCP(Dynamic Host Configuration Protocol)에서 각 호스트(인스턴스)에 IP 주소를 자동으로 할당한다.
- VPC에는 DHCP서버가 동작하고 있어 인스턴스가 추가되면 해당 서브넷 범위에 IP 주소 중에 하나가 할당된다.
- VPC가 일반적으로 사용하는 IP 주소는 사설 IP 주소이다.
💎 예약 IP 주소
- 첫 번째부터 네 번째까지 IP 주소 네 개와 마지막 IP 주소는 AWS의 예약된 IP주소이기 때문에 사용할 수 없다.
- 따라서 사용할 수 있는 IP 주소가 256개라면 다섯 개를 뺀 251개가 실제로 사용할 수 있는 IP 주소가 된다.
🎨 6.5 라우팅과 NAT
💡 네트워크 간 데이터를 주고 받으려면 라우팅이나 NAT방식을 사용해야 한다.
📌 6.5.1 네트워크와 라우팅
- 네트워크랑 PC 여러 대가 서로 통신할 수 있도록 연결되어 있는 상태를 말한다.
- 회사처럼 PC가 여러 대 있는 환경에서 PC를 1:1로 연결하려면 선이 굉장히 많아질 것이며 현실적으로 구축할 수도 없다.
- 그래서 데이터를 라우터로 보내고, 라우터가 목저기로 보내는 방식이 필요한데, 이를 라우팅이라고 한다.
📌 6.5.2 IP 주소와 게이트웨이
- IP 주소는 클라이언트 PC나 서버뿐만 아니라 라우터 등 네트워크 안의 모든 호스트에 설정되어있다.
- 라우터는 네트워크의 관문에 위치해 있기 때문에 관문이라는 의미로 게이트웨이라고도 한다.
- 게이트웨이 중에
'자신 이외의 접속되어 있는 모든 것(대부분의 경우 인터넷과의 연결점)'
을 기본 게이트웨이라고 한다.
📌 6.5.3 IP 마스커레이드
- LAN에서 인터넷으로 데이터를 전송할 때 LAN 내부의 출입구가 되는 것이 게이트웨이이다.
- 게이트웨이는 기기의 역할을 말하며 실제 기기는 라우터이다.
- LAN에서 전송되는 데이터를 인터넷으로 보낸다.
- 인터넷에서 들어오는 데이터를 목적지 PC로 전송한다.
- 요즘 LAN 내부의 PC에는 전부 사설 IP 주소를 할당하는게 일반적이다.
- 하지만 공인 IP 주소가 없다면 식별할 수 없기 때문에 게이트웨이가 사설 IP 주소를 공인 IP 주소로 변환하고 가정, 회사 내에서는 공인 IP 주소 하나를 공동으로 사용한다.
- 주소 변환을 담당하는 것이 IP 마스커레이드(masquerade) NAPT(Network Address Port Translation))이다.
📌 6.5.4 NAT
- IP 마스커레이드는 공인 IP 하나만 설정할 수 있기 때문에 서버가 여러 대라면 공인 IP 주소를 여러 개 설정할 수 있는 NAT(Network Address Translation)를 사용해야한다.
- IP 마스커레이드 = 1:M
- NAT = M:N 이라는 점에서 다르다.
- 또한, IP 마스커레이드는 Port를 변화할 수 있지만, NAT는 불가능하다.
🎨 6.6 보안 그룹과 네트워크 ACL: 보안 설정
💡 AWS는 보안 그룹과 네트워크 ACL 두 종류의 가상 방화벽을 제공한다.
ㅤ 두 가지는 사용하는 범위가 다르며, 규칙의 적용 순서도 다르다.
📌 6.7.1 보안 그룹과 네트워크 ACL
- PC 가상 방화벽으로 보안 그룹과 네트워크 ACL이 있다.
- 방화벽이란 네트워크 통신을 제어하는 방식을 말한다.
- 보안 그룹과 네트워크 ACL은 인바운드 트래픽(데이터가 유입되는 것)과 아웃바운드 트래픽(데이터가 유출되는 것)을 제어한다.
- 반드시 양쪽 모두 설정해야 하며 명시적으로 설정하지 않으면 기본 설정이 적용된다.
- 두 서비스는 설정 수준과 허가 범위가 다르다.
- 네트워크 ACL은 서브넷 단위로 설정하기 때문에 개별 인스턴스에 설정할 필요가 없다는 점이 두 서비스의 가장 큰 차이이다.
- 네트워크 ACL 하나에 넷 여러 개를 설정할 수 있지만, 서브넷 하나의 네트워크 ACL을 여러 개 설정할 수는 없다.
📌 6.7.2 인바운드 및 아웃바운드 설정과 잘 알려진 포트
💡 Port란 '통신의 입구'를 말한다.
- 트래픽은 인바운드 아웃바운드 각각에 대해 포트 단위로 허가 여부를 설정한다.
- 포트는 25, 80 등과 같이 포트 번호로 지정한다.
- 실제로는 서비스 별로 잘 알려진 포트(well-known-ports)가 정해져 있어 특별한 경우가 아닌 이상 해당 포트를 사용한다.
- 보안 그룹은 인바운드를 허가하지 않으면 아웃바운드를 허가하고, 네트워크 ACL은 양쪽 모드를 허가하는 것이 각 기본 설정이다.
- 그 후 보안 그룹은 필요한 포트만 허가하는 것이 일반적이다.
포트번호 | 서비스 | 내용 |
---|
25 | SMTP | 메일 송신 |
110 | POP3 | 메일 수신 |
143 | IMAP4 | 메일 수신 |
80 | HTTP | 웹 송수신 |
443 | HTTPS | 웹 송수신 |
22 | SSH | SSH 통신 |
1433 | SQL Server | 데이터베이스 통신 |
1521 | Oracle Database | 데이터베이스 통신 |
3306 | MySQL | 데이터베이스 통신 |
5432 | PostgreSQL | 데이터베이스 통신 |
5439 | Redshift | 데이터 웨어하우스 통신 |
20 및 21 | FTP | 파일 전송 통신(AWS는 사용하는 경우가 드물다) |
53 | DNS | 도메인 관리 통신(AWS는 사용하는 경우가 드물다) |
3389 | RDP | 원격 데스크톱 통신 |
32768 ~ 65535 | AWS의 경우 아웃바운드 지원 | |
💎 데몬이란
- PC(서버)의 전원이 켜져 있는 동안 계속해서 동작하고 있는 소프트웨어를 말한다.
- 이와 같이 상조하는 소프트웨어를 유닉스 OS에서는 데몬(daemon)이라고 하고, 윈도우에서는 서비스라고 한다.
🎨 6.8 VPC 엔드포인트
💡 AWS에는 VPC를 지원하는 서비스와 지원하지 않는 서비스가 있다.
ㅤ 이러한 서비스들을 연동하려면 서로 접속할 수 있어야하고,
ㅤ 이 때 연결점이 되는 것이 VPC 엔드포인트이다.
📌 6.8.1 VPC 엔드포인트란
- VPC 엔드포인트란 VPC 내부에서 VPC 외부로 접속하기 위한 연결점을 제공하는 서비스다.
- 인터넷 게이트웨이를 통하지 않고, S3와 같은 VPC 외부에 있는 서비스와 VPC를 직접 연결해주는 것인 엔드포인트 서비스다.
- VPC의 출입구로 엔드포인트를 설정하면 S3와 직접 연결할 수 있다.
- 종류는 인터페이스 엔드포인트, 게이트웨이 엔드포인트로 2가지이다.
📌 6.8.2 인터페이스 엔드포인트와 게이트웨이 엔드포인트
- VPC 엔드포인트는 가상 서비스다.
- 확장성과 고가용성을 지원하며, 네트워크 트래픽에 대해 자동으로 스케일링 되기 때문에 네트워크 트래픽에 대해 고민할 필요 없다.
💎 인터페이스 엔드포인트
- 인터페이스 엔드포인트는 네트워크 인터페이스(ENI, Elastic Network Interface)로 구축하는 유형이다.
- 인터페이스 엔드포인트는 사설 IP 주소를 가진 ENI가 존재하며 각 서비스와 연결하는 출입구 역할을 한다.
💎 게이트웨이 엔드포인트
- 게이트웨이 엔드포인트는 라우팅 테이블에 설정된 내요을 라우팅하는 유형이다.
- 게이트웨이 엔드포인트는 서비스 리전 단위로 라우팅 테이블을 설정하는 방식이다.
- 한 번 설정하면 해당 리전의 모든 서비스에 사용할 수 있다.
- S3와 DynamoDB는 이러한 형식을 취하고 있다.
🎨 6.9 VPC 연결
💡 VPC와 다른 네트워크를 연결하는 방법은 몇 가지 있다.
- VPC 피어링(peering)이나 전송 게이트웨이(transit gateway)가 대표적이다.
- 그 외에 VPN 연결이나 AWS Direct Connect를 사용하는 경우도 있다.
📌 6.9.1 VPC 연결
- VPC는 다른 VPC나 네트워크와 연결할 수 있다.
- VPC끼리 연결하려면 VPC 피어링이라는 기능을 활성화해야한다.
- VPC는 물리적인 네트워크 혹은 다른 클라우드에도 접속할 수 있다.
📌 6.9.2 전용선과 가상 사설망
- 네트워크와 네트워크를 연결해 커다란 네트워크를 구축하는 것을 WAN(Wide Area Network)라고 한다.
- WAN을 구축하는 방법으로 전용선으로 연결하는 경우와 가상 사설망으로 연결하는 경우가 있고, AWS와 다른 네트워크를 연결하는 경우도 있다.
- VPN 중에 인터넷을 사용해 구축하는 경우를 인터넷 VPN이라고 한다.
- 인터넷 VPN을 지원하는 라우터만 설치하면 이용할 수 있다.
💎 전용선
- KT와 같은 통신 사업자가 직접 연결할 수 있는 회선인 전용선을 임대하여 구축한다.
- 비싸지만 안전하고 신뢰성이 높다.
💎 가상 사설망
- 보유하고 있는 회선뿐만 아니라 공용 회선을 사용하여 거점끼리 통신을 암호화하여 연결한다.
- 비용은 싸지만 신뢰성이 낮다.
- 암호화 기술이 해석되지 않는 이상 데이터가 유출될 걱정은 없다.
#Women-in-Spring
#2024-11-완독-그림으로-이해하는-aws-구조와-기술