-
Domain Name System (DNS) κ°μML engineer/System designs 2023. 1. 22. 11:46λ°μν
π 5 mins read
μ¬μ€, DNS μμ€ν μ λν μμΈν λ΄μ©λ€μ μ± μ μ°Ύμλ΄λ λκ³ , μν€λ₯Ό κ²μν΄ λ³΄λ©΄ μμ£Ό μμΈνκ² μ¨κ° μ λ³΄κ° λμ¬ ν λ°, κ°λ¨νκ² μ°λ¦¬κ° μμ€ν λμμΈμ νλ λ° μμ΄ μμλλ©΄ μ’μ λ΄μ©λ€ μμ£Όλ‘ κ°λ΅νκ² μ λ¦¬ν΄ λ΄€μ΅λλ€.
# μκ°
λλ©μΈ λ€μ μμ€ν (DNS)μ μΈν°λ·μ ν΅μ¬ κ΅¬μ± μμλ‘, μΈμ°κΈ° μ΄λ €μ΄ IP μ£Όμ λμ μ½κ² κΈ°μ΅ν μ μλ λλ©μΈ μ΄λ¦μ μ¬μ©νμ¬ μΉμ¬μ΄νΈμ μ‘μΈμ€ ν μ μκ² ν©λλ€. DNSλ λλ©μΈ μ΄λ¦μ IP μ£Όμλ‘ λ§€ννλ λ°©λ²μΌλ‘ μκ°λμμΌλ©°, μ¬μ©μκ° μΉ μ¬μ΄νΈμ μ‘μΈμ€ νκ³ μλ²κ° μλ‘ μ°Ύλ κ²μ μ½κ² νκΈ° μν λ°©λ²μ λλ€.
κ³Όκ±°μ(?) μ¬λλ€μ΄ μ νλ²νΈ μΈμ°κΈ° μ΄λ €μ°λ μ νλ²νΈλΆλ₯Ό μ°Ύμ보λ κ²κ³Ό κ°μ κ°λ μ΄λΌκ³ μκ°νμλ©΄ λ©λλ€. (μμ¦? μ¬λλ€μ μ νλ²νΈλΆκ° λμ§λ λͺ¨λ₯΄λ €λμπ )
# DNS μλλ°©μ
DNSλ κ³μΈ΅ κ΅¬μ‘°λ‘ κ΅¬μ±λμ΄ μμΌλ©°, κ³μΈ΅ ꡬ쑰μ μ΅μμμλ λ£¨νΈ μλ²κ° μμ΅λλ€. λ£¨νΈ μλ²λ .com, .org, .eduμ κ°μ μ΅μμ λλ©μΈ (Top Level Domain: TLD)μ κ΄λ¦¬νλ μν μ ν©λλ€. μ¬μ©μκ° λΈλΌμ°μ μ λλ©μΈ μ΄λ¦μ μ λ ₯νλ©΄, λΈλΌμ°μ λ λ£¨νΈ μλ²μ λλ©μΈ μ΄λ¦μ΄ μν TLDλ₯Ό νμΈνλ μμ²μ 보λ λλ€. TLDκ° νμΈλλ©΄, λΈλΌμ°μ λ ν΄λΉ TLDμ κΆν μλ μλ²μ λλ©μΈ μ΄λ¦κ³Ό κ΄λ ¨λ IP μ£Όμλ₯Ό μμ²ν©λλ€.
(λμΉμ±μ ¨κ² μ§λ§, domain nameμ νμνλ κ³Όμ μ URLμ μ€λ₯Έμͺ½ λμμλΆν° μΌμͺ½μΌλ‘ μ½μΌλ©΄μ νμνκ² λ©λλ€.)DNS μλ²λ λ£¨νΈ μλ², κΆν μλ μλ², μΊμ± μλ² λ± λ€μν μ’ λ₯κ° μμ΅λλ€. λ£¨νΈ μλ²λ TLDλ₯Ό κ΄λ¦¬νκ³ μ μ ν κΆν μλ μλ²λ₯Ό κ°λ¦¬ν€λ μν μ ν©λλ€. κΆν μλ μλ²λ νΉμ TLD λ΄μ λλ©μΈ μ΄λ¦μ κ΄λ¦¬νκ³ λλ©μΈ μ΄λ¦κ³Ό κ΄λ ¨λ IP μ£Όμλ₯Ό μ 곡ν©λλ€. μΊμ± μλ²λ DNS μ±λ₯μ ν₯μμν€κΈ° μν΄ μ΄μ DNS 쿼리 κ²°κ³Όλ₯Ό μΊμ±νλ μν μ ν©λλ€.
μΊμ λ μ΄μ΄μ λν΄μλ λ°λ‘ λ€λ£¨λλ‘ νκ² μ΅λλ€.
# DNS λ μ½λ μ ν
λλ©μΈ μ΄λ¦μ κ΄λ¦¬νλ λ° μ¬μ©λλ μ¬λ¬ κ°μ§ DNS λ μ½λκ° μμ΅λλ€. μΌλ°μ μΌλ‘ μ¬μ©λλ DNS λ μ½λ μ€ μΌλΆλ λ€μκ³Ό κ°μ΅λλ€.
A λ μ½λ: A λ μ½λλ λλ©μΈ μ΄λ¦μ IP μ£Όμλ‘ λ§€ννλ λ° μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° "example.com"μ λΈλΌμ°μ μ μ λ ₯νλ©΄ A λ μ½λλ "example.com"κ³Ό κ΄λ ¨λ IP μ£Όμλ₯Ό μ 곡ν©λλ€.
MX λ μ½λ: MX λ μ½λλ λλ©μΈ μ΄λ¦μ λ©μΌ μλ²λ₯Ό μ§μ νλ λ° μ¬μ©λ©λλ€. μ΄λ©μΌμ μ¬λ°λ₯Έ λ©μΌ μλ²λ‘ λΌμ°ν νκΈ° μν΄ μ¬μ©λ©λλ€.
CNAME λ μ½λ: CNAME λ μ½λλ λλ©μΈ μ΄λ¦μ λ³μΉμ λ§λλ λ° μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, "example.com"μ μΉ μ¬μ΄νΈκ° μκ³ "example.com/short"μ λν 짧μ URLμ λ§λ€κ³ μΆλ€λ©΄ "short"λΌλ CNAME λ μ½λλ₯Ό "example.com"μ λ§λ€ μ μμ΅λλ€.
νμ μ€λͺ Key Value μμ A νΈμ€νΈλͺ -> IPμ£Όμ 맡ν Hostname IP address [A, relay1.naubull2.io, 104.18.2.118] NS λλ©μΈλͺ μ κΆνμλ DNS νΈμ€νΈλͺ μ 맡ν Domain name Hostname [NS, naubull2.io, dns.naubull2.io] CNAME λ³μΉ(alias)λ₯Ό μ μ νΈμ€νΈλͺ μΌλ‘ 맡ν Hostname Canonical name [CNAME, naubull2.io, server1.primary.naubull2.io] MX λ©μΌ μλ² νΈμ€νΈλͺ μ μ μνΈμ€νΈλͺ μΌλ‘ 맡ν Hostname Canonical name [MX, mail.naubull2.io, mailserver1.backup.naubull2.io] # DNS 보μ
DNSλ μΈν°λ·μ ν΅μ¬ κ΅¬μ± μμμ΄λ―λ‘ μ½κ² μ μμ μΈ κ³΅κ²©μ λμμ΄ λ©λλ€. DNS μ€νΈνκ³Ό μΊμ μ€μΌμ΄λΌλ μΌλ°μ μΈ DNS 보μ μνλ§ μ΄ν΄λ³΄κ² μ΅λλ€.
DNS μ€νΈνμ 곡격μκ° μ μμ μΈ μΉ μ¬μ΄νΈλ‘ κ°λ €λ νΈλν½μ μ μ± μΉ μ¬μ΄νΈλ‘ μ¬μ μ‘νλ κ²μ λλ€. μ΄λ DNS μλ²λ₯Ό ν΄νΉνκ±°λ μλ² DNS μλ²λ₯Ό μ¬μ©νλ λ°©λ²μΌλ‘ μ΄λ£¨μ΄μ§λλ€.
μΊμ μ€μΌμ 곡격μκ° DNS μΊμμ μλ μ 보λ₯Ό μμ νλ κ²μ λλ€. μ΄λ μ μμ μΈ μΉ μ¬μ΄νΈλ‘ κ°λ €λ νΈλν½μ μ μ± μΉ μ¬μ΄νΈλ‘ μ¬μ μ‘νλ λ°©λ²μΌλ‘ μ΄λ£¨μ΄μ§λλ€.
μ΄λ¬ν μνλ€μ λλΉνκΈ° μν΄ DNSSECκ³Ό DNS over HTTPSλΌλ 보μ μ루μ μ΄ κ°λ°λμμ΅λλ€. DNSSEC(DNS 보μ νμ₯)λ DNSμ μΈμ¦ κΈ°λ₯μ μ 곡νλ©°, DNS μ λ³΄κ° λ³μ‘°λμ§ μλλ‘ λ³΄νΈν©λλ€. DNS over HTTPSλ DNS μμ²κ³Ό μλ΅μ HTTPS νλ‘ν μ½λ‘ μνΈννμ¬ λ€νΈμν¬ μ€μ 곡격μκ° DNS μ 보λ₯Ό μΏλ³Ό μ μλλ‘ λ³΄νΈν©λλ€.
# μμ½
λλ©μΈ μ΄λ¦ μμ€ν (DNS)λ μΈν°λ·μ ν΅μ¬ κ΅¬μ± μμλ‘, IP μ£Όμ λμ μ½κ² κΈ°μ΅ν μ μλ λλ©μΈ μ΄λ¦μ μ¬μ©νμ¬ μΉ μ¬μ΄νΈμ μ‘μΈμ€ ν μ μκ² ν©λλ€. DNSλ κ³μΈ΅ κ΅¬μ‘°λ‘ κ΅¬μ±λμ΄ μμΌλ©°, κ³μΈ΅ ꡬ쑰μ μ΅μμμλ λ£¨νΈ μλ²κ° μμ΅λλ€. DNS λ μ½λλ A, MX, CNAME λ±μ μ¬μ©νμ¬ λλ©μΈ μ΄λ¦κ³Ό IP μ£Όμλ₯Ό 맀ννκ³ μ΄λ©μΌκ³Ό λ³μΉ μ€μ μ ꡬμ±ν©λλ€.
κ·Έλ¦¬κ³ DNSλ μ μμ 곡격μ λμμ΄ λλ©°, DNS μ€νΈνκ³Ό μΊμ μ€μΌκ³Ό κ°μ 보μ μνμ΄ μμ΅λλ€. μ΄λ¬ν μνλ€μ λλΉνκΈ° μν΄ DNSSECκ³Ό DNS over HTTPSλΌλ 보μ μ루μ μ΄ κ°λ°λμμ΅λλ€.
μμΌλ‘ μ΄ν΄λ³Ό μμλ€μ λΉν΄ DNS μλ²λ ISP(μΈν°λ· μλΉμ€ μ 곡μ: νν μκ°νμλ ν΅μ μ¬μ£ )λ μ¬λ΄ μΈνλΌμ€ κ°μ κ³³μ κ³μ κ° μλλΌλ©΄ μ§μ λ€λ£°μΌμ κ±°μ μμ§λ§, μλ² λ°μ£Ό/ν΄λΌμ°λ μΈμ€ν΄μ€ μμ±λ±μ νλ€ λ³΄λ©΄ κ΄λ ¨λ μ©μ΄λ€μ μ ν μ μμΌλ μμλμλ©΄ μ’μ κ² κ°μ΅λλ€.
# (μΆκ°) DNS λΆμ° μμ€ν
DNSκ° μΈν°λ·μ ν΅μ¬ ꡬμ±μμμΈ κ²μ μ΄ν΄νλ€λ©΄, μ¬κΈ°κ° λ¨μΌ λ³λͺ© μ§μ (single point of failure)μ΄ λμ΄μ μλλ€λ κ±Έ μ μ μμ΅λλ€.
Scalability, reliability λ±μ 보μ₯νκΈ° μν΄ DNS ꡬ쑰λ root-level 13κ°μ μΈμ€ν΄μ€λ₯Ό 1,000μ¬ κ°μ λ ν리μΌμ΄μ μ μΈκ³ κ³³κ³³μ κ°μ§κ³ μμ΅λλ€. μΊμ±λΏλ§ μλλΌ μλ² λ ν리μΌμ΄μ μ κ°μ§λ©°, λλΆλΆμ ν΄λΌμ΄μΈνΈκ° DNSλ₯Ό UDPλ₯Ό μ΄μ©ν΄ νΈμΆνμ§λ§, μμ μ±μ΄λ 보μμΈ‘λ©΄μμ TCP 컀λ₯μ μ μ΄μ©νκΈ°λ ν©λλ€. μμ μ΄ν΄λ³Έ HTTPSμ²λΌ λ μμ λ μ΄μ΄λ₯Ό ν΅ν κ²½μ° μμ μ±κ³Ό μλ΅μλλ₯Ό κ΅ννλ κ΅¬μ‘°κ° λλ κ²μ΄μ£ . (μ£Όλ‘ λ©μμ§μ ν¬κΈ°λ λ°μ΄ν° μ νμ λ°λΌ νλ‘ν μ½μ μ ννκ² λ©λλ€. μ£Όκ³ λ°λ λ°μ΄ν° μ¬μ΄μ¦κ° 컀μ§μλ‘ μμ μ±μ΄ μ€μν΄μ§λκΉμ.)
## Consistency
Consistencyμ λν΄μ μ μ μ΄μ§ λ€λ€μλλ°μ, DNSλ eventual consistencyλ₯Ό μ§ν₯ν©λλ€. μ¦ λΉ λ₯Έ μλ΅μλλ₯Ό μν΄ μ€μκ°μ±μ μ΄λ μ λ ν¬κΈ°νκ³ , λ ν리카 λ Έλ κ°μ μ λ°μ΄νΈκ° λͺ¨λ μ΄λ£¨μ΄μ§λ λ°μλ λκ² μ μ΄μμ 3μΌ μ λ κΉμ§λ κ±Έλ¦°λ€κ³ ν©λλ€. μ λ°μ΄νΈμ κ·λͺ¨λ DNS νΈλ¦¬ ꡬ쑰μ μ΄λ ꡬμμ΄ μ λ°μ΄νΈλλλμ λ°λΌ μμ μκ°μ΄ κΈΈμ΄μ§ μ λ μλ κ²μ΄μ£ . (μ£Όμ λ³κ²½μ΄ λ°μνλ€ ν΄λ DNSλ νμ available ν΄μΌ νλκΉμ.)
μΊμ± λν μλ΅ μλλ₯Ό λμ¬μ£Όλ μμμ§λ§, consistencyλ₯Ό κΉ¨λ¨λ¦¬λ μν μ νκΈ°λ ν©λλ€. (λλ©μΈμ΄λ IPμ λ³΄κ° λ°λμλλ° μ€λλ μΊμκ° λ¨μμμ΄μ μ μμ μΌλ‘ μ£Όμλ₯Ό μ°Ύμ§ λͺ»νλ κ²½μ°) μ΄λ° λ¬Έμ λ₯Ό μ΅μννκΈ° μν΄ κ° μΊμ λ μ½λμλ expiration timeμ μ§μ ν©λλ€.(Time to live : TTL) TTLμ κ·Έ μν μ μ λλ‘ μννκΈ° μν΄ λκ² μμ κ°μΌλ‘ μ€μ ν©λλ€. (μκ²λ 2λΆμμ κΈΈκ²λ 10λΆ μ΄λ΄ μ λλ‘)
## μ€μ΅
ν°λ―Έλμμ λͺ κ°μ§ 컀맨λλ‘ DNSμ λμμ μ΄ν΄λ³Ό μ μμ΅λλ€. nslookup 컀맨λμ dig 컀맨λμ λλ€.
ν°λ―Έλμ μλ λ 컀맨λλ₯Ό 볡μ¬ν΄ λ£κ³ , κ²°κ³Ό κ°μ μ΄ν΄λ΄ λλ€.- nslookup www.google.com
- dig www.google.com
β― nslookup www.google.com Server: 168.126.63.1 Address: 168.126.63.1#53 Non-authoritative answer: Name: www.google.com Address: 142.250.196.100
- Non-authoritative answerλ₯Ό 보면, κ΅¬κΈ μλ²κ° μλλΌ μ΄λκ° μ€κ° λ¨κ³μμ μλ΅μ΄ λ΄λ €μ¨ κ²μ΄λΌλ μλ―Έμ λλ€. (μΊμ λμ΄μλ€λ λ»μ΄μ£ ) μ€κ°μ νκ΅, νμ¬μ DNS resolver κ±°λ, ISP λ€μμλ² κ°μ κ³³μ΄κ² μ£ ?
β― dig www.google.com ; <<>> DiG 9.10.6 <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38427 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 33 IN A 142.251.42.196 ;; Query time: 6 msec ;; SERVER: 168.126.63.1#53(168.126.63.1) ;; WHEN: Sun Jan 22 11:40:30 KST 2023 ;; MSG SIZE rcvd: 59
- dig 컀맨λλ‘ μλ΅ μκ°μ΄ 10 msec μΈ κ²μ μ μ μμ΅λλ€. μ΄ μλ΅ μλλ λ§€λ² λ¬λΌμ§κ² μ£ ?
- ANSWER SECTIONμ 33 μ DNS resolverμ ν΄λΉ λ μ½λκ° λͺ μ΄ λμμ΄λ μΊμ±λμ΄μμλμ§λ₯Ό λνλ λλ€.## μκ°κ±°λ¦¬
DNS κ° μ΄λ€ μΉμ¬μ΄νΈλ μλΉμ€μ IP μ£Όμλ₯Ό μλ €μ£Όλ μμ€ν μ΄λΌλ©΄, μ°λ¦¬κ° μ¬μ©νλ μ»΄ν¨ν°λ DNS resolverμ IP μ£Όμ(root level)λ μ΄λ»κ² μ μ μμκΉμ?
<μ λ΅μ λ 보기λ₯Ό νΌμ³ 보μΈμ>
λ보기OS λ΄μ (리λ μ€μ κ²½μ° /etc/resolv.conf ) DNS resolverμ IP μ£Όμκ° μ μ₯λμ΄ μμ΅λλ€. DNS resolverλ μμ£Ό λ°λλ μΌμ΄ μκΈ° λλ¬Έμ OSμ 13κ°μ root-level μλ²μ μ£Όμκ° λ΄μ₯λμ΄ μλ μ μ΄μ£ .
λ°μν'ML engineer > System designs' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
IaaS / PaaS / SaaS (0) 2023.09.22 λΆμ° μμ€ν λμμΈ (0) 2023.01.19 Consistency Modelμ μ’ λ₯ (0) 2023.01.02