Computer Science/Network

DNS record μ’…λ₯˜μ™€ SOA λ ˆμ½”λ“œ 톺아보기

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2025. 4. 28.

πŸš©κ°œμš”

νšŒμ‚¬μ—μ„œ 맀일 μ½”μ–΄ ν”„λ ˆμž„μ›Œν¬ ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€λ₯Ό νšŒκ·€ ν…ŒμŠ€νŠΈ μ§„ν–‰μ€‘μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ·Όλž˜μ— SOA λ ˆμ½”λ“œ ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€κ°€ 맀번 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.
μ΄μœ λŠ” DNS μ˜ SOA λ ˆμ½”λ“œμ—μ„œ μ‹œλ¦¬μ–Ό λ„˜λ²„κ°€ κ³„속 λ‹¬λΌμ„œμ˜€μŠ΅λ‹ˆλ‹€.

 

const arry = [
    "0.0.0.0", "1.1.1.1", "2.2.2.2", "3.3.3.3"
]

const dns = new $Dns_Client(arry, 3000);
const records = dns.getSoaRecord("dns test url");

for (const record of records) {
    Assert.equal(record.masterName, "ns1.xxx.net.");
    Assert.equal(record.responsibleName, "hostmaster.xxxx.net.");
    Assert.equal(record.serialNumber, 2024112113); // μ‹€νŒ¨ λ°œμƒ
    Assert.equal(record.expireInterval, 86400);
    Assert.equal(record.negativeCachingTTL, 300);
    console.log(record.toString());
}

export { }

 

SOA λ ˆμ½”λ“œκ°€ μ™œ λ‹¬λΌμ‘ŒλŠ”μ§€μ™€, DNS λ ˆμ½”λ“œλ“€μ΄ 무엇인지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

 

🌐 λ¨Όμ € DNSλž€?

DNS λž€ Domain Name System 의 μ•½μžμž…λ‹ˆλ‹€.
μ‚¬λžŒμ—κ²Œ μΉœμˆ™ν•œ 도메인 이름(예: `example.com`)을 컴퓨터가 이해할 수 μžˆλŠ” IP μ£Όμ†Œ(예: `223.130.200.107`)둜 λ°”κΏ”μ£ΌλŠ” μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.


μ˜ˆμ‹œλ₯Ό ν•˜λ‚˜ λ“€κ² μŠ΅λ‹ˆλ‹€. λΈŒλΌμš°μ € μ£Όμ†Œμ°½μ— μ•„λž˜μ™€ 같이 μž…λ ₯ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

testdomain.co.kr


ν•˜μ§€λ§Œ μ»΄ν“¨ν„°λŠ” μ΄λ ‡κ²Œ μƒκ°ν•©λ‹ˆλ‹€. 
"μ ‘μ†ν•˜λ €λ©΄ IP μ£Όμ†Œκ°€ ν•„μš”ν•΄! " testdomain.co.kr "은 숫자 λͺ‡ λ²ˆμ΄μ•Ό?"

➑️ μ΄λ•Œ DNSκ°€ μ΄λ¦„을 IP μ£Όμ†Œλ‘œ λ°”κΏ”μ€λ‹ˆλ‹€.
   -  예λ₯Ό λ“€μ–΄ testdomain.co.kr → 172.130.200.107

λ™μž‘ 흐름 μš”μ•½

