๋๋ฉ์ธ ๋ค์ ์์คํ
(DNS) ํต์ฌ ์๋ฆฌ, A/AAAA/CNAME/MX/TXT/NS/SOA ๋ ์ฝ๋ ๊ท๊ฒฉ, digยทnslookupยทhost ์ง์ CLI, SPFยทDKIMยทDMARC ์ด๋ฉ์ผ ๋ณด์ ์ธ์ฆ, TTL ์ ํ ๋ฐ Cloudflare ์ต์ ํ ๊ฐ์ด๋
## 1. DNS ๊ณ์ธต ๊ตฌ์กฐ & ์ด๋ฆ ํ์ด ํ๋ฆ (Resolution Architecture)
DNS๋ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ๊ณ์ธต์ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ผ๋ก, ์ฌ๋์ด ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ํธ์คํธ ์ด๋ฆ(FQDN)์ IP ์ฃผ์๋ก ์ํธ ๋ณํํฉ๋๋ค.
### FQDN(์ ์ฒด ์ ๊ทํ ๋๋ฉ์ธ ์ด๋ฆ) ๊ตฌ์กฐ
```text
[ Subdomain ] . [ Second-Level ] . [ Top-Level (TLD) ] . [ Root ]
techworld . sulucky5 . pe.kr . . (์๋ต)
```
### DNS ์ฟผ๋ฆฌ ๋์ ์์ (Resolution Process)
1. **๋ธ๋ผ์ฐ์ ์บ์** ํ์ธ (Chrome: `chrome://net-internals/#dns`)
2. **OS ๋ก์ปฌ ์บ์ & Hosts ํ์ผ** ํ์ธ (Linux: `/etc/hosts`, Windows: `hosts`)
3. **๋ก์ปฌ DNS ๋ฆฌ์กธ๋ฒ(Local DNS / ISP Resolver)** ์ง์ (๊ณต์ ๊ธฐ, ํต์ ์ฌ, 1.1.1.1 ๋ฑ)
4. **๋ฃจํธ ๋ค์์๋ฒ (Root Name Server, `.` )** ์ง์ โ TLD ๋ค์์๋ฒ IP ๋ฐํ
5. **TLD ๋ค์์๋ฒ (`.com`, `.kr` ๋ฑ)** ์ง์ โ Authoritative ๋ค์์๋ฒ IP ๋ฐํ
6. **๊ถํ ์๋ ๋ค์์๋ฒ (Authoritative Name Server, ์: Cloudflare, Route53)** ์ง์ โ ์ต์ข
A/CNAME ๋ ์ฝ๋ ์์
7. ํด๋ผ์ด์ธํธ ์๋ต ๋ฐ TTL ์๊ฐ ๋์ ์บ์ฑ
### ์ฃผ์ ํผ๋ธ๋ฆญ Anycast DNS ๋ฆฌ์กธ๋ฒ IP
| ์ ๊ณต์ | ๊ธฐ๋ณธ IPv4 (Primary) | ๋ณด์กฐ IPv4 (Secondary) | ์ฃผ์ ํน์ง |
|---|---|---|---|
| **Cloudflare** | `1.1.1.1` | `1.0.0.1` | ์ด๊ณ ์ Anycast, ๊ฐ์ธ์ ๋ณด ๋ณดํธ (๋ก๊ทธ ๋ฏธ๋ณด๊ด) |
| **Google Public DNS** | `8.8.8.8` | `8.8.4.4` | ๊ธ๋ก๋ฒ ์์ ์ฑ ์ต์, ๊ด๋ฒ์ํ ๋ฆฌ์กธ๋ธ ์ธํ๋ผ |
| **Quad9** | `9.9.9.9` | `149.112.112.112` | ์
์ฑ์ฝ๋ ๋ฐ ํผ์ฑ ๋๋ฉ์ธ ์ค์๊ฐ ์๋ ์ฐจ๋จ |
| **KT (๊ตญ๋ด)** | `168.126.63.1` | `168.126.63.2` | ๊ตญ๋ด CDN ๋ฐ ๋ก์ปฌ ISP ํ์ ๊ธฐ์ค ์ต์ ๋ ์ดํด์ |
| **SK๋ธ๋ก๋๋ฐด๋** | `219.250.35.130` | `219.250.35.166` | SKB ๊ฐ์
์ ์ต์ ํ |
| **LG์ ํ๋ฌ์ค** | `164.124.101.2` | `203.248.252.2` | LGU+ ๊ฐ์
์ ์ต์ ํ |
---
## 2. ํต์ฌ DNS ๋ ์ฝ๋ ํ์
์ด์ ๋ฆฌ (Core Record Types)
์ค๋ฌด์์ ์น์ฌ์ดํธ, ๋ฉ์ผ ์๋ฒ, ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ๋ ํ์์ ์ผ๋ก ๋ค๋ฃจ๋ ํ์ค ๋ฆฌ์์ค ๋ ์ฝ๋(RR)์
๋๋ค.
```text
[๋๋ฉ์ธ ํธ์คํธ๋ช
] [TTL] [ํด๋์ค] [ํ์
] [๊ฐ/๋์ ๋์]
example.com. 300 IN A 192.0.2.1
api.example.com. 300 IN CNAME example.com.
```
### ํ์ ๋ ์ฝ๋ ๋ช
์ธ
| ๋ ์ฝ๋ ํ์
| ์๋ฏธ ๋ฐ ์ญํ | ๋ฌธ๋ฒ ์์ | ์ค๋ฌด ์ฃผ์์ฌํญ |
|---|---|---|---|
| **A** | ๋๋ฉ์ธ์ **IPv4** ์ฃผ์๋ก ๋งคํ | `api.example.com. 300 IN A 104.21.5.12` | ์๋ฒ ์ค์ ๊ณต์ธ IP ์ฐ๊ฒฐ |
| **AAAA** | ๋๋ฉ์ธ์ **IPv6** ์ฃผ์๋ก ๋งคํ | `api.example.com. 300 IN AAAA 2606:4700::6815:50c` | 128๋นํธ IPv6 ์ฃผ์ |
| **CNAME** | ๋๋ฉ์ธ์ ๋ค๋ฅธ **๋๋ฉ์ธ ๋ณ์นญ(Canonical Name)**์ผ๋ก ์ง์ | `www 300 IN CNAME example.com.` | **APEX(๋ฃจํธ ๋๋ฉ์ธ)์๋ ์์น์ ์ง์ ๋ถ๊ฐ!** (๋ค๋ฅธ ๋ ์ฝ๋์ ๊ณต์กด ๋ถ๊ฐ) |
| **MX** | ํด๋น ๋๋ฉ์ธ์ **์ด๋ฉ์ผ ์์ ๋ฉ์ผ ์๋ฒ** ์ง์ | `example.com. 300 IN MX 10 aspmx.l.google.com.` | ์ฐ์ ์์(Priority) ์ซ์ ๋ถ์ฌ (๋ฎ์์๋ก ๋์ ์ฐ์ ๊ถ) |
| **TXT** | ์์์ **ํ
์คํธ ๋ฌธ์์ด** ๋ณด๊ด (์์ ๊ถ ์ธ์ฆ/๋ณด์) | `example.com. 300 IN TXT "google-site-verification=..."` | SPF, DKIM, DMARC, SSL ์ธ์ฆ, ์ ๋์ผ์ค ๊ฒ์ฆ์ ํ์ |
| **NS** | ๋๋ฉ์ธ ์กด์ **๊ถํ ์๋ ๋ค์์๋ฒ(Authoritative)** ์ง์ | `example.com. 86400 IN NS ns1.cloudflare.com.` | ์์ ๋๋ฉ์ธ ๋ ์ง์คํธ๋ผ์ ์์ ์ค์ |
| **SOA** | ์กด์ **๊ธฐ๋ณธ ๊ถํ ๋ฐ ๋๊ธฐํ ์ฃผ๊ธฐ ๋ฉํ๋ฐ์ดํฐ** | `example.com. IN SOA ns1.example.com. admin.example.com. (...)` | ์๋ฆฌ์ผ ๋ฒํธ, Refresh, Retry, Expire, ์ต์ ์บ์ TTL ๊ด๋ฆฌ |
| **PTR** | IP ์ฃผ์๋ฅผ ๋๋ฉ์ธ์ผ๋ก ์ญ๋ฐฉํฅ ๋งคํ (Reverse DNS) | `1.2.0.192.in-addr.arpa. IN PTR mail.example.com.` | ์คํธ ๋ฉ์ผ ์ฐจ๋จ ๋ฐฉ์ง(SPF ๊ฒ์ฆ)์ ํต์ ์ฌ/ISP๊ฐ ๋ฑ๋ก |
| **CAA** | ๋๋ฉ์ธ์ ๋ํ **SSL/TLS ์ธ์ฆ์ ๋ฐ๊ธ ํ์ฉ CA** ์ ํ | `example.com. IN CAA 0 issue "letsencrypt.org"` | ๋ฌด๋จ ์ธ์ฆ์ ํ์ทจ/์ค๋ฐ๊ธ ์์ฒ ๋ฐฉ์ง ๋ณด์ ํ์ค |
| **SRV** | ํน์ ๋คํธ์ํฌ ์๋น์ค(SIP, XMPP ๋ฑ)์ ํฌํธ/๊ฐ์ค์น | `_sip._tcp 300 IN SRV 10 60 5060 bigbox.example.com.` | ์๋น์ค๋ช
, ํ๋กํ ์ฝ, ์ฐ์ ์์, ๊ฐ์ค์น, ํฌํธ ์ ์ |
---
## 3. dig ์ง์ ์๋ฒฝ ๊ฐ์ด๋ (Domain Information Groper)
`dig`๋ ์ ์ธ๊ณ ์์ง๋์ด๋ค์ด ๋คํธ์ํฌ์ DNS ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ๊ณ ํ์ค์ ์ธ CLI ๋๊ตฌ์
๋๋ค.
```bash
# โก [1] ๊ธฐ๋ณธ A ๋ ์ฝ๋ ์กฐํ (์์ธํ ์๋ต ํค๋ + QUESTION + ANSWER ์น์
)
dig example.com
# ๐ [2] ํต์ฌ ๊ฒฐ๊ณผ๋ง ๊ฐ๊ฒฐํ๊ฒ ์ถ๋ ฅ (์คํฌ๋ฆฝํธ ๋ฐ ๋น ๋ฅธ ํ์ธ์ฉ)
dig example.com +short
# ์ถ๋ ฅ ์์: 93.184.216.34
# ๐ [3] ํน์ ๋ ์ฝ๋ ํ์
์ง์ ์ง์
dig example.com A
dig example.com AAAA
dig example.com CNAME
dig example.com MX +short
dig example.com TXT +short
dig example.com NS +short
dig example.com SOA
dig example.com ANY # ์ง์ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ ์ฝ๋ ์ผ๊ด ์ง์
# ๐ [4] ํน์ DNS ๋ค์์๋ฒ๋ฅผ ์ง์ ์ง์ ํ์ฌ ์ง์ (๋ก์ปฌ ์บ์ ์ฐํ)
dig @1.1.1.1 example.com # Cloudflare DNS์ ์ง์ ์ง์
dig @8.8.8.8 example.com # Google Public DNS์ ์ง์
dig @ns1.cloudflare.com example.com # ๊ถํ ๋ค์์๋ฒ์ ์ฆ๊ฐ ๋ฐ์ ์ฌ๋ถ ํ์ธ
# ๐ฒ [5] ๋ฃจํธ ๋ค์์๋ฒ๋ถํฐ ์ ์ฒด ๊ณ์ธต ์ญ์ถ์ (Full Trace)
# ๋ฃจํธ(.) -> TLD(.kr) -> Authoritative๊น์ง์ ์ ํ ๊ณผ์ ์ ํ ๋จ๊ณ์ฉ ์ถ์
dig example.com +trace
# ๐ [6] IP ์ฃผ์๋ก ๋๋ฉ์ธ ์ญ๋ฐฉํฅ ์กฐํ (Reverse Lookup)
dig -x 8.8.8.8 +short
# ์ถ๋ ฅ ์์: dns.google.
# โฑ๏ธ [7] TTL ๋ฐ ์๋ต ์ธ๋ถ ์ ์ด ์ต์
dig example.com +noall +answer # ์ธ๋ฐ์๋ ํค๋๋ฅผ ๊ฐ์ถ๊ณ ANSWER ์น์
๋ง ํ์
dig +nocmd example.com +multiline # SOA/DKIM ๊ธด ๋ ์ฝ๋๋ฅผ ์ค๋ฐ๊ฟ ์ ๋ ฌํ์ฌ ํ์
```
---
## 4. nslookup & host CLI ๋ช
๋ น์ด (Cross-Platform)
Windows, macOS, Linux ๊ธฐ๋ณธ ํฐ๋ฏธ๋์์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์ง๋จ ๋๊ตฌ์
๋๋ค.
### nslookup ๋ช
๋ น์ด
```bash
# [1] ๊ธฐ๋ณธ ๋๋ฉ์ธ IP ์กฐํ
nslookup example.com
# [2] ํน์ DNS ์๋ฒ๋ฅผ ํตํด ์กฐํ
nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1
# [3] ํน์ ๋ ์ฝ๋ ํ์
์กฐํ
nslookup -type=MX example.com
nslookup -type=TXT example.com
nslookup -type=CNAME sub.example.com
nslookup -type=NS example.com
# [4] ๋ํํ ๋ชจ๋ (Interactive Mode)
nslookup
> set type=any
> server 1.1.1.1
> example.com
> exit
```
### host ๋ช
๋ น์ด (๊ฐ๊ฒฐํ Linux ํ์ค)
```bash
# ๋น ๋ฅธ ๋๋ฉ์ธ IP ํ์ธ
host example.com
# ํน์ ๋ ์ฝ๋ ์ง์
host -t a example.com
host -t cname api.example.com
host -t mx example.com
host -t txt example.com
# ์์ธ ๋๋ฒ๊น
๋ชจ๋ (Verbose)
host -v -t a example.com
```
---
## 5. ๋ก์ปฌ DNS ์บ์ ํ๋ฌ์ & Hosts ํ์ผ (Cache Clearing & Local Override)
๋๋ฉ์ธ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋ฒ๋ฅผ ์ด์ ํ์ ๋, ๋ก์ปฌ PC์ ์บ์๋ ์ด์ IP๋ฅผ ์ฆ์ ๋น์ฐ๋ ๋ฐฉ๋ฒ์
๋๋ค.
### OS๋ณ DNS ์บ์ ๋น์ฐ๊ธฐ (DNS Flush)
```powershell
# Windows (PowerShell / CMD ๊ด๋ฆฌ์ ๊ถํ)
ipconfig /flushdns # DNS ๋ฆฌ์กธ๋ฒ ์บ์ ์ฆ์ ๋น์ฐ๊ธฐ
ipconfig /displaydns # ํ์ฌ ์บ์๋ DNS ๋ ์ฝ๋ ๋ชฉ๋ก ํ์ธ
```
```bash
# Linux (systemd-resolved) - Ubuntu 20.04/22.04/24.04
sudo resolvectl flush-caches # ์บ์ ์ฆ์ ๋น์ฐ๊ธฐ
resolvectl statistics # ์บ์ ํต๊ณ ๋ฐ ํ์ฌ ํฌ๊ธฐ ํ์ธ
# ๊ตฌํ ๋ฐฐํฌํ:
sudo systemctl restart systemd-resolved
sudo systemctl restart nscd
# macOS (Terminal)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
```
### ๋ก์ปฌ Hosts ํ์ผ ์๋ ๊ฐ์ ๋งคํ (DNS ๋ฏธ์ ํ ์ํ ๊ฐ๋ฐ/ํ
์คํธ)
DNS ๋ณ๊ฒฝ์ด ์ ์ธ๊ณ์ ์ ํ๋๊ธฐ ์ , ๋ด ์ปดํจํฐ์์๋ง ํน์ ๋๋ฉ์ธ์ ์ ์๋ฒ IP๋ก ๊ฐ์ ์ ์ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- **Windows**: `C:\Windows\System32\drivers\etc\hosts` (๋ฉ๋ชจ์ฅ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ)
- **Linux / macOS**: `/etc/hosts` (`sudo vim /etc/hosts`)
```text
# [IP ์ฃผ์] [๋๋ฉ์ธ ํธ์คํธ๋ช
]
123.45.67.89 techworld.sulucky5.pe.kr
123.45.67.89 sulucky5.pe.kr
```
---
## 6. ์ด๋ฉ์ผ ๋ณด์ ์ธ์ฆ ๋ ์ฝ๋ 3์ด์ฌ (SPF ยท DKIM ยท DMARC)
๋๋ฉ์ธ ๋ช
์์ ํผ์ฑ/์คํธ ๋ฉ์ผ ์ฌ์นญ์ ๋ฐฉ์งํ๊ณ , ๋ค์ด๋ฒยท๊ตฌ๊ธ(Gmail) ์์ ๊ฑฐ๋ถ๋ฅผ ๋ง๊ธฐ ์ํ ํ์ 3๋ ๋ณด์ ๋ ์ฝ๋์
๋๋ค.
```text
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
โ SPF ๋ ์ฝ๋ โ โ โ DKIM ์๋ช
โ โ โ DMARC ์ข
ํฉ์ ์ฑ
โ
โ (๋๊ฐ ๋ณด๋๋๊ฐ?) โ โ (๋ณ์กฐ๋์ง ์์๋) โ โ (์คํจ ์ ์ด๋ป๊ฒ?) โ
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
```
### 1) SPF (Sender Policy Framework)
๋ด ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก ์ด๋ฉ์ผ์ ๋ฐ์กํ ๊ถํ์ด ์๋ ๋ฉ์ผ ์๋ฒ IP๋ฅผ ๋ช
์ํ๋ TXT ๋ ์ฝ๋์
๋๋ค.
```text
# example.com ํธ์คํธ์ TXT ๋ ์ฝ๋ ๊ฐ:
v=spf1 ip4:203.0.113.10 include:_spf.google.com include:mailgun.org ~all
```
- `ip4:x.x.x.x` : ์ง์ ๋ ๋จ์ผ IP ๋๋ ๋์ญ ํ์ฉ
- `include:๋๋ฉ์ธ` : ํ์ฌ ๋ฐ์ก ์๋น์ค(Google Workspace, AWS SES, Mailgun ๋ฑ)์ SPF ๊ท์น ์์
- `~all` : **SoftFail** (๋ฑ๋ก๋์ง ์์ ๋ฐ์ ์ ๋ฉ์ผ์ ํต๊ณผ์ํค๋ ์คํธ ํด๋๋ก ๋ถ๋ฅ ๊ถ์ฅ)
- `-all` : **HardFail** (๋ฑ๋ก๋์ง ์์ ๋ฐ์ ์ ๋ฉ์ผ์ ์์ ์ฆ์ ํ๊ธฐ/์ฐจ๋จ)
- `+all` : ๋ชจ๋ ํ์ฉ (**์ ๋ ์ฌ์ฉ ๊ธ์ง**)
### 2) DKIM (DomainKeys Identified Mail)
์ด๋ฉ์ผ ํค๋์ ๋์งํธ ์ ์์๋ช
์ ์ฒจ๋ถํ๊ณ , ์์ ์ธก์์ DNS TXT ๋ ์ฝ๋์ ๊ณต๊ฐ๋ ๋น๋์นญ ๊ณต๊ฐํค๋ก ์๋ณ์กฐ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
```text
# selector._domainkey.example.com ํธ์คํธ์ TXT ๋ ์ฝ๋:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0...
```
- ๋ฉ์ผ ๋ฐ์ก ์๋ฒ๋ ๊ฐ์ธํค๋ก ๋ณธ๋ฌธ์ ์๋ช
ํ๊ณ , ์์ ๋ฉ์ผ ์๋ฒ๋ DNS ์กฐํ๋ฅผ ํตํด ๊ณต๊ฐํค(`p=...`)๋ก ๊ฒ์ฆ
### 3) DMARC (Domain-based Message Authentication)
SPF ๋๋ DKIM ๊ฒ์ฆ์ด ์คํจํ์ ๋ ์์ ์๋ฒ๊ฐ ํด๋น ๋ฉ์ผ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง ์ง์นจ์ ๋ด๋ฆฌ๋ ์ต์ข
ํต์ ์ ์ฑ
์
๋๋ค.
```text
# _dmarc.example.com ํธ์คํธ์ TXT ๋ ์ฝ๋:
v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:dmarc-reports@example.com
```
- `p=none` : ๋จ์ ๋ชจ๋ํฐ๋ง (์คํจํด๋ ์ ์ ์์ )
- `p=quarantine` : ์์ฌ ๋ฉ์ผ๋ก ๊ฒฉ๋ฆฌ (์คํธ ๋ฉ์ผํจ์ผ๋ก ์ด๋)
- `p=reject` : ์์ ๊ฑฐ๋ถ (์์ ์ฐจ๋จ ๋ฐ ๋ฐ์ก, ๊ฐ์ฅ ์์ )
- `rua=mailto:...` : ์ผ์ผ DMARC ๊ฒ์ฆ ์ข
ํฉ ๋ถ์ ๋ฆฌํฌํธ๋ฅผ ์์ ํ ๊ด๋ฆฌ์ ์ด๋ฉ์ผ
---
## 7. TTL(Time-To-Live) & ์์ ํ ๋ง์ด๊ทธ๋ ์ด์
์ ๋ต
TTL์ ๋ฆฌ์กธ๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ DNS ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ **์บ์์ ๋ณด๊ดํ ์ ํจ ์๊ฐ(์ด ๋จ์)**์
๋๋ค.
### ํ์ค ๊ถ์ฅ TTL ๊ฐ
| ์๋๋ฆฌ์ค | ๊ถ์ฅ TTL ๊ฐ | ์ด์ |
|---|---|---|
| **์ผ๋ฐ ์์ ์ด์** | `14400` ~ `86400` (4์๊ฐ~24์๊ฐ) | DNS ์๋ฒ ๋ถํ ๊ฒฝ๊ฐ, ๋น ๋ฅธ ์บ์ ์๋ต ์๋ |
| **์์ฃผ ๋ณ๊ฒฝ๋๋ ์๋น์ค** | `300` ~ `600` (5๋ถ~10๋ถ) | ๋น ๋ฅธ ์ฅ์ ๋ณต๊ตฌ(Failover) ๋ฐ ์ ์ฐํ ๋กค๋ฐฑ |
| **์๋ฒ ์ด์ 24~48์๊ฐ ์ ** | `300` (5๋ถ) | DNS ๋ณ๊ฒฝ ์ ์ ์ธ๊ณ ์บ์๋ฅผ ์ฆ์ ๊ฐฑ์ ํ๊ธฐ ์ํจ |
| **์ด์ ์๋ฃ ๋ฐ ์์ ํ ํ** | `3600` ~ `14400` (1~4์๊ฐ) | ์ ์ ์ํ๋ก ๋ณต์ |
### ๋ฌด์ค๋จ ์๋ฒ ์ด์ (Migration) DNS ์ ๋ต
1. **D-2 (์ดํ ์ )**: ๊ธฐ์กด A/CNAME ๋ ์ฝ๋์ TTL์ **`300์ด(5๋ถ)`**์ผ๋ก ์ถ์ํ์ฌ ์ ์ฅํฉ๋๋ค.
2. **D-Day (์ด์ ๋น์ผ)**:
- ์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํฉ๋๋ค.
- DNS ๋ ์ฝ๋ ๊ฐ์ ์ ์๋ฒ์ IP/๋๋ฉ์ธ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
3. **D+1 (ํ๋ฃจ ๋ค)**:
- ์ ์ธ๊ณ ๊ฑฐ์ ๋ชจ๋ ์บ์๊ฐ 5๋ถ ์ด๋ด์ ์ ์๋ฒ๋ก ์๋ฒฝํ ์ ํ๋ฉ๋๋ค.
4. **์์ ํ ํ**:
- TTL์ ๋ค์ `3600`(1์๊ฐ) ๋๋ `86400`(1์ผ)์ผ๋ก ๋๋ ค DNS ์ฟผ๋ฆฌ ํธ๋ํฝ ๋น์ฉ๊ณผ ์ง์ฐ ์๊ฐ์ ์ค์
๋๋ค.
---
## 8. Cloudflare & ๋ชจ๋ DNS ์ํคํ
์ฒ (Modern DNS)
### ์ค๋ ์ง ๊ตฌ๋ฆ (Proxied) vs ํ์ ๊ตฌ๋ฆ (DNS Only)
```text
[ํด๋ผ์ด์ธํธ] โโ> [Cloudflare Anycast CDN/WAF] โโ> [์ค๋ฆฌ์ง ์๋ฒ] : โ๏ธ Proxied (์ค๋ ์ง)
[ํด๋ผ์ด์ธํธ] โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ> [์ค๋ฆฌ์ง ์๋ฒ] : โ๏ธ DNS Only (ํ์)
```
- **Proxied (์ค๋ ์ง ๊ตฌ๋ฆ ๐งก)**:
- ์ค์ ์ค๋ฆฌ์ง ์๋ฒ์ ๊ณต์ธ IP๊ฐ ์จ๊ฒจ์ง๊ณ Cloudflare Anycast IP๊ฐ ๋
ธ์ถ๋ฉ๋๋ค.
- DDoS ๋ฐฉ์ด, ๋ฌด๋ฃ SSL/TLS, WAF, CDN ์บ์ฑ, WebSockets ํ๋ก์๊ฐ ์๋ ํ์ฑํ๋ฉ๋๋ค.
- HTTP/HTTPS(80, 443) ํธ๋ํฝ ์ ์ฉ์
๋๋ค.
- **DNS Only (ํ์ ๊ตฌ๋ฆ ๐ฉถ)**:
- ๋จ์ ์์ DNS ์ด๋ฆ ํ์ด๋ง ์ํํฉ๋๋ค. ์ค์ ์๋ฒ IP๊ฐ ๊ทธ๋๋ก ๋
ธ์ถ๋ฉ๋๋ค.
- SSH(22), FTP, ๊ฒ์ ์๋ฒ(TCP/UDP), ๋ฉ์ผ ์๋ฒ(MX) ๋ฑ ๋น์น ํฌํธ ์ฐ๊ฒฐ ์ ํ์์
๋๋ค.
### CNAME Flattening (๋ฃจํธ ๋๋ฉ์ธ CNAME ํธํ)
- **RFC ํ์ค ํ๊ณ**: ์๋ ํ์ค RFC ๊ท์ ์ `example.com` ๊ฐ์ ๋ฃจํธ(APEX) ๋๋ฉ์ธ์๋ SOA, NS ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ฏ๋ก CNAME์ ๋ฌ ์ ์์ต๋๋ค.
- **ํด๊ฒฐ์ฑ
**: Cloudflare๋ CNAME Flattening์ ํตํด ๋ฃจํธ ๋๋ฉ์ธ์ CNAME์ ์ค์ ํด๋, ์ธ๋ถ ์ง์ ์ ์๋์ผ๋ก ์ต์ข
IP๋ฅผ ์ฐพ์ **A ๋ ์ฝ๋ ํํ๋ก ๋ณํํ์ฌ ์๋ต**ํฉ๋๋ค.
### ์ฐจ์ธ๋ ์ํธํ DNS ํ๋กํ ์ฝ
- **DoH (DNS over HTTPS)**: ํฌํธ `443` HTTPS ํฐ๋์ ํตํด DNS ์ฟผ๋ฆฌ๋ฅผ ์ ์กํ์ฌ ํต์ ์ฌ/๋์ฒญ์์ ํจํท ์ค๋ํ ์ฐจ๋จ (Cloudflare: `https://cloudflare-dns.com/dns-query`)
- **DoT (DNS over TLS)**: ์ ์ฉ ํฌํธ `853`์ ์ฌ์ฉํ์ฌ ์ ์ก ๊ณ์ธต์์ TLS๋ก ์ํธํ ์ง์ ์ํ
- **DNSSEC (DNS Security Extensions)**: ๋น๋์นญ ์ํธํค ์๋ช
์ฒด์ธ(DS ๋ ์ฝ๋)์ ํตํด DNS ์คํธํ/์บ์ ํฌ์ด์ฆ๋ ์กฐ์ ๋ฐฉ์ง
---
## 9. ์ค๋ฌด DNS ํธ๋ฌ๋ธ์ํ
์ฒดํฌ๋ฆฌ์คํธ (Troubleshooting)
### 1) SERVFAIL / NXDOMAIN ์๋ฌ
- **NXDOMAIN (Non-Existent Domain)**: ๋๋ฉ์ธ ๋๋ ํธ์คํธ ๋ ์ฝ๋๊ฐ ์์ ๋ฑ๋ก๋์ด ์์ง ์์ (์คํ ํ์ธ).
- **SERVFAIL**: ๊ถํ ๋ค์์๋ฒ ์๋ต ๋ถ๊ฐ, DNSSEC ์๋ช
๋ถ์ผ์น, NS ๋ ์ฝ๋ ์์ ๋ถ์ผ์น ์ค๋ฅ.
### 2) CNAME ์ฒด์ธ ๋ฃจํ (Loop)
- `a.example.com` โ `b.example.com` โ `a.example.com` ํํ๋ก ์๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฆ ํ์ด์ ์คํจํฉ๋๋ค.
### 3) ์๋ธ๋๋ฉ์ธ ํ
์ดํฌ์ค๋ฒ (Subdomain Takeover) ์ทจ์ฝ์ ๋ฐฉ์ง
- AWS S3, GitHub Pages, Vercel ๋ฑ์ ์ฐ๊ฒฐํ๋ ์๋ธ๋๋ฉ์ธ CNAME์ ๋จ๊ฒจ๋ ์ฑ ์ธ๋ถ ํด๋ผ์ฐ๋ ๋ฆฌ์์ค๋ง ์ญ์ ํ๋ฉด, ํด์ปค๊ฐ ํด๋น ๋ฆฌ์์ค๋ช
์ ์ ์ ํ์ฌ ๋ด ๋๋ฉ์ธ์ผ๋ก ํผ์ฑ ์ฌ์ดํธ๋ฅผ ๋์ธ ์ ์์ต๋๋ค.
- **๋์**: ์ฌ์ฉํ์ง ์๋ ์ธ๋ถ ํธ์คํ
CNAME ๋ ์ฝ๋๋ ์ฆ์ DNS์์ ์ญ์ ํ์ธ์.
### 4) ๊ธ๋ก๋ฒ ์ ํ ์ํ ํ์ธ ๋๊ตฌ
- [whatsmydns.net](https://www.whatsmydns.net/): ์ ์ธ๊ณ 20๊ฐ๊ตญ ์ฃผ์ DNS ๋ฆฌ์กธ๋ฒ์ ํ์ฌ ๋ ์ฝ๋ ๋ฐ์ ์ํ๋ฅผ ์ค์๊ฐ ์ง๋/๋ชฉ๋ก์ผ๋ก ์๊ฐํ ํ์ธ.
์๊ฒฌ ๋ฐ ์ง๋ฌธ
0์์ง ๋ฑ๋ก๋ ์๊ฒฌ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋๊ธ์ ๋จ๊ฒจ๋ณด์ธ์!
๋๊ธ ์์
๋๊ธ ์ญ์