Search
🏷️

[CKA] 58. DNS

Date
2026/02/01
Category
Computer Science
Tag
CKA
Network
Linux
λͺ©μ°¨

Β Name Resolution

name resolutionμ΄λž€ 호슀트 이름을 IP둜 λ³€ν™˜ν•˜λŠ” 것이닀. ping, ssh, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ“± μ΄λ¦„μœΌλ‘œ λ‹€λ₯Έ 호슀트λ₯Ό μ ‘κ·Όν•  λ•Œ, μ‹œμŠ€ν…œμ€ λ¨Όμ € 어디에 λ§€ν•‘ 정보가 μžˆλŠ”μ§€ μ°Ύμ•„μ„œ IP둜 λ³€ν™˜ν•œλ‹€.
동일 λ„€νŠΈμ›Œν¬μ— A와 Bκ°€ 있으며 IPλŠ” λ‹€μŒκ³Ό κ°™λ‹€ κ°€μ •ν•œλ‹€:
β€’
A: 192.168.1.1
β€’
B: 192.168.1.11
κΈ°μ‘΄ λ°©μ‹μœΌλ‘œ ping을 보낸닀면 ping 192.168.1.11 일 것이닀. ν•˜μ§€λ§Œ 맀번 IPλ₯Ό μ™Έμš°κΈ° μ‹«μ–΄ Bμ—κ²Œ β€œdbβ€λž€ 이름을 λΆ™μ—¬ ping dbλ₯Ό ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒ

/etc/hosts

Aμ—κ²Œ β€œdb = 192.168.1.11”λ₯Ό κ°€μž₯ λ‹¨μˆœν•œ 방법은 둜컬 호슀트 νŒŒμΌμ— 맀핑을 λ„£λŠ” 것이닀.
# /etc/hosts 192.168.1.11 db
Plain Text
볡사
AλŠ” dbλΌλŠ” 이름이 B의 μ‹€μ œ hostname인지 ν™•μΈν•˜μ§€ μ•ŠλŠ”λ‹€. Bμ—μ„œ hostname λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ‹€μ œλ‘œλŠ” db 말고 λ‹€λ₯Έ 이름일 수 μžˆλ‹€. κ·Έλž˜λ„ AλŠ” /etc/hosts에 적힌 λ‚΄μš©μ„ κ·ΈλŒ€λ‘œ λ―ΏλŠ”λ‹€.
극단적인 예λ₯Ό λ“€μžλ©΄
β€’
/etc/hosts에 google.com을 B둜 λ§€ν•‘ν•˜λ©΄ ping google.com이 B둜 κ°„λ‹€.
즉 /etc/hostsλŠ” λ‘œμ»¬μ—μ„œ κ°•λ ₯ν•œ name resolution μ†ŒμŠ€μ΄λ‹€.

Β DNS μ„œλ²„

μ†Œκ·œλͺ¨ λ„€νŠΈμ›Œν¬μ—μ„œλŠ” 각 μ„œλ²„λ§ˆλ‹€ /etc/hostsλ₯Ό κ΄€λ¦¬ν•˜λŠ” 방식이 κ°€λŠ₯ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ μ‹œμŠ€ν…œμ΄ λŠ˜μ–΄λ‚˜λ©΄
β€’
hosts 파일이 λ„ˆλ¬΄ 컀지고
β€’
μ„œλ²„ IPκ°€ λ°”λ€Œλ©΄ λͺ¨λ“  μ„œλ²„μ˜ /etc/hostsλ₯Ό μˆ˜μ •ν•΄μ•Ό ν•œλ‹€.
λ”°λΌμ„œ 맀핑을 μ€‘μ•™μ—μ„œ κ΄€λ¦¬ν•˜λŠ” μ„œλ²„κ°€ ν•„μš”ν•΄μ§€κ³ , 그게 DNS μ„œλ²„λ‹€.

ν˜ΈμŠ€νŠΈκ°€ DNS μ„œλ²„λ₯Ό μ‚¬μš©ν•˜κ²Œ λ§Œλ“œλŠ” 법