1. λΈŒλΌμš°μ €κ°€ 도메인을 μž…λ ₯λ°›μŒ ( " testdomain.co.kr "
2. μš΄μ˜μ²΄μ œκ°€ DNS μ„œλ²„에 μ§ˆλ¬Έν•¨.
3. DNS μ„œλ²„κ°€ IP μ£Όμ†Œλ₯Ό μ‘λ‹΅ν•΄μ€Œ
4. λΈŒλΌμš°μ €κ°€ ν•΄λ‹Ή IP둜 μ ‘속


πŸͺ§DNS μ„œλΉ„μŠ€

DNS λ ˆμ½”λ“œλ₯Ό μ‘°μž‘ν•  수 μžˆλŠ” μ„œλΉ„μŠ€λŠ” μ—¬λŸ¬κ°€μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. 저도 "AWS Route53" μ„œλΉ„μŠ€ 와 "κ°€λΉ„μ•„" λ₯Ό μ΄μš©ν•΄μ„œ λ„λ©”μΈμ˜ λ ˆμ½”λ“œλ₯Ό μ„€μ •ν•΄λ³Έ 적이 μžˆμŠ΅λ‹ˆλ‹€. Aλ ˆμ½”λ“œμ™€ AAAA λ ˆμ½”λ“œ, CNAME λ ˆμ½”λ“œλŠ” 등둝해 본적이 μžˆμ–΄λ„, NS 및 SOA λ ˆμ½”λ“œλŠ” κΈ°λ³Έκ°’μœΌλ‘œ μ‚¬μš©ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μžμ„Έν•˜κ²Œ μ•Œμ•„λ³΄μ§€ λͺ»ν•œ SOA λ ˆμ½”λ“œ 및 λ‹€λ₯Έ λ ˆμ½”λ“œλ“€μ„ μ’€ 더 μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€.

λ¨Όμ € 저희 νšŒμ‚¬μ˜ DNS λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

사내 DNS

저희 νšŒμ‚¬μ—μ„  μ•žμ„  νšŒμ‚¬ μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜κ³  μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έ μ΄μœ λŠ” μ•„λ§ˆλ„ λΉ„μš© 문제겠죠? μš°λ¦¬κ°€ 직접 ꡬ좕할 수 μžˆλŠ”λ°, ꡳ이 유료 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  ν•„μš”κ°€ μ—†μœΌλ‹ˆκΉμš”.

이와 κ΄€λ ¨ν•΄μ„œλŠ” SA νŒ€μ˜ μ±…μž„λ‹˜κ»˜ μ—¬μ­€λ΄€μŠ΅λ‹ˆλ‹€.

Q. 저희 νšŒμ‚¬μ—μ„œλŠ” DNS μ„œλΉ„μŠ€λ‘œλŠ” μ–΄λ”œκΊΌ μ‚¬μš©ν•˜κ³  μžˆλ‚˜μš”?
A. μ €ν¬λŠ” DNS μ„œλ²„λ₯Ό λ”°λ‘œ κ΅¬μΆ•ν•΄μ„œ μ“°κ³ μžˆμŠ΅λ‹ˆλ‹€. μ€‘κ΅­λ§Œ μ—…체 ν†΅ν•΄μ„œ μ‚¬μš©ν•˜κ³ μžˆκ΅¬μš”. 

Q. κ·ΈλŸΌ κ΅¬μž…ν•œ λ„메인을 DNSμ„œλ²„μ—μ„œ BIND κ°™μ€ μ˜€ν”ˆ μ†ŒμŠ€λ₯Ό μ„€μΉ˜ν•΄μ„œ μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜λŠ” κ±΄κ°€μš”?
A. λ„€, λ§žμŠ΅λ‹ˆλ‹€!

πŸ’‘ BINDλž€?
Berkeley Internet Name Domain

κ°€μž₯ λ„λ¦¬ μ‚¬μš©λ˜λŠ” DNS μ„œλ²„ μ†Œν”„νŠΈμ›¨μ–΄μž…λ‹ˆλ‹€.
λ¦¬λˆ…μŠ€μ—μ„œ 자체 DNS μ„œλ²„λ₯Ό ꡬ좕할 λ•Œ ν‘œμ€€μ²˜λŸΌ μ‚¬μš©λ©λ‹ˆλ‹€.
 

βœ…DNS λ ˆμ½”λ“œλž€?

도메인 μ΄λ¦„(Domain Name)κ³Ό κ΄€λ ¨λœ μ •보λ₯Ό μ •μ˜ν•œ λ°μ΄ν„° μ‘°κ°μž…λ‹ˆλ‹€. DNS μ„œλ²„에 μ €μž₯λ˜μ–΄ μžˆλŠ” λ„메인에 λŒ€ν•œ μ„€μ • μ •보 ν•œ μ€„이라고 μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
 
 

DNS λ ˆμ½”λ“œ μ’…λ₯˜

λ ˆμ½”λ“œ
μ„€λͺ…
μ˜ˆμ‹œ
A (Address) 도메인 → IPv4 μ£Όμ†Œ λ§€ν•‘ example.com → 192.0.2.1
AAAA 도메인 → IPv6 μ£Όμ†Œ λ§€ν•‘ example.com → 2001:db8::1
CNAME (Canonical Name) 도메인 별칭 μ„€μ • (λ¦¬λ””λ ‰μ…˜μ²˜λŸΌ) www.example.com → example.com
MX (Mail Exchange) 메일 μ„œλ²„ μ„€μ • example.com → mail.example.com (μš°μ„ μˆœμœ„ 10)
TXT ν…μŠ€νŠΈ 정보 μ €μž₯ (SPF, DKIM λ“± 인증용) v=spf1 include:_spf.google.com ~all
NS ν•΄λ‹Ή 도메인을 κ΄€λ¦¬ν•˜λŠ” λ„€μž„μ„œλ²„ μ§€μ • example.com → ns1.dns.com
SOA 도메인 κΆŒν•œ 정보와 κΈ°λ³Έ μ„€μ • 도메인 κ΄€λ¦¬μž, μ‹œλ¦¬μ–Ό 번호 λ“±  
PTR IP μ£Όμ†Œ → 도메인 (μ—­λ°©ν–₯ 쑰회) 192.0.2.1 → example.com
SRV νŠΉμ • μ„œλΉ„μŠ€μš© μ„œλ²„ μœ„μΉ˜ 정보 _sip._tcp.example.com → sipserver.example.com

 

SOA λ ˆμ½”λ“œ

SOA (Start of Authority) λ ˆμ½”λ“œλŠ” DNS μ‘΄(zone)의 μ΅œμƒμœ„ 정보λ₯Ό λ‹΄κ³  μžˆλŠ” ν•„μˆ˜ λ ˆμ½”λ“œμž…λ‹ˆλ‹€.
-  이 도메인에 λŒ€ν•΄ κΆŒν•œμ„ κ°€μ§„ λ„€μž„μ„œλ²„(NS)κ°€ λˆ„κ΅¬μΈμ§€
-  μ‘΄ λ°μ΄ν„°μ˜ λ³€κ²½ μ‹œμ , μ „νŒŒ μ£ΌκΈ°, 유효 μ‹œκ°„ 등을 μ •μ˜ν•©λ‹ˆλ‹€.

@ IN SOA ns1.example.com. admin.example.com. (
    2025041101 ; Serial (버전)
    3600       ; Refresh (μŠ¬λ ˆμ΄λΈŒκ°€ λ§ˆμŠ€ν„°μ—κ²Œ λ³€κ²½ μ—¬λΆ€ 확인 μ£ΌκΈ°)
    1800       ; Retry (μ‹€νŒ¨ν–ˆμ„ 경우 μž¬μ‹œλ„ μ£ΌκΈ°)
    604800     ; Expire (λ§ˆμŠ€ν„°μ™€ 톡신 λΆˆκ°€ μ‹œ μŠ¬λ ˆμ΄λΈŒκ°€ 데이터 νκΈ°κΉŒμ§€ λŒ€κΈ° μ‹œκ°„)
    86400      ; Minimum TTL (κΈ°λ³Έ μΊμ‹œ 유효 μ‹œκ°„)
)


​

ν•­λͺ© μ„€λͺ…
MNAME / primary name 도메인에 λŒ€ν•œ κΈ°λ³Έ ν˜ΈμŠ€νŠΈλ„€μž„
RNAME / mail addr κ΄€λ¦¬μžμ˜ 이메일 μ£Όμ†Œ. 일반적인 이메일 ν˜•μ‹μΈ @κ°€ μ•„λ‹ˆλΌ λ§ˆμΉ¨ν‘œκ°€ λ“€μ–΄μžˆμŒ.
serial λ„λ©”μΈμ˜ κ°±μ‹  버전 번호. 일반적으둜 λ‚ μ§œ(YYYYMMDD) ν˜•μ‹.
refresh 도메인 μ˜μ—­μ˜ 데이터 κ°±μ‹  μ—¬λΆ€λ₯Ό μ²΄ν¬ν•˜λŠ” μ£ΌκΈ° (초 λ‹¨μœ„)
retry μž₯μ•  λ“±μ˜ 이유둜 refresh 주기둜 μ²΄ν¬ν•˜μ§€ λͺ»ν–ˆμ„ 경우, 체크λ₯Ό μž¬μ‹œλ„ν•˜λŠ” μ£ΌκΈ°(초 λ‹¨μœ„)
expire retry 주기둜 체크λ₯Ό μˆ˜μ°¨λ‘€ λ°˜λ³΅ν•˜λ‹€κ°€, 도메인을 더 이상 μ‹ λ’°ν•  수 μ—†λŠ” μ˜μ—­μ΄λΌκ³  κ°„μ£Όν•΄ μ„œλΉ„μŠ€λ₯Ό μ€‘λ‹¨ν•˜λŠ” μ΅œλŒ€ κΈ°ν•œ
minimum 도메인을 찾을 수 μ—†λŠ” 경우, λ„€μž„ μ„œλ²„κ°€ λ„λ©”μΈμ˜ λΆ€μž¬ 정보λ₯Ό μΊμ‹±ν•˜λŠ” μ‹œκ°„
 

 

 

 

마무리

ν˜„μž¬  사내에선 νŠΉμ • 쑴의 μ„œλ²„ μˆ˜μ • μž‘μ—…μ΄ μžˆμ–΄μ„œ, 맀번 μˆ˜μ •μ‹œμ— 버전 정보인 μ‹œλ¦¬μ–Ό λ„˜λ²„λ₯Ό μˆ˜μ •ν•΄μ£Όκ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 
일반적으둜 μˆ˜μ • λ‚ μ§œλ₯Ό 버전 μ •λ³΄λ‘œ κ°–μŠ΅λ‹ˆλ‹€.

μˆ˜μ •ν•˜μ—¬ λ°°ν¬ν• λ•Œ λ§ˆλ‹€ μ‹œλ¦¬μ–Ό λ„˜λ²„κ°€ λ°”λ€ŒκΈ° λ•Œλ¬Έμ— νšŒκ·€ ν…ŒμŠ€νŠΈμ‹œμ— ν™•μΈν•˜λ˜ μ‹œλ¦¬μ–Ό λ„˜λ²„λŠ” ꡬ λ„˜λ²„κ°€ λΌμ„œ 맀번 μ΄μŠˆκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.


μ‹œλ¦¬μ–Όλ„˜λ²„ 뢈일치 덕뢄에 SOA λ ˆμ½”λ“œμ— λŒ€ν•΄ ν•™μŠ΅ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

'Computer Science > Network' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

IPC νŒ¨ν„΄ (Sync 톡신 vs Async 톡신)  (0) 2024.10.26

λŒ“κΈ€