๋คํธ์ํน 101 #6. Subnets, CIDR & NAT
Source: Dev.to
Note: ์ด ์๋ฆฌ์ฆ๋ ์ ๋ฌธ๊ฐ๊ฐ ์์ฑํ ๊ฒ์ด ์๋๋๋ค โ ์ด๋ณด์๊ฐ ํฐ์๋ฆฌ๋ก ๋ฐฐ์ฐ๋ฉด์ ๊ณต์ ํฉ๋๋ค:
- ๋ด๊ฐ ์ดํดํ ๊ฒ,
- ๋๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํ๋ ๊ฒ,
- ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณผ์ ์์ ๋ฐฐ์ด ๊ฒ.
๋ชฉํ๋ ์ผ๊ด์ฑ, ๋ช ํ์ฑ์ ๊ตฌ์ถํ๊ณ ํ ๋ก ์ ์ ๋ํ๋ ๊ฒ์ ๋๋ค.
๐ ์ด ๋ธ๋ก๊ทธ์์ ๋ค๋ฃจ๋ ๋ด์ฉ
์ด ํฌ์คํธ์์๋ ๋ค์์ ๋ค๋ฃน๋๋ค:
- ์๋ธ๋ท์ด๋ ๋ฌด์์ธ๊ฐ
- ํผ๋ธ๋ฆญ ์๋ธ๋ท vs ํ๋ผ์ด๋น ์๋ธ๋ท
- CIDR์ด๋ ๋ฌด์์ธ๊ฐ
- NAT์ด๋ ๋ฌด์์ธ๊ฐ
- ์๋ธ๋ท ๊ด๋ จ ๋ฌธ์ ์
๐ GitHub ์ ์ฅ์
์ด ์๋ฆฌ์ฆ๋ฅผ ์ํ ๋ชจ๋ ๋ ธํธ, ๋ค์ด์ด๊ทธ๋จ ๋ฐ ํ์ต ์๋ฃ๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค:
[GitHub repo link](add your URL)
์ ์ฅ์๋ ์ ๊ฐ ๊ณ์ ํ์ตํ๋ฉด์ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๐ ํ์ต ๋ ธํธ
1๏ธโฃ First: ์ ์๋ธ๋ท์ด ์กด์ฌํ ๊น?
Question: ์ ๋ชจ๋ ์ปดํจํฐ๋ฅผ ํ๋์ ํฐ ๋คํธ์ํฌ์ ๋์ง ์์๊น?
Answer:
- ๋ณด์์ ์ทจ์ฝํ๋ค
- ํผ๋์ค๋ฝ๋ค
- ํ์ฅ์ฑ์ด ์๋ค
๋ฐ๋ผ์ ๋คํธ์ํฌ๋ **์๋ธ๋ท(subnet)**์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์์ ๋คํธ์ํฌ๋ค๋ก ๋ถํ ๋ฉ๋๋ค.
2๏ธโฃ ์๋ธ๋ท์ด๋?
์๋ธ๋ท์ ๊ฐ์ ๋ด๋ถ ๋คํธ์ํฌ์ ์ํ๋ IP ์ฃผ์๋ค์ ๊ทธ๋ฃน์ ๋๋ค. ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค.
์์:
10.0.0.0 โ 10.0.0.255
์ด ๋ฒ์์ ํฌํจ๋ ๋ชจ๋ ๋จธ์ ์:
- ์๋ก ์ง์ ํต์ ํ ์ ์๋ค
- ๋์ผํ ํ๋ผ์ด๋น ๋คํธ์ํฌ์ ์ํ๋ค
3๏ธโฃ ํด๋ผ์ฐ๋ ์ ๊ณต์๊ฐ ์๋ธ๋ท ์ฌ์ฉ์ ๊ฐ์ ํ๋ ์ด์
AWS, GCP, Azure ๊ฐ์ ํด๋ผ์ฐ๋ ํ๋ซํผ์์๋ **โํ๋ฉด(flat) ๋คํธ์ํฌโ**๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋ฐ๋์ ๋ค์์ ์์ฑํด์ผ ํฉ๋๋ค:
- VPC(Virtual Private Cloud)
- ๊ทธ ์์ ์๋ธ๋ท
์์ผ๊น?
- ๋ณด์ ๊ฒฉ๋ฆฌ
- ๋ผ์ฐํ ์ ์ด
- ํ์ฅ์ฑ
๊ทธ๋์ VM์ ๋ง๋ค ๋ ํญ์ ์๋ธ๋ท ์ ํ ํ๋ฉด์ด ๋ํ๋ฉ๋๋ค.
4๏ธโฃ CIDR(๋ฌด์์ด /24 ํ๊ธฐ) ์ด๋?
CIDR์ ๊ฒ๋ณด๊ธฐ์ ๋ฌด์ญ์ง๋ง ์ฌ์ค ๊ฐ๋จํฉ๋๋ค.
์์:
10.0.0.0/24
CIDR์ ์ด ๋คํธ์ํฌ์ ํฌํจ๋ IP ๊ฐ์๋ฅผ ์๋ ค์ค๋๋ค.
4.1 ์ํ ์์ด CIDR (์ฝ์)
| CIDR | ๋๋ต์ ์ธ IP ์ |
|---|---|
| /24 | ~256 |
| /16 | ~65,000 |
| /8 | ~16โฏmillion |
/๋ค์ ์ซ์๊ฐ ์์์๋ก โ ๋คํธ์ํฌ๊ฐ ํฌ๋ค/๋ค์ ์ซ์๊ฐ ํด์๋ก โ ๋คํธ์ํฌ๊ฐ ์๋ค
DevOps ์ ๋ฌธ์์๊ฒ๋ ์ด ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค.
4.2 /24๊ฐ ์ค์ ๋ก ์๋ฏธํ๋ ๋ฐ
10.0.0.0/24
- ๋คํธ์ํฌ ์์ ์ฃผ์:
10.0.0.0 - ๋คํธ์ํฌ ์ข
๋ฃ ์ฃผ์:
10.0.0.255 - ์ ์ฒด โโฏ256 IP (ํด๋ผ์ฐ๋ ์ ๊ณต์๋ ๋ด๋ถ์ ์ผ๋ก ๋ช ๊ฐ๋ฅผ ์์ฝํจ)
5๏ธโฃ CIDR์ด ์ค์ DevOps ์์ ์ ์ค์ํ ์ด์
CIDR์ ๋ค์์ ๊ฒฐ์ ํฉ๋๋ค:
- ๋ช ๋์ ์๋ฒ๋ฅผ ์ด์ํ ์ ์๋๊ฐ
- ๋คํธ์ํฌ ๊ฒฉ๋ฆฌ ์์ค์ ์ด๋ ์ ๋์ธ๊ฐ
- ์๋น์ค ๊ฐ ํต์ ์ด ๊ฐ๋ฅํ๊ฐ
ํํ ์ค์: ๋๋ฌด ์์ ์๋ธ๋ท์ ์ ํ โ IP๊ฐ ๋ถ์กฑํด์ง๋ค.
6๏ธโฃ ํผ๋ธ๋ฆญ ์๋ธ๋ท vs ํ๋ผ์ด๋น ์๋ธ๋ท
6.1 ํผ๋ธ๋ฆญ ์๋ธ๋ท
- ์ธํฐ๋ท์ผ๋ก ๊ฐ๋ ๋ผ์ฐํธ๊ฐ ์กด์ฌํ๋ค
- ์ฌ์ฉ์ฒ:
- ๋ก๋ ๋ฐธ๋ฐ์
- ๋ฒ ์ค์ฒ ํธ์คํธ
- ์ธ๋ถ์ ๋ ธ์ถ๋๋ ์๋น์ค
6.2 ํ๋ผ์ด๋น ์๋ธ๋ท
- ์ธํฐ๋ท ์ง์ ์ ๊ทผ์ด ์์
- ์ฌ์ฉ์ฒ:
- ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ด๋ถ ์๋น์ค
๋ฒ ์คํธ ํ๋ํฐ์ค: ๊ณต๊ฐ๊ฐ ๋ฐ๋์ ํ์ํ ๊ฒ๋ง ์ธ๋ถ์ ๋ ธ์ถํ๋ค.
7๏ธโฃ ํ๋ผ์ด๋น ์๋ธ๋ท์ ์ด๋ป๊ฒ ์ธํฐ๋ท์ ์ ๊ทผํ ๊น?
์ฌ๊ธฐ์ NAT(Network Address Translation)๊ฐ ๋ฑ์ฅํฉ๋๋ค.
7.1 NAT๋?
NAT๋ ํ๋ผ์ด๋น IP โ ์ธํฐ๋ท ์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉด์ ์ธํฐ๋ท โ ํ๋ผ์ด๋น IP ์ ๊ทผ์ ์ฐจ๋จํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋จ๋ฐฉํฅ์
๋๋ค.
7.2 NAT๋ฅผ ๊ฐ๋จํ ์ค๋ช ํ๋ฉด
- ํ๋ผ์ด๋น ์๋ฒ:
10.0.1.5 - ์ ๊ทผํ๊ณ ์ถ์ ๋์:
google.com
ํ๋ฆ:
10.0.1.5 โ NAT Gateway โ Internet
์ธํฐ๋ท์์๋ ์์ฒญ์ด NAT ๊ฒ์ดํธ์จ์ด์ ๊ณต์ธ IP์์ ์จ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ, ์๋ต์ NAT๋ฅผ ํตํด ๋ค์ ํ๋ผ์ด๋น ์๋ฒ๋ก ๋์๊ฐ๋๋ค.
8๏ธโฃ ๋ณด์์ ์์ด NAT๊ฐ ์ค์ํ ์ด์
- NAT ์์ ๊ฒฝ์ฐ: ๋ชจ๋ ํ๋ผ์ด๋น ์๋ฒ๊ฐ ๊ณต์ธ IP๋ฅผ ๊ฐ์ ธ์ผ ํ๋ฏ๋ก ๋ชจ๋ ๋ ธ์ถ๋๋ค.
- NAT ์์ ๊ฒฝ์ฐ: ์๋ฒ๋ ํ๋ผ์ด๋น ์ํ๋ฅผ ์ ์งํ๊ณ , ์์๋ฐ์ด๋ ํธ๋ํฝ๋ง ํ์ฉ๋๋ค.
๊ทธ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ฑฐ์ ํญ์ ํ๋ผ์ด๋น ์๋ธ๋ท์ ๋ฐฐ์น๋ฉ๋๋ค.
9๏ธโฃ ์ผ๋ฐ์ ์ธ DevOps ์ํคํ ์ฒ
Internet
โ
Load Balancer (Public Subnet)
โ
App Servers (Private Subnet)
โ
Database (Private Subnet)
- NAT๊ฐ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ:
- App โ Internet (์ ๋ฐ์ดํธ, ์ธ๋ถ API)
- Database โ ์ธํฐ๋ท ์ ๊ทผ ์์
๐ ์๋ธ๋ท ๋ฌธ์ ๋ ์ค์ ๋ก ์ด๋ป๊ฒ ๋ํ๋ ๊น?
| ๋ฌธ์ | ๊ฐ๋ฅ ์์ธ |
|---|---|
| DB์ ์ฐ๊ฒฐ๋์ง ์์ | ์๋ชป๋ ์๋ธ๋ท ์ค์ |
| ์ฑ์ด ์ธํฐ๋ท์ ์ ๊ทผ ๋ชปํจ | NAT ๋๋ฝ |
| ์๋ฒ์ ์ ์ ๋ถ๊ฐ | ๊ณต์ธ IP ๋ฏธ๋ถ์ฌ |
| ์ผ๋ถ ์๋น์ค๋ง ํต์ | ๋ผ์ฐํ ๋ฌธ์ |
๋๋ถ๋ถ์ โ๋คํธ์ํฌ ๋ฌธ์ โ๋ ์๋ธ๋ท ํน์ NAT ์ค์ ์ค๋ฅ์์ ๋น๋กฏ๋ฉ๋๋ค.
1๏ธโฃ1๏ธโฃ ๊ฐ๋จํ ์โ๋จธ๋ฆฌ ์ฐ์ต
์ค์ค๋ก์๊ฒ ๋ฌผ์ด๋ณด์ธ์:
- ์ด ์๋น์ค๋ ํผ๋ธ๋ฆญ์ธ๊ฐ, ํ๋ผ์ด๋น์ธ๊ฐ?
- ์ธ๋ฐ์ด๋ ์ ๊ทผ์ด ํ์ํ๊ฐ?
- ์์๋ฐ์ด๋ ์ธํฐ๋ท ์ ๊ทผ์ด ํ์ํ๊ฐ?
์ด ๋ต๋ณ์ด ๊ฒฐ์ ํฉ๋๋ค:
- ์๋ธ๋ท ์ข ๋ฅ
- NAT ํ์ ์ฌ๋ถ
- ๋ณด์ ๊ท์น
1๏ธโฃ2๏ธโฃ ๋จธ๋ฆฌ ์์ผ๋ก ๋ ์ฌ๋ฆฌ๋ ์ค๊ณ ์ฐ์ต (๊ณ์)
odel upgrade
Your networking stack now looks like:
Internet
โ
Public Subnet
โ
Private Subnet
โ
Service
Subnets decide who can talk to whom.
โ ํต์ฌ ์์
- Subnets์ IP๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค.
- CIDR์ ์๋ธ๋ท ํฌ๊ธฐ๋ฅผ ์ ์ดํฉ๋๋ค.
- Public subnets์ ์ธํฐ๋ท์ ๋ ธ์ถ๋ฉ๋๋ค.
- Private subnets์ ์จ๊ฒจ์ง ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
- NAT๋ ์์ ํ ์์๋ฐ์ด๋ ์ ๊ทผ์ ํ์ฉํฉ๋๋ค.
- ๋๋ถ๋ถ์ ํด๋ผ์ฐ๋ ๋คํธ์ํน ๋ฌธ์ ๋ ์๋ธ๋ท๊ณผ ๊ด๋ จ๋ฉ๋๋ค.
๐ฌ ํผ๋๋ฐฑ ๋ฐ ํ ๋ก
๐ก ํผ๋๋ฐฑ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด์!
๋ค์๊ณผ ๊ฐ์ ์ ์ ๋ฐ๊ฒฌํ๋ฉด:
- ๋๋ฝ๋ ๋๊ตฌ ์นดํ ๊ณ ๋ฆฌ,
- ์๋ชป๋ ๊ฐ์ ,
- ๋ ๋์ ํ์ต ๊ฒฝ๋ก,
์๋์ ๋๊ธ์ ๋จ๊ฒจ ์ฃผ์ธ์. ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค.
โญ ํ์ต ์ฌ์ ์ ์ง์ํด ์ฃผ์ธ์
If you found this blog useful:
โญ GitHub ์ ์ฅ์์ ๋ณํ๋ฅผ ๋ฌ์ ์ฃผ์ธ์ โ ์ด๋ ์ ๊ฐ ๊ณ์ ํ์ตํ๊ณ ๊ณต๊ฐ์ ์ผ๋ก ๊ณต์ ํ๋๋ก ํฐ ๋๊ธฐ๊ฐ ๋ฉ๋๋ค.
๐ฆ ์ต์ ์์ ๋ฐ๊ธฐ
Follow me on [Twitter/X] (add your handle) for updates on future posts in this series.
# ๐ Networking for DevOps โ 101
๐ ์๊ฐ
์ ๋ Twitter/X์์ ํ์ต ์ฌ์ ์ ๊ณต์ ํ๋ DevOps Engineer์ ๋๋ค. ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ, ๋ ธํธ, ์งํ ์ํฉ์ ๊ฒ์ํฉ๋๋ค.
๐ Whatโs Next
๋ค์ ํฌ์คํธ์์๋ ๋ค์ ๋ด์ฉ์ ๋ค๋ฃฐ ์์ ์ ๋๋ค:
- Firewalls, Security Groups & โConnection Refusedโ๊ฐ ๋ฐ์ํ๋ ์ด์
- ์งํ ์ํฉ์ ๋ฐ๋ผ GitHub ์ ์ฅ์ ์ง์ ์ ๋ฐ์ดํธ
๐ ๊ณต๊ฐ ํ์ต
- Repo:
- Twitter/X:
๐ฌ ํผ๋๋ฐฑ ํ์ โ ๋ญ๊ฐ ์ด์ํ๋ฉด ๋๊ธ ๋ฌ์ ์ฃผ์ธ์.
โญ ์ ์ฉํ๋ฉด ๋ ํฌ์ ๋ณ์ ์ฃผ์ธ์.