예λ₯Ό λ“€μ–΄, DNS μ„œλ²„ IPκ°€ 192.168.1.100이라면 ν˜ΈμŠ€νŠΈλŠ” DNS μ„€μ • νŒŒμΌμ—μ„œ λ„€μž„μ„œλ²„(예: /etc/resolv.conf)λ₯Ό μ§€μ •ν•œλ‹€.
nameserver 192.168.1.100
Plain Text
볡사
λͺ¨λ“  ν˜ΈμŠ€νŠΈμ—μ„œ ν˜ΈμŠ€νŠΈκ°€ λͺ¨λ₯΄λŠ” 호슀트 λ„€μž„μ„ λ°œκ²¬ν•  λ•Œλ§ˆλ‹€ DNS μ„œλ²„μ—μ„œ ν•΄λ‹Ή 이름을 μ‘°νšŒν•œλ‹€. IPκ°€ λ³€κ²½λ˜λ©΄ DNS μ„œλ²„λ§Œ μ—…λ°μ΄νŠΈν•˜λ©΄ 되고, ν΄λΌμ΄μ–ΈνŠΈ ν˜ΈμŠ€νŠΈλ“€μ€ μžλ™μœΌλ‘œ μ΅œμ‹  IPλ₯Ό 바라본닀.
κ·Έλ ‡λ‹€κ³  /etc/hostsλ₯Ό μ‚¬μš© λͺ»ν•˜λŠ” 것은 μ•„λ‹ˆκ³ , ν•„μš”ν•˜λ©΄ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. 예λ₯Ό λ“€μ–΄ 개인 ν…ŒμŠ€νŠΈ μ„œλ²„μ²˜λŸΌ β€œλ‚˜λ§Œ μ•Œλ©΄ λ˜λŠ” 이름”은 DNS에 μ˜¬λ¦¬μ§€ μ•Šκ³  λ‘œμ»¬μ—μ„œ /etc/hosts만 λ³€κ²½ν•˜μ—¬ λ‘œμ»¬μ—μ„œλŠ” μ—°κ²°λ˜μ§€λ§Œ λ‹€λ₯Έ ν™˜κ²½μ—μ„œλŠ” μ•ˆλ˜λŠ” 상황을 μ—°μΆœν•  수 μžˆλ‹€.

/etc/hosts vs. DNS

같은 호슀트 λ„€μž„μ΄ /etc/hosts와 DNS μ„œλ²„ 두 κ³³ λͺ¨λ‘ μžˆμ„ 수 μžˆλ‹€.
β€’
/etc/hostsμ—λŠ” 192.168.1.115 test
β€’
DNSμ—λŠ” 192.168.1.116 test
μ΄λ•Œ μ–΄λŠ μͺ½μ„ λ¨Όμ € λ³΄λŠλƒλŠ” μš°μ„ μˆœμœ„ 정책에 따라 κ²°μ •λœλ‹€.
기본적으둜 μˆœμ„œλŠ” λ‹€μŒκ³Ό κ°™λ‹€:
1.
/etc/hosts (files)
2.
DNS (dns)
이 μˆœμ„œλŠ” /etc/nsswitch.confμ—μ„œ μ •μ˜λœλ‹€. μ›ν•œλ‹€λ©΄ μˆœμ„œλ₯Ό λ°”κΏ€ 수 μžˆλ‹€.
cat /etc/nsswitch.conf ... hosts: files dns ...
Bash
볡사

μ™ΈλΆ€ 도메인

