DNS

2026. 5. 24. 23:50·시스템, 인프라

우리는 흔히 네이버나 유튜브를 들어가고 싶을때 www.naver.com 이나 www.youtube.com 을 검색하여 들어가곤 한다

처음부터 이래왔고, 당연하게 내가 검색한 사이트들이 나와서 아무 의문을 가지지 않았을 수 있다
이번 기회에 의문을 가지고 한 번 살펴보자

이러한 주소들은 어떻게 사이트들을 띄워주는걸까?

그 비밀은 바로 DNS 라는 개념에 있다

DNS (Domain Name System)

DNS 는 Domain Name System 의 약자로 사람이 사용하는 도메인 이름을
컴퓨터가 사용하는 IP 주소로 변환하는 시스템인 Domain 과 IP 주소를 매핑하는 역할을 한다

 

 

IP 주소는 언제든지 변할 수 있다

 

이렇게 되면 주소가 변경이 되었을 때, 어떤 주소로 변경되었는지 모르면 찾아갈 수 없다

 

그리고 IPv4 기준 12자리, IPv6 기준 32자리를 사이트별로 외울 수도 없을 것이다

 

 

 

이러한 문제를 DNS가 해결해줄 수 있다

 

하나의 서버에서 도메인들을 관리하는 것이 아닌 계층 구조 와 분산 시스템 으로 도메인 들을 관리한다

DNS 구조

보통의 도메인들은 www.example.com. 의 구조를 가진다
-> 생략된 . 을 추가했다

 

  • . : root -> 보통은 생략. 뒤에 더 붙일 도메인이 없다는 것을 표현. DNS 서버는 아니고 Root Zone 이라고 봄
    -> Root Zone을 관리하는 Root DNS Server 가 있음
    -> Root Zone 은 IP를 갖고 있지 않음. - com.은 이쪽 네임서버로, net. 은 저쪽 네임서버로 안내

 

  • com : TLD -> Top-Level Domain - 이것도 하나의 Zone
    -> Root 에서 전달받고 TLD 에서 다음으로 안내 -> example.com. 네임서버로 가!

 

  • example : 도메인 -> 보통 우리가 말하는 도메인이 이 부분이다 (나는 herjebi 라는 도메인을 갖고 있다)

 

  • www : 호스트명 -> 서브도메인이라고 보면 됨. herjebi.com 이라는 도메인의 하위에 속하는 것

 

구조는 이 정도만 알아보자

사실 나도 잘 모른다

 

DNS 레코드

 

DNS 서버가 패킷을 받았을 때, 어떤 정보를 줄 것인지를 적어놓은 데이터이다.
아래에서 설명하겠지만 특정 도메인이 어떤 IP 주소를 가리키는지, 메일 서버는 어디인지, 다른 도메인을 가리키는지 등을 레코드 형태로 저장한다

 

그럼 어떤 레코드 들이 있는지 간단하게 살펴보고 가자

 

 

A 레코드

제일 간단하고 많이 쓰이는 레코드가 아닐까 싶다

 

도메인을 IPv4 주소로 연결하는 레코드이다
www.example.com       A      1.234.12.34

 

위의 형식처럼 A 라고 쓰여 있으면 IP와 연결되어 있을 것이다

 

AAAA 레코드

A가 IPv4라면 AAAA 레코드 는 IPv6 이다

 

www.example.com          AAAA         2606:2800:220:1:248:1893:25c8:1946

 

 

 

CNAME 레코드

CNAME 레코드는 별명 레코드라고 생각하면 쉽다

 

blog.example.com    CNAME    tistory.example.com

 

진짜 주소가 아닌 다른 도메인으로 연결된다

이 글에서 살펴볼 유명한   www.naver.com  도메인에서도 이 레코드가 사용된다

 

tistory.example.com 으로 가서 다시 A 레코드 를 질의해서 IP 를 얻는 구조이다

 

 

 

MX 레코드

메일 서버를 지정하는 레코드
example.com      MX     10     mail.example.com

 

@example.com 으로 오는 메일은 mail.example.com 서버가 받게 된다

 

중간에 써있는 숫자는 우선순위를 나타내고, 낮을수록 우선순위가 높다고 한다

 

 

 

TXT 레코드

텍스트 정보를 넣는 레코드

 

  • 도메인의 소유권을 검증
  • SPF 메일 발신 서버 검증
  • DKIM 메일 서명
  • DMARC 메일 정책

위와 같은 역할에 사용된다고 한다

아래 3개는 잘 모르겠다...

 

나도 Cloudflare 에서 산 도메인에서 TXT 레코드를 사용하고 있다

 

도메인 검증에 사용했던 기억이 있다

 

SSL 인증을 받을 때에도 도메인의 TXT 레코드에 발급 받은 값을 넣어 검증을 받곤 한다


 

 

