28. AWS Virtual Private Cloud(VPC)
AWS Certified SAA-C02 ์ํ์ค๋น
Contents
CIDR - IPv4
- Classless Inter-Domain Routing : IP ์ฃผ์ ํ ๋น ๋ฐฉ๋ฒ
- Security Groups : ๊ท์น ๋ฐ AWS ๋คํธ์ํน์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ
- Base IP : ๋ฒ์์ ํฌํจ๋ IP๋ฅผ ๋ํ๋ (e.g., 10.0.0.0, 192.168.0.0 …)
- Subnet Mask
- IP์์ ๋ณ๊ฒฝํ ์ ์๋ ๋นํธ ์๋ฅผ ์ ์ (e.g., /0, /24, /32)
- /8 : 255.0.0.0
- /16 : 255.255.0.0
- /24 : 255.255.255.0
- /32 : 255.255.255.255
Subnet Mask
Subnet Mask ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธIP์์ ๋ค์ ๊ฐ์ ์ถ๊ฐ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.
IP/Subnet Mask | ||
---|---|---|
192.168.0.0/32 | allows for 1 IP(20) | 192.168.0.0 |
192.168.0.0/31 | allows for 2 IP(21) | 192.168.0.0 ~ 192.168.0.1 |
192.168.0.0/30 | allows for 4 IP(22) | 192.168.0.0 ~ 192.168.0.3 |
192.168.0.0/29 | allows for 8 IP(23) | 192.168.0.0 ~ 192.168.0.7 |
192.168.0.0/28 | allows for 16 IP(24) | 192.168.0.0 ~ 192.168.0.15 |
192.168.0.0/27 | allows for 32 IP(25) | 192.168.0.0 ~ 192.168.0.31 |
192.168.0.0/26 | allows for 64 IP(26) | 192.168.0.0 ~ 192.168.0.65 |
192.168.0.0/25 | allows for 128 IP(27) | 192.168.0.0 ~ 192.168.0.127 |
192.168.0.0/24 | allows for 256 IP(28) | 192.168.0.0 ~ 192.168.0.255 |
192.168.0.0/16 | allows for 65,536IP(216) | 192.168.0.0 ~ 192.168.255.255 |
192.168.0.0/0 | allows for All IP | 0.0.0.0 ~ 255.255.255.255 |
Public vs Private IP (IPv4)
IANA(Internet Assigned Number Authority)
์ ๊ฐ์ธ(LAN) ๋ฐ ๊ณต์ฉ(Internet) ์ฃผ์ ์ฌ์ฉ์ ์ํด IPv4 ์ฃผ์์ ํน์ ๋ธ๋ก์ ์ค์ ํจ- Private IP๋ ํน์ ๊ฐ๋ง ํ์ฉ ๊ฐ๋ฅ
10.0.0.0 โ 10.255.255.255 (10.0.0.0/8)
: big networks172.16.0.0 โ 172.31.255.255 (172.16.0.0/12)
: AWS defaultVPC in that range192.168.0.0 โ 192.168.255.255 (192.168.0.0/16)
: e.g., home networks
- ์ธํฐ๋ท์ ์๋ ๋๋จธ์ง IP๋ ๋ชจ๋ public IP
Default VPC
- ๋ชจ๋ AWS ๊ณ์ ์ default VPC๋ฅผ ๊ฐ๋๋ค.
- ์๋ก์ด EC2 ์ธ์คํด์ค๋ subnet์ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ VPC๋ก ์์ํ๋ค.
- ๊ธฐ๋ณธ VPC๋ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋์ด ์๊ณ public IPv4 ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์
- public ๋ฐ private IPv4 ์ DNS ์ด๋ฆ์ ์ป์ ์ ์์
VPC in AWS
- Virtual Private Cloud (VPC)
- AWS ๋ฆฌ์ ์ ์ฌ๋ฌ VPC๋ฅผ ๋ง๋ค ์ ์๋ค. (๋ฆฌ์ ๋น VPC๋ ์ต๋ 5๊ฐ)
- VPC๋น CIDR
- Min size /28 (16 IP Address)
- Max Size /16 (65,536 IP Address)
- VPC ๋น๊ณต๊ฐ ์ ์ฉ์ด๋ฏ๋ก Private IPv4 ๋ฒ์๋ง ํ์ฉ
- 10.0.0.0 โ 10.255.255.255 (10.0.0.0/8)
- 172.16.0.0 โ 172.31.255.255 (172.16.0.0/12)
- 192.168.0.0 โ 192.168.255.255 (192.168.0.0/16)
VPC CIDR๋ ๋ค๋ฅธ ๋คํธ์ํฌ(e.g., corporate)์ ๊ฒน์น์ง ์์์ผ ํ๋ค.
Subnet
- AWS๋ ๊ฐ ์๋ธ๋ท์ 5๊ฐ์ IP ์ฃผ์๋ฅผ ์์ฝ(์ฒ์ 4๊ฐ & ๋ง์ง๋ง 1๊ฐ)
- ์ IP๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ EC ์ธ์คํด์ค ํ ๋น ๋ถ๊ฐ
์๋ธ๋ท ์์ฝ IP
- 10.0.0.0 โ Network Address
- 10.0.0.1 โ AWS์ ์ํด VPC Router ์ฉ์ผ๋ก ์์ฝ
- 10.0.0.2 โ Amazon๊ฐ ์ ๊ณตํ๋ DNS์ ๋งคํํ๊ธฐ ์ํด AWS์ ์ํด ์์ฝ
- 10.0.0.3 โ ๋์ค์ ์ฌ์ฉ์ ์ํ
- 10.0.0.255 - Network Broadcast Address. AWS๋ VPC์์ ๋ธ๋ก๋์บ์ค๋๋ฅผ ์ง์ํ์ง ์์ผ๋ฏ๋ก ํด๋น ์ฃผ์๊ฐ ์์ฝ๋์ด์์
Exam Tip: EC2 ์ธ์คํด์ค์ 29๊ฐ์ IP ์ฃผ์๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ํฌ๊ธฐ๊ฐ /27์ธ ์๋ธ๋ท์ ์ ํํ ์ ์๋ค (/27 -> 25=32 - 5 = 27 -> 27 < 29)
- ํฌ๊ธฐ๊ฐ /26์ธ ์๋ธ๋ท์ ์ ํํด์ผ ํ๋ค. (/26 -> 26=64 - 5 = 59 -> 59 > 29)
Internet Gateway (IGW)
- VPC ๋ฆฌ์์ค(e.g., EC2 ์ธ์คํด์ค)๋ฅผ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ ์ ์๋ค.
- ์ํ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ๋์ ๊ฐ์ฉ์ฑ๊ณผ ์ด์คํ
redundant
์ ๊ณต - VPC์ ๋ณ๋๋ก ์์ฑํด์ผ ํ๋ค.
- ํ๋์ VPC๋ ํ๋์ IGW์๋ง ์ฐ๊ฒฐํ ์ ์๋ค. (๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง)
- ์ธํฐ๋ท ๊ฒ์ดํธ ์จ์ด ์์ฒด์์๋ ์ธํฐ๋ท ์ก์ธ์ค๋ฅผ ํ์ฉํ์ง ์๋๋ค - Route Tables์ ๋ฐ๋์ ์์ ํด์ผ ํ๋ค.
Bastion Hosts
Bastion Host
๋ฅผ ์ฌ์ฉํ์ฌ Private EC2 ์ธ์คํด์ค๋ก SSH ํ ์ ์๋ค.- Bastion์ public ์๋ธ๋ท์ ์์นํ๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ private ์๋ธ๋ท๊ณผ ์ฐ๊ฒฐ ๋๋ค.
- Bastion Host์ security group์ ๋งค์ฐ ์๊ฒฉํด์ผํ๋ค
Exam Tip
- ๋ค๋ฅธ EC2 ์ธ์คํด์ค Security Group์ด ์๋ ์ฌ์ฉ์๊ฐ ํ์ํ IP ์ฃผ์์ ํฌํธ 22๋ง Bastion host์์ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค.
NAT Instance (outdated, ์ํ์๋ ๋์ด)
- NAT (Network Address Translation)
- private ์๋ธ๋ท์ EC2 ์ธ์คํด์ค๋ฅผ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ๊ฒ ํ ์ ์๋ค.
- ๋ฐ๋์ public ์๋ธ๋ท์์ ์คํ
- ๋ฐ๋์ NAT EC2 ์์ฑ ์ ํด๋น ์ฒดํฌ ํด์ -> Source/destination
- Elastic IP๊ฐ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํ๋ค.
- private ์๋ธ๋ท์์ NAT ์ธ์คํด์ค๋ก ๋ผ์ฐํ ํ๋๋ก Route Tables ๊ตฌ์ฑํด์ผ ํ๋ค.
- ๋ฏธ๋ฆฌ ๊ตฌ์ฑ๋ Amazon Linux AMI๋ฅผ ์ฌ์ฉํ ์ ์์
- 2020๋ 12์ 31์ผ ์ง์ ์ข ๋ฃ
- ๊ฐ์ฉ์ฑ์ด ๋์ง ์๊ณ ์ด๊ธฐํ ์ค์ ์ผ๋ก ๋ณต์ ๋ถ๊ฐ๋ฅ
- Multi AZ์ ๋ํ ASG ์์ฑ + ๋ณต์๋๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ ์คํฌ๋ฆฝํธ ํ์
- ์ธํฐ๋ท ํธ๋ํฝ ๋์ญํญ์ EC2 ์ธ์คํด์ค ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ
- Security Group & rules ๊ด๋ฆฌ
- ์ธ๋ฐ์ด๋
- HTTP/HTTPS: Private Subnet ํ์ฉ
- SSH: ํ ๋คํธ์ํฌ(Internet Gateway๋ฅผ ํตํด ์ก์ธ์ค ์ ๊ณต)
- ์์๋ฐ์ด๋
- ์ธํฐ๋ท์ ๋ํ ๋ชจ๋ HTTP/HTTPS ํธ๋ํฝ ํ์ฉ
- ์ธ๋ฐ์ด๋
NAT Gateway
- AWS์์ ๊ด๋ฆฌ๋๋ฉฐ ๋์ ๋์ญํญ, ๋์ ๊ฐ์ฉ์ฑ, ๊ด๋ฆฌ๊ฐ ํ์์์
- ์ฌ์ฉ๋ ๋ฐ ๋์ญํญ์ ๋ฐ๋ผ ์๊ฐ๋น ๋น์ฉ์ง๋ถ
NATGW
๋ ํน์ AZ์ ์์ฑ๋๋ฉฐ Elastic IP๋ฅผ ์ฌ์ฉ- ๋์ผํ ์๋ธ๋ท์ EC2 ์ธ์คํด์ค์์๋ ์ฌ์ฉํ ์ ์์ (์ค์ง ๋ค๋ฅธ ์๋ธ๋ท์์๋ง)
- Internet Gateway๊ฐ ํ์ (Private subnet => NAT Gateway => Internet Gateway)
- 5Gpbs ๋์ญํญ ์ต๋ 45Gbps ๊น์ง ์๋ ํ์ฅ
- Security Groups ๊ด๋ฆฌ๊ฐ ํ์ ์์
NAT Gateway with High Availability
- NAT Gateway๋ ๋จ์ผ AZ๋ด์์ ํ๋ ฅ์ ์
fault-tolerance
์ ์ํด multiple AZ์ multiple NAT Gateways๋ฅผ ๊ตฌ์ฑ- AZ๊ฐ ์ค๋จ๋ ๊ฒฝ์ฐ NAT๊ฐ ํ์ํ์ง ์์ผ๋ฏ๋ก AZ failover๊ฐ ํ์ํ์ง ์์
NAT Gateway vs NAT Instance
NAT Gateway | NAT Instance | |
---|---|---|
Availability ๊ฐ์ฉ์ฑ |
AZ๋ด ๋์ ๊ฐ์ฉ์ฑ(๋ค๋ฅธ AZ์์ฑ) | ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๊ฐ failover ๊ด๋ฆฌ(๊ฐ์ฉ์ฑ์ด ๋์ง์์) |
Bandwidth | Up to 45 Gbps | EC2 ํ์ ์ ์์กด |
Maintenance | AWS์์ ๊ด๋ฆฌ | ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ (e.g., software, OS patches …) |
Cost | ์๊ฐ ๋น & ์ ์ก๋ ๋ฐ์ดํฐ ์ | ์๊ฐ ๋น, ์ธ์คํด์ค ํ์ ์ ๋ฐ๋ฅธ ์ฌ์ด์ฆ + ๋คํธ์ํฌ $ |
Public IPv4 | O | O |
Private IPv4 | O | O |
Security Groups | X | O |
Use as Bastion Host? | X | O |
DNS Resolution in VPC
DNS Resolution (enableDnsSupport)
- VPC์ ๋ํด Route 53 Resolver server์ DNS ํ์ธ(DNS Resolution)์ด ์ง์๋๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์
- ๊ธฐ๋ณธ๊ฐ : True
- Amazon์ด ์ ๊ณตํ๋ DNS ์๋ฒ(169.254.169.253) ๋๋ VPC IPv4 reserved IP (x.x.x.2)๋ฅผ ์ฟผ๋ฆฌํ๊ฒ ๋๋ค.
DNS Hostname (enableDnsHostnames)
- ๊ธฐ๋ณธ์ ์ผ๋ก
- True : default VPC
- False : ์๋ก ์์ฑ๋ VPC
enableDnsSupport=true
: ์๋ฌด๊ฒ๋ ํ์ง ์์enableDnsHostnames=true
: EC2 ์ธ์คํด์ค์ ๊ณต์ฉ IPv4๊ฐ ์๋ ๊ฒฝ์ฐ ๊ณต์ฉ ํธ์คํธ ์ด๋ฆ์ ํ ๋น
Tip
Route 53์
Private Hosted Zone
์์ ์ฌ์ฉ์ ์ง์ DNS ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋๋ชจ๋ ์์ฑ์ true๋ก ์ง์ enableDnsSupport=true
& enableDnsHostname=true
Security Groups & NACLs
Network Access Control List (NACL)
- NACL์ ์๋ธ๋ท์์ ์ก์์ ๋๋ ํธ๋ํฝ์ ์ ์ดํ๋ ๋ฐฉํ๋ฒฝ๊ณผ ๊ฐ๋ค.
- ์๋ธ๋ท ๋น ํ๋์ NACL, ์๋ก์ด ์๋ธ๋ท์ Default NACL์ ํ ๋น๋๋ค.
- ์๋ก ์์ฑ๋ NACL์ ๋ชจ๋ ๊ฒ์ ๊ฑฐ๋ถ
- NACL์ ์๋ธ๋ท ์์ค์์ ํน์ IP ์ฃผ์๋ฅผ ์ฐจ๋จํ๋ ์ข์ ๋ฐฉ๋ฒ
NACL ๊ท์น
- ๊ท์น์๋ ์ซ์(1-32766). ๋ฎ์ ์ซ์๊ฐ ์ฐ์ ์์๊ฐ ๋๋ค.
Tip
10.0.0.10 ํด๋น ์ฃผ์๋ ALLOW
- #100 ALLOW 10.0.0.10/32
- #200 DENY 10.0.0.10/32
- ๋ง์ง๋ง ๊ท์น์ asterisk(*)์ด๋ฉฐ ๊ท์น์ด ๋งค์นญ๋์ง ์๋ ๊ฒฝ์ฐ ์์ฒญ์ ๊ฑฐ๋ถ
- AWS๋ 100 ๋จ์๋ก ๊ท์น์ ์ฆ๊ฐํ๋ ๊ฒ์ ์ถ์ฒ
Default NACL
- ์ฐ๊ฒฐ๋ ์๋ธ๋ท๊ณผ ํจ๊ป ๋ชจ๋ ์ธ๋ฐ์ด๋/์์๋ฐ์ด๋๋ฅผ ์๋ฝ
- ์ ๋ Default NACL์ ์์ ํ์ง ๋ง๊ณ ์ฌ์ฉ์ ์ ์ NACL์ ์์ฑํ ๊ฒ
Ephemeral Ports
- ๋ endpoint ์ฐ๊ฒฐ์ ์ค์ ํ๋ ค๋ฉด ํฌํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ ์๋ ํฌํธ์ ์ฐ๊ฒฐํ๊ณ
ephemeral port
๋ก ์๋ต๊ฐ์ ๋ฐ๊ธฐ๋ฅผ ์ํ๋ค. - ์ด์์ฒด์ ์ ๋ฐ๋ผ ํฌํธ๋ฒ์๊ฐ ๋ค๋ฅด๋ค
- IANA & MSWindows10 : 49152 - 65535
- Many Linux Kernels : 32768 - 60999
Security Group vs. NACLs
Security Group | NACL |
---|---|
์ธ์คํด์ค ์์ค์์ ์๋ | ์๋ธ๋ท ์์ค์์ ์๋ |
ํ์ฉ ๊ท์น๋ง ์ง์ | allow, deny ๊ท์น ์ง์ |
Stateful:๋ฐํ ํธ๋ํฝ์ ๊ท์น๊ณผ ๊ด๊ณ์์ด ์๋์ผ๋ก ํ์ฉ | Stateless:๋ฐํ ํธ๋ํฝ์ ๊ท์น์ ์ํด ๋ณ์์ ์ผ๋ก ํ์ฉ - think of ephemeral ports |
ํธ๋ํฝ์ ํ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ ์ ๋ชจ๋ ๊ท์น ํ๊ฐ | ํธ๋ํฝ ํ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ๋ ๊ท์น์ ์์๋๋ก ํ๊ฐ(์ฐ์ ์์๊ฐ ๋์ ์ฒซ๋ฒ์งธ ์ผ์น๊ฐ ์ ์ฉ) |
๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๊ฒฝ์ฐ EC2 ์ธ์คํด์ค์ ์ ์ฉ | ์ฐ๊ฒฐ๋ ์๋ธ๋ท์ ๋ชจ๋ EC2 ์ธ์คํด์ค์ ์๋์ผ๋ก ์ ์ฉ |
VPC โ Reachability Analyzer
- VPC ๋ endpoint ๊ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋คํธ์ํฌ ์ง๋จ ๋๊ตฌ
- ๋คํธ์ํฌ ๊ตฌ์ฑ์ ๋ชจ๋ธ์ ๋ง๋ ๋ค์ ์ด๋ฌํ ๊ตฌ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฌ ๊ฐ๋ฅ์ฑ์ ํ์ธ (ํจํท ์ ์ก์ ํ์ง ์์)
- ์ฌ์ฉ ์ฌ๋ก : ์ฐ๊ฒฐ๋ฌธ์ ํด๊ฒฐ, ๋คํธ์ํฌ ๊ตฌ์ฑ์ด ์๋๋๋ก์ธ์ง ํ์ธ ๋ฑ…
๋์์ ๋ฐ๋ฅธ ๋ถ์
- Reachable : ๊ฐ์ ๋คํธ์ํฌ ๊ฒฝ๋ก์ ๋ํ
hop-by-hop
์ธ๋ถ ์ ๋ณด ์์ฑ - Not reachable : ์ฐจ๋จ ๊ตฌ์ฑ์์ (e.g., SG, NACL, Route Tables ๊ตฌ์ฑ ๋ฌธ์ )๋ฅผ ์๋ณ