DNS (Domain Name System)
๊ฐ์
DNS(Domain Name System)๋ ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ๋ณํํด์ฃผ๋ ์ธํฐ๋ท์ ์ ํ๋ฒํธ๋ถ ์์คํ
์ด๋ค.
์์์ ๋๋ฉ์ธ์ด ๋ญ์ง ๋ฐฐ์ ์ฃ ? ๊ทธ๋ฐ๋ฐ ์ปดํจํฐ๋ google.com ๊ฐ์ ๊ธ์๋ฅผ ์ดํด ๋ชปํด์. ์ปดํจํฐ๋ผ๋ฆฌ๋ 142.250.196.110 ๊ฐ์ IP ์ฃผ์๋ก๋ง ํต์ ํ ์ ์๊ฑฐ๋ ์.
๊ทธ๋์ ๋๋ฉ์ธ ์ด๋ฆ โ IP ์ฃผ์๋ก ๋ฐ๊ฟ์ฃผ๋ ์์คํ
์ด ํ์ํ๋ฐ, ๊ทธ๊ฒ ๋ฐ๋ก DNS์์! ์ฐ๋ฆฌ๊ฐ ๋ธ๋ผ์ฐ์ ์ google.com์ ์น๋ฉด, DNS๊ฐ "์, ๊ทธ๊ฑด 142.250.196.110์ด์ผ!" ํ๊ณ ์๋ ค์ฃผ๋ ๊ฑฐ์์. ์ด ๊ณผ์ ์ด ๋์ ์ ๋ณด์ด์ง๋ง, ์ธํฐ๋ท์ ์ฌ์ฉํ ๋๋ง๋ค ๋งค๋ฒ ์ผ์ด๋๊ณ ์์ด์!
DNS ์กฐํ ์ ์ฒด ํ๋ฆ
sequenceDiagram
participant ๋ธ๋ผ์ฐ์ as ๐ค ๋ธ๋ผ์ฐ์
participant ์บ์ as ๐พ ๋ก์ปฌ ์บ์
participant ๋ฆฌ์กธ๋ฒ as ๐ DNS ๋ฆฌ์กธ๋ฒ<br/>(ISP ์ ๊ณต)
participant ๋ฃจํธ as ๐ ๋ฃจํธ DNS
participant TLD as ๐ท๏ธ TLD DNS<br/>(.com ๋ด๋น)
participant ๊ถํ as ๐๏ธ ๊ถํ DNS<br/>(google.com ๋ด๋น)
๋ธ๋ผ์ฐ์ ->>์บ์: www.google.com์ IP?
์บ์-->>๋ธ๋ผ์ฐ์ : โ ์์
๋ธ๋ผ์ฐ์ ->>๋ฆฌ์กธ๋ฒ: www.google.com์ IP?
๋ฆฌ์กธ๋ฒ->>๋ฃจํธ: www.google.com์ IP?
๋ฃจํธ-->>๋ฆฌ์กธ๋ฒ: .com์ ์ด์ชฝ์ ๋ฌผ์ด๋ด!
๋ฆฌ์กธ๋ฒ->>TLD: www.google.com์ IP?
TLD-->>๋ฆฌ์กธ๋ฒ: google.com์ ์ด์ชฝ์ ๋ฌผ์ด๋ด!
๋ฆฌ์กธ๋ฒ->>๊ถํ: www.google.com์ IP?
๊ถํ-->>๋ฆฌ์กธ๋ฒ: 142.250.196.110 ์ด์ผ!
๋ฆฌ์กธ๋ฒ-->>๋ธ๋ผ์ฐ์ : 142.250.196.110
Note over ๋ธ๋ผ์ฐ์ ,์บ์: ๋ค์์ ๋ ๋ฌผ์ด๋ณผ ๋๋ฅผ ์ํด<br/>๊ฒฐ๊ณผ๋ฅผ ์บ์์ ์ ์ฅ!Mermaid
๋ณต์ฌ
์ด ๊ณผ์ ์ ์ข ๋ ํ์ด์ ์ค๋ช
ํ๋ฉด ์ด๋์:
1.
๋ก์ปฌ ์บ์ ํ์ธ โ ์ด์ ์ ์ ์ํ ์ ์์ผ๋ฉด ์ ์ฅํด๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ฌ์ฉํด์. ๋งค๋ฒ DNS ์กฐํํ๋ฉด ๋๋ฆฌ๋๊น์!
2.
DNS ๋ฆฌ์กธ๋ฒ์ ์ง๋ฌธ โ ์บ์์ ์์ผ๋ฉด ISP(ํต์ ์ฌ)๊ฐ ์ ๊ณตํ๋ DNS ๋ฆฌ์กธ๋ฒ์๊ฒ ๋ฌผ์ด๋ด์.
3.
๋ฃจํธ DNS โ ๋ฆฌ์กธ๋ฒ๊ฐ ๋ฃจํธ ์๋ฒ์ ๋ฌผ์ผ๋ฉด, ".com์ ์ด ์๋ฒ๊ฐ ๋ด๋นํด!" ํ๊ณ ์๋ดํด์ค์.
4.
TLD DNS โ .com ๋ด๋น ์๋ฒ์ ๋ฌผ์ผ๋ฉด, "google.com์ ์ด ์๋ฒ๊ฐ ์๊ณ ์์ด!" ํ๊ณ ์๋ดํด์ค์.
5.
๊ถํ DNS โ ์ต์ข
์ ์ผ๋ก google.com์ ์ค์ IP ์ฃผ์๋ฅผ ์๋ ค์ค์.
๋ง์น ํฐ ๋์๊ด์์ ์ฑ
์ ์ฐพ๋ ๊ฒ๊ณผ ๋น์ทํด์: ๋์๊ด ์๋ด๋ฐ์คํฌ(๋ฃจํธ) โ ํด๋น ์ธต ์๋ด(TLD) โ ํด๋น ์๊ฐ(๊ถํ) โ ์ฑ
๋ฐ๊ฒฌ!
DNS ์๋ฒ ๊ณ์ธต ๊ตฌ์กฐ
graph TD
A["๐ ๋ฃจํธ DNS ์๋ฒ (13๊ฐ)<br/>. (์ ์ธ๊ณ ๋ชจ๋ ๋๋ฉ์ธ์ ์ถ๋ฐ์ )"] --> B[".com TLD ์๋ฒ"]
A --> C[".kr TLD ์๋ฒ"]
A --> D[".org TLD ์๋ฒ"]
A --> E[".io TLD ์๋ฒ"]
B --> F["google.com<br/>๊ถํ DNS"]
B --> G["naver.com<br/>๊ถํ DNS"]
B --> H["example.com<br/>๊ถํ DNS"]
C --> I["co.kr<br/>๊ถํ DNS"]
F --> J["www โ 142.250.196.110<br/>mail โ 142.250.196.111"]
H --> K["www โ 93.184.216.34<br/>api โ 93.184.216.35"]
style A fill:#FFD700
style B fill:#87CEEB
style C fill:#87CEEB
style D fill:#87CEEBMermaid
๋ณต์ฌ
DNS ์๋ฒ ์ ํ | ์ญํ | ์ ์ธ๊ณ ์ | ์์ |
๋ฃจํธ DNS | ์ต์์, TLD ์๋ฒ ์์น ์๋ด | 13๊ฐ (๋ฏธ๋ฌ ํฌํจ ์๋ฐฑ ๊ฐ) | |
TLD DNS | ๊ฐ TLD์ ๊ถํ DNS ์์น ์๋ด | TLD๋ณ ๋ค์ | .com โ Verisign |
๊ถํ DNS | ์ค์ ๋๋ฉ์ธ์ IP ์ ๋ณด ๋ณด์ | ๋๋ฉ์ธ๋ณ | Cloudflare, AWS Route53 |
DNS ๋ฆฌ์กธ๋ฒ | ์ฌ์ฉ์ ์์ฒญ์ ๋์ ์กฐํ | ISP๋ง๋ค ๋ณด์ | 8.8.8.8 (Google), 1.1.1.1 (Cloudflare) |
๋ฏธ๋ฌ(Mirror)
DNS ์๋ฒ๋ฅผ ํ ๋๋ก ๋์ง ์๊ณ , ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์๋ฒ๋ฅผ ์ฌ๋ฌ ์ง์ญ์ ๋ณต์ ํด ๋ถ์ฐ ์ด์ํ๋ ๋ฐฉ์์ด์์. ๊ฐ๊น์ด ์๋ฒ๋ก ์ฐ๊ฒฐ๋ผ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ , ํ ๊ณณ์ด ์ฅ์ ๋๋ ๋ค๋ฅธ ์๋ฒ๊ฐ ๋์ ํด ์์ ์ฑ์ด ๋์์ ธ์.
DNS ๋ ์ฝ๋ ์ข
๋ฅ
DNS์๋ ๋จ์ํ IP ์ฃผ์๋ง ์ ์ฅ๋๋ ๊ฒ ์๋์์. ์ฌ๋ฌ ์ข
๋ฅ์ ๋ ์ฝ๋๊ฐ ์์ด์, ๊ฐ๊ฐ ๋ค๋ฅธ ์ญํ ์ ํด์.
๋ ์ฝ๋ ํ์
| ์ด๋ฆ | ์ฉ๋ | ๊ฐ ์์ |
A | Address | ๋๋ฉ์ธ โ IPv4 ์ฃผ์ | 93.184.216.34 |
AAAA | Quad-A | ๋๋ฉ์ธ โ IPv6 ์ฃผ์ | 2606:2800:220:1:248:1893:25c8:1946 |
CNAME | Canonical Name | ๋๋ฉ์ธ โ ๋ค๋ฅธ ๋๋ฉ์ธ (๋ณ์นญ) | www.example.com โ example.com |
MX | Mail Exchange | ๋ฉ์ผ ์๋ฒ ์ง์ | mail.example.com (์ฐ์ ์์ 10) |
TXT | Text | ํ
์คํธ ์ ๋ณด (์ธ์ฆ, SPF ๋ฑ) | v=spf1 include:_spf.google.com |
NS | Name Server | ๊ถํ DNS ์๋ฒ ์ง์ | ns1.cloudflare.com |
SOA | Start of Authority | ๋๋ฉ์ธ ๊ด๋ฆฌ ์ ๋ณด | ์๋ฆฌ์ผ ๋ฒํธ, ๊ฐฑ์ ์ฃผ๊ธฐ ๋ฑ |
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊ฑด A ๋ ์ฝ๋์ CNAME ๋ ์ฝ๋์์!
๋๋ฉ์ธ์ A ๋ ์ฝ๋๋ก ๊ฐ์์๋ฒ์ ๊ณต์ธ IP๋ฅผ ์ฐ๊ฒฐํ๋ฉด, ๊ทธ ๋๋ฉ์ธ์ผ๋ก ์ ์ํ ๋ ํด๋น ๊ฐ์์๋ฒ๋ก ํธ๋ํฝ์ด ์ ๋ฌ๋์ด(์น์๋ฒ๊ฐ ๋ ์๋ค๋ฉด) ์ฌ์ดํธ๊ฐ ์ด๋ฆฝ๋๋ค.
์ค์ DNS ์ค์ ์์
# A ๋ ์ฝ๋ - ๋๋ฉ์ธ์ ์๋ฒ IP๋ก ์ง์ ์ฐ๊ฒฐ
example.com. A 93.184.216.34
api.example.com. A 93.184.216.35
# CNAME ๋ ์ฝ๋ - ๋ณ์นญ ์ค์
www.example.com. CNAME example.com.
blog.example.com. CNAME example.com.
# MX ๋ ์ฝ๋ - ๋ฉ์ผ ์๋ฒ
example.com. MX 10 mail.example.com.
# TXT ๋ ์ฝ๋ - SSL ์ธ์ฆ์ ๊ฒ์ฆ ๋ฑ
example.com. TXT "v=spf1 include:_spf.google.com ~all"
Plain Text
๋ณต์ฌ
TTL (Time To Live)
TTL ๊ฐ | ์๊ฐ | ์ ํฉํ ์ํฉ |
300 | 5๋ถ | ์๋ฒ ๋ง์ด๊ทธ๋ ์ด์
์ค (๋น ๋ฅธ ๋ณ๊ฒฝ ํ์) |
3600 | 1์๊ฐ | ์ผ๋ฐ์ ์ธ ์ค์ |
86400 | 24์๊ฐ | ์ ๋ฐ๋์ง ์๋ ์์ ์ ์ธ ์๋น์ค |
TTL์ "์ด DNS ๊ฒฐ๊ณผ๋ฅผ ์ผ๋ง๋ ์ค๋ ๊ธฐ์ตํด๋์ง"๋ฅผ ์ ํ๋ ๊ฐ์ด์์. TTL์ด 3600์ด๋ฉด, ํ ๋ฒ ์กฐํํ ๋ค 1์๊ฐ ๋์์ ์บ์์ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๊ณ ๋ค์ ์กฐํํ์ง ์์์.
์๋ฒ IP๋ฅผ ๋ฐ๊ฟ ์์ ์ด๋ผ๋ฉด ๋ฏธ๋ฆฌ TTL์ ์งง๊ฒ ์ค์ฌ๋๋ ๊ฒ ์ข์์! ๊ทธ๋์ผ ๋ณ๊ฒฝ ํ ๋น ๋ฅด๊ฒ ์ ํ๋๊ฑฐ๋ ์.
DNS ๊ด๋ จ ๋ช
๋ น์ด
# ๋๋ฉ์ธ์ IP ์กฐํ
nslookup google.com
# ์์ธ DNS ์กฐํ
dig google.com
# ํน์ ๋ ์ฝ๋ ํ์
์กฐํ
dig google.com MX
dig google.com TXT
# ํน์ DNS ์๋ฒ์ ์ง์
dig @8.8.8.8 google.com
# DNS ์บ์ ์ด๊ธฐํ (Windows)
ipconfig /flushdns
# DNS ์บ์ ์ด๊ธฐํ (macOS)
sudo dscacheutil -flushcache
Bash
๋ณต์ฌ
์ ๋ช
Public DNS
DNS | IP ์ฃผ์ | ์ ๊ณต์ | ํน์ง |
Google DNS | 8.8.8.8, 8.8.4.4 | Google | ๊ฐ์ฅ ์ ๋ช
, ๋น ๋ฆ |
Cloudflare DNS | 1.1.1.1, 1.0.0.1 | Cloudflare | ๊ฐ์ฅ ๋น ๋ฆ, ํ๋ผ์ด๋ฒ์ ์ค์ |
OpenDNS | 208.67.222.222 | Cisco | ํผ์ฑ ์ฐจ๋จ ๊ธฐ๋ฅ |
KT DNS | 168.126.63.1 | KT | ๊ตญ๋ด ISP |
ISP(ํต์ ์ฌ)๊ฐ ๊ธฐ๋ณธ ์ ๊ณตํ๋ DNS๊ฐ ๋๋ฆฌ๋ค๋ฉด, Google์ด๋ Cloudflare์ Public DNS๋ก ๋ฐ๊ฟ๋ณด์ธ์! ์ฒด๊ฐ ์๋๊ฐ ๋นจ๋ผ์ง ์ ์์ด์.
ํต์ฌ ์ ๋ฆฌ
DNS = ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ๋ณํํ๋ ์์คํ
(์ธํฐ๋ท์ ์ ํ๋ฒํธ๋ถ)
์กฐํ ์์: ๋ก์ปฌ ์บ์ โ DNS ๋ฆฌ์กธ๋ฒ โ ๋ฃจํธ โ TLD โ ๊ถํ DNS
ํต์ฌ ๋ ์ฝ๋: A(IPv4), AAAA(IPv6), CNAME(๋ณ์นญ), MX(๋ฉ์ผ), TXT(ํ
์คํธ)
TTL: DNS ์บ์ ์ ์ง ์๊ฐ โ ์๋ฒ ์ด์ ์ ๋ฏธ๋ฆฌ ์งง๊ฒ ์ค์
๋๋ฉ์ธ์ ๊ตฌ๋งคํ ๋ค DNS ๋ ์ฝ๋์ ์๋ฒ IP๋ฅผ ๋ฑ๋กํด์ผ ์ ์ ๊ฐ๋ฅ!