λ§Œμ•½ /etc/hosts에도 μ—†κ³  λ‚΄λΆ€ DNS에도 μ—†λŠ” 이름을 찾으면 λ‹Ήμ—°ν•˜κ²Œ μ‹€νŒ¨ν•œλ‹€. 해결책은 두 κ°€μ§€ 방법이 μžˆλ‹€.
1.
ν˜ΈμŠ€νŠΈμ— public DNS μΆ”κ°€
/etc/resolv.confμ—λŠ” λ„€μž„μ„œλ²„λ₯Ό μ—¬λŸ¬ 개 넣을 수 μžˆλ‹€.
nameserver 192.168.1.100 nameserver 8.8.8.8 # Google public DNS
Plain Text
볡사
ν•˜μ§€λ§Œ 이 방식은 λͺ¨λ“  ν˜ΈμŠ€νŠΈμ— μΆ”κ°€ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 관리가 μ–΄λ ΅λ‹€.
2.
λ‚΄λΆ€ DNS μ„œλ²„κ°€ ν¬μ›Œλ”©ν•˜λ„λ‘ ꡬ성
이미 λͺ¨λ“  ν˜ΈμŠ€νŠΈκ°€ λ‚΄λΆ€ DNSλ₯Ό 바라보고 μžˆλ‹€λ©΄, λ‚΄λΆ€ DNS μ„œλ²„κ°€ λͺ¨λ₯΄λŠ” 이름을 public DNS둜 forwardingν•˜λ„λ‘ λ§Œλ“€λ©΄ λœλ‹€.
ν΄λΌμ΄μ–ΈνŠΈλŠ” 섀정을 μΆ”κ°€λ‘œ κ±΄λ“œλ¦¬μ§€ μ•Šμ•„λ„ μ™ΈλΆ€ 도메인이 resolveλœλ‹€.

Β Domain Names

도메인 이름은 점(.)으둜 κ΅¬λΆ„λœ 트리 ꡬ쑰닀.
β€’
.: root
β€’
com: TLD (Top Level Domain)
β€’
google: domain
β€’
maps: subdomain
μ„œλΈŒ λ„λ©”μΈμœΌλ‘œ μ„œλΉ„μŠ€λ₯Ό 묢을 수 μžˆλ‹€.
β€’
maps.google.com
β€’
drive.google.com
β€’
mail.google.com

Search Domain

사내 DNS에 μ›Ή μ„œλ²„κ°€ web.mycompany.com으둜 λ“±λ‘λ˜μ–΄ 있으면 ping webλ§ŒμœΌλ‘œλŠ” μ‹€νŒ¨ν•  수 μžˆλ‹€. DNS에 web λ ˆμ½”λ“œκ°€ μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.
μ‚¬λ‚΄μ—μ„œλŠ” web만 치면 μžλ™μœΌλ‘œ web.mycompany.com을 λΆ™μ—¬ μ°Ύκ³  μ‹Άλ‹€λ©΄ /etc/resolv.conf에 search 도메인을 μ„€μ •ν•œλ‹€. (μ—¬λŸ¬ κ°œλ„ κ°€λŠ₯)
search mycompany.com
Plain Text
볡사
이제 ping web을 μ‹€ν–‰ν•˜λ©΄ μ‹€μ œλ‘œ web.mycompany.com으둜 μ‹œλ„ν•œλ‹€.

Record Types

β€’
A λ ˆμ½”λ“œ: IPv4 hostname
β€’
AAAA λ ˆμ½”λ“œ: IPv6 hostname
β€’
CNAME λ ˆμ½”λ“œ: name name (별칭)
β—¦
같은 μ„œλΉ„μŠ€λ₯Ό eat, hungry 같은 λ‹€λ₯Έ μ΄λ¦„μœΌλ‘œλ„ λΆ€λ₯΄κ²Œ ν•˜λŠ” λŠλ‚Œ

Β μ°Έκ³ 

ping은 name resolution ν…ŒμŠ€νŠΈλ‘œ μ“°μ΄μ§€λ§Œ 항상 μ΅œμ μ€ μ•„λ‹ˆλ‹€. DNS μ„œλ²„μ— 직접 μ§ˆμ˜ν•˜λ €λ©΄:
β€’
nslookup
β—¦
DNS μ„œλ²„μ— 질의
β—¦
둜컬 /etc/hosts μ—”νŠΈλ¦¬λŠ” κ³ λ €ν•˜μ§€ μ•ŠμŒ
즉, /etc/hostsμ—λ§Œ μžˆλŠ” 이름은 nslookupμ—μ„œ μ•ˆ λ‚˜μ˜¬ 수 μžˆλ‹€.
β€’
dig
β—¦
DNS 질의 도ꡬ
β—¦
μ„œλ²„μ— μ €μž₯된 ν˜•νƒœμ— κ°€κΉŒμš΄ 더 μƒμ„Έν•œ κ²°κ³Όλ₯Ό 제곡
λ‹€μŒ κ²Œμ‹œλ¬Ό