개념은 이 정도로만 알아보고 실제 질의 과정을 살펴보자

 

존이라는 개념도 있긴 하지만, 실제로 눈으로 보는게 더 재미있고 이해가 잘 될 것이다

 

질의 과정은 Oracle Cloud에서 생성한 Rocky Linux 9.7 에서 진행한다

 

 

 

 

 

1. 내 PC/서버가 사용하는 DNS 서버 확인하기

cat /etc/resolv.conf

 

/etc/resolv.conf 파일에서 현재 사용하고 있는 네임서버를 확인할 수 있다

 

 

출력 결과를  살펴보자

 

Generated by NetworkManager 는 직접 작성한 것이 아니라 NetworkManager 에 의해 자동으로 생성되었다는 것을 의미한다

쓰고 보니 해석 그대로군

 

현재 환경에서는 NetworkManager 가 파일을 자동 생성하고 있는 것 같다

 

그 아래에 있는 search vcn04072301.oraclevcn.com 은 검색 도메인이라고 한다

Oracle Cloud VCN 내부에서 같은 네트워크 안의 호스트명을 찾기 위한 설정이라고 한다

아마 사설망 같은 내부망 통신이나 같은 서브넷 내에 있는 도메인을 찾을 때 사용하지 않을까 싶다

실제 서버 설치에서는 직접 설정해준 경험밖에 없어서 처음보는 항목이다

 

제일 아랫줄이 메인이라고 볼 수 있다

nameserver 169.254.169.254

내 서버가 질의를 보낼 DNS 서버를 의미한다

 

내가 도메인으로 질의를 하면 기본적으로 저 부분에 적혀있는 서버에 물어본다

하지만 처음보는 DNS IP 라서 어떤건지 찾아보니, Oracle Cloud VCN 에서 제공하는 내부 DNS Resolver 라고 한다

 

 

 

 

2. 기본 DNS 조회하기

sudo dnf install -y bind-utils

dig 설치

dig www.naver.com

; <<>> DiG 9.16.23-RH <<>> www.naver.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28642
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1372
;; QUESTION SECTION:
;www.naver.com.                 IN      A

;; ANSWER SECTION:
www.naver.com.          13496   IN      CNAME   www.naver.com.nheos.com.
www.naver.com.nheos.com. 60     IN      A       223.130.200.219
www.naver.com.nheos.com. 60     IN      A       223.130.200.236
www.naver.com.nheos.com. 60     IN      A       223.130.192.247
www.naver.com.nheos.com. 60     IN      A       223.130.192.248

;; Query time: 7 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Fri May 15 11:37:11 UTC 2026
;; MSG SIZE  rcvd: 140

 

  • www.naver.com  은 IP 를 가지지 않고, CNAME 레코드를 통해 IP를 가진 다른 서버로 안내해줌
  • 우리나라 최대의 검색 포털 사이트면서 다양한 서비스들을 운영하고 있기 때문에, 단일 DNS 서버로 운영되지 않고, 트래픽 분산이나 CDN, 인프라 관리를 이해 사용되는 방식
  • www.naver.com  -> www.naver.com.nheos.com  으로 CNAME 레코드를 통해 전달 ->  www.naver.com.nheos.com  이 가진 실제 IP 주소로 연결 된다

 

 

도메인 다음에 있는 숫자는 무엇일까? 

60에서 59로 다시 58로 줄어들는 것을 볼 수 있다

 

 

 

 

 

3. DNS 질의 과정

 

dig +trace www.naver.com

# 1.

; <<>> DiG 9.16.23-RH <<>> +trace www.naver.com
;; global options: +cmd
.                       518400  IN      NS      j.root-servers.net.
.                       518400  IN      NS      k.root-servers.net.
.                       518400  IN      NS      l.root-servers.net.
.                       518400  IN      NS      m.root-servers.net.
.                       518400  IN      NS      a.root-servers.net.
.                       518400  IN      NS      b.root-servers.net.
.                       518400  IN      NS      c.root-servers.net.
.                       518400  IN      NS      d.root-servers.net.
.                       518400  IN      NS      e.root-servers.net.
.                       518400  IN      NS      f.root-servers.net.
.                       518400  IN      NS      g.root-servers.net.
.                       518400  IN      NS      h.root-servers.net.
.                       518400  IN      NS      i.root-servers.net.
;; Received 239 bytes from 169.254.169.254#53(169.254.169.254) in 1 ms


# 2.

com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    86400   IN      DS      19718 13 2 8ACBB0CD28F41250A80A491389424D341522D946B0DA0C0291F2D3D7 71D7805A
com.                    86400   IN      RRSIG   DS 8 1 86400 20260604050000 20260522040000 54393 . uTD0dt8/2yQCAZlXXt1aT8Kwc/gb9NHnmOZCrQUVPpV7ZTVoIA3mDXB6 QPm30hha0yrWtYvLSnQFrWQCS8tnqij1mLJ/4d+nfqJrN+56k0ch2F/+ +BwzO3D7dt92+fEyezMI87gy55KKzfEVeY0cxU2teriEYjRLWKrijE/g phEj/LQoX7qfHTlhugTuUBakC8iPSNf16xi1/Z6K10OYjaCHmKrwaXy8 pKpSXhP7KX0BrKlyP4+Ez0wxgXG0lEPm7Q/kNByB7CvmjhULEYkSz9tf sJ/RD5q3GG0IQ1iuS3lJ0Wz1FDhJYLq2aLL0xXuYUe0xmXs+2adGAuq8 fyjbHw==
;; Received 1173 bytes from 198.97.190.53#53(h.root-servers.net) in 134 ms


# 3.

naver.com.              172800  IN      NS      ns2.naver.com.
naver.com.              172800  IN      NS      ns1.naver.com.
naver.com.              172800  IN      NS      ns3.naver.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 900 IN NSEC3 1 1 0 - CK0Q3UDG8CEKKAE7RUKPGCT1DVSSH8LL NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 900 IN RRSIG NSEC3 13 2 900 20260526002618 20260518231618 27677 com. zpKSvAazoiLu7qOLyDTAIBqDVZurHv8gYYZ/CtgZvy38qk/0wMUQDC0n MevSkVg8p21Jz+30D2shm1qvKrhB5g==
6P7FD8SGD365VHS64T9JP8JJUE923LQU.com. 900 IN NSEC3 1 1 0 - 6P7FK9H7FKOBH1QD5SBOQG73NLG5953V NS DS RRSIG
6P7FD8SGD365VHS64T9JP8JJUE923LQU.com. 900 IN RRSIG NSEC3 13 2 900 20260528005755 20260520234755 27677 com. pMQVxDzseab+SSISBxQs46TGguerhcASybRocz8YfOh6SXMaL/gQa89g yGs77iIJC1KjHBIrd4F3C8f3TxFV6w==
;; Received 501 bytes from 192.55.83.30#53(m.gtld-servers.net) in 37 ms

www.naver.com.          21600   IN      CNAME   www.naver.com.nheos.com.
;; Received 79 bytes from 211.188.44.6#53(ns3.naver.com) in 5 ms

 

 

dig +trace www.naver.com  명령어를 통해 질의 과정을 따라갈 수 있다

구역을 나눠서 살펴보자

 

  1. 번 구역 : 나의 DNS 리졸버 가 루트 DNS 목록을 알려줌
    1. 맨 앞에 있는 . 은 루트 존 을 의미한다 -> 위에서 말한 가장 위 단계를 말한다
    2. /etc/resolv.conf 파일에서 확인한 169.254.169.254 에 질의한 것을 볼 수 있다
    3. 설정해놓은 DNS 서버에 질문을 하는 것이다 
    4. 그에 대한 응답은 
  2. 번 구역 : 이번엔 루트에서 나온 것 중 하나인 h.root-servers.net 에 질의
    1. 루트 DNS 를 모르고, 다음 도메인 서버를 알려줌
    2. DN 이나 RRSIG 는 검증용 정보라고 함
  3. 번 구역 : .com DNS 가 naver.com 담당 DNS 찾음
    1. m.gtld-servers.net  에 물어본 것을 확인
  4. 마지막으로 네이버 권한 DNS 가 CNAME 알려줌
  5. 나온 CNAME을 통해 IP 찾음

이런 과정을 통해 진행된다

 

 

갑자기 다른게 공부하고 싶어져서 이 정도로 마치겠다.

 

 

 

'시스템, 인프라' 카테고리의 다른 글

IP (Internet Protocol)  (0) 2026.06.14
fstab  (1) 2026.06.03
RAID  (2) 2026.05.31
SSL/TLS  (2) 2026.05.11
서버 디스크 추가  (1) 2026.05.02
'시스템, 인프라' 카테고리의 다른 글
  • fstab
  • RAID
  • SSL/TLS
  • 서버 디스크 추가
나는 허준기
나는 허준기
  • 나는 허준기
    공부
    나는 허준기
  • 전체
    오늘
    어제
    • 분류 전체보기 (16)
      • 자바 공부 (2)
      • 알고리즘 공부 (1)
      • 일기 (0)
      • Git (2)
      • 클라우드 (3)
      • 시스템, 인프라 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    힙정렬
    최대힙
    클라우드
    inode
    IP
    terraform
    네이버클라우드
    SSL
    IaC
    DNS
    Naver Cloud
    TLS
    RAID
    apache
    fstab
    로드밸런싱
    NCP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
나는 허준기
DNS
상단으로

티스토리툴바