DNS 란?

Domain Name System
도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다. -wikipedia


  • 도메인 네임을 IP주소로 변환
  • DNS를 운영하는 서버: Name server (nslookup에 그 ns다)
  • 포트번호 53
  • DNS 총 관리는 ICANN(Internet Corporation for Assigned Names and Numbers)국제인터넷주소관리기구 에서 한다

DNS 구조

  • 역트리 구조로 최상위 루트 부터 top-level 도메인, second-level 도메인, third-level 도메인과 같이 하위 레벨로 원하는 주소를 단계적으로 검색
  • 각 계층의 경계는 "."으로 표시하고 뒤에서 앞으로 해석
  • thrid.second.top. 과 같은 형태로 표현하고 맨 뒤의 루트(.)는 생략

DNS 계층

  • 도메인 계층은 최대 128계층까지 구성할 수 있다
    예) www.aaa.bb.ccc...... x계층.com

  • 계층별 길이는 최대 63byte까지 사용할 수 있으며, 도메인 계층 구분자(".")를 포함해 전체 도메인 네임의 길이는 최대 255byte까지 사용할 수 있다

  • 문자는 알파벳, 숫자, "-" 만 사용할 수 있으며, 대소문자를 구분하지 않다


루트 도메인

  • 도메인을 구성하는 최상위 영역
  • DNS 서버는 사용자가 쿼리한 도메인에 값을 직접 갖고 있거나 캐시에 저장된 정보를 이용해 응답
  • DNS 서버에 해당 도메인의 정보가 없으면 루트 도메인을 관리하는 루트 DNS에 쿼리
  • 루트 DNS는 전 세계에 13개가 있고 DNS 서버를 설치하면 루트 DNS의 IP 주소를 기록한 힌트(hint) 파일을 가지고 있어 루트 DNS 관련 정보를 별도로 설정할 필요가 없다


TLD(Top-Level Domain)

IANA(Internet Assigned Numbers Authority)에서 6가지 유형으로 구분

  • generic (gTLD)

    • 특별한 제한 없이 일반적으로 사용되는 최상위 도메인으로 세 글자 이상으로 구성
    • 1980년대 7개의 gTLD로 시작 ⇒ .com, .edu, .gov, .int, .mil, .net, .org
  • 필요에 의해 새로운 gTLD가 지속적으로 만들어지고 있다

    • com 일반 기업체
    • edu 4년제 이상 교육 기관
    • gov 미국 연방 정보 기관
    • int 국제 기구, 기관
    • mil 미국 연방 군사 기관
    • net 네트워크 관리 기관
    • org 비영리기관
  • country-code (ccTLD)

    • 일반적으로 ccTLD를 사용하는 경우, Second Level TLD에는 gTDL에서 구분한 것 처럼 사이트 용도에 따른 코드를 사용 ( 예: co.kr, go.kr )
    • 우리나라는 gTLD를 두 글자로 줄여 사용하는데, 호주나 대만 등은 gTDL를 그대로 사용하는 나라도 있음 ( 예: com.au, gov.au, com.tw, gov.tw 등)
  • sponsored (sTLD)

    • 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인
    • 스폰서는 특정 민족공동체, 전문자 집단, 지리적 위치 등이 속할 수 있다
    • .aero, asia, .edu, .museum 등
  • infrastructure

    • 운용상 중요한 인프라 식별자 공간을 지원하기 위해 전용으로 사용되는 최상위 도메인
    • .arpa
    • 이는 권한, 자율성 및 책임 위임을 위한 계층적 명명 시스템을 준비하기 위해 네트워크에 대해 정의된 최초의 도메인
    • 원래는 ARPANET 컴퓨터의 체계적인 이름 지정을 용이하게 하기 위한 임시 기능으로만 제공되도록 의도되었다
    • 그러나 인프라 사용이 허가된 이후에는 도메인을 제거하는 것이 현실적으로 어려워졌다
  • generic-restricted (grTLD)

    • 특정 기준을 충족하는 사람이나 단체가 사용할 수 있는 최상위 도메인
    • .biz, .name, .pro
  • test (tTLD)

    • IDN(Internationalized Domain Name) 개발 프로세스에서 테스트 목적으로 사용하는 최상위 도메인
    • .test

DNS 캐시

c:\Users\crpark> ipconfig /flushdns			// DNS 캐시 테이블을 삭제
c:\Users\crpark> ipconfig /displaydns		// DNS 캐시 테이블을 조회
Windows IP Configuration				// DNS 캐시가 모두 지워지고 없는 상태

C:\Users\User> curl https://www.google.com		// DNS 쿼리 결과를 캐시에 반영 
C:\Users\User> ipconfig /displaydns

Windows IP Configuration

    www.google.com					// 도메인 주소에 대한 IP 정보가 출력되는 것을 확인할 수 있음 
    ----------------------------------------
    Record Name . . . . . : www.google.com
    Record Type . . . . . : 1
    Time To Live  . . . . : 3
    Data Length . . . . . : 4
    Section . . . . . . . : Answer
    A (Host) Record . . . : 142.250.206.228

Kali dig (Domain Information Groper) 명령어로 도메인 정보 조회

──(kali㉿kali)-[/]
└─$ dig www.google.com

; <<>> DiG 9.19.17-2~kali1-Kali <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65007
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 1232
; COOKIE: 53984bdfc19841cb01000000660d88b621f3ab6fd128159a (good)
;; QUESTION SECTION:			// 질의 내용  www.google.com 도메인 이름으로 A 유형의 레코드를 질의

;www.google.com.                        IN      A

;; ANSWER SECTION:			   // 질의 결과 
www.google.com.         5       IN      A       142.250.206.196

;; Query time: 3 msec
;; SERVER: 192.168.126.2#53(192.168.126.2) (UDP)
;; WHEN: Wed Apr 03 12:49:58 EDT 2024
;; MSG SIZE  rcvd: 87
──(kali㉿kali)-[/]
└─$ dig www.google.com SOA     

; <<>> DiG 9.19.17-2~kali1-Kali <<>> www.google.com SOA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12421
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 1232
; COOKIE: d0f3df486b8c9b8301000000660d89e81cb53c890975e095 (good)
;; QUESTION SECTION:
;www.google.com.                        IN      SOA

;; AUTHORITY SECTION:
google.com.             5       IN      SOA     ns1.google.com. dns-admin.google.com. 621114726 900 900 1800 60

;; Query time: 40 msec
;; SERVER: 192.168.126.2#53(192.168.126.2) (UDP)
;; WHEN: Wed Apr 03 12:55:04 EDT 2024
;; MSG SIZE  rcvd: 121

ns1.google.com				Primary Name Server
dns-admin.google.com		관리자 이메일 주소  dns-admin.google.com 의미
621114726					시리얼 번호
900							Refresh 값 : 3시간 주기로 Secondary DNS가 Zone Transfer를 수행
900							Secondary DNS가 응답을 받지 못 하면 1시간 후 재시도 
1800						Expire 값  : 7일 동안 Secondary DNS가 응답을 받지 못 하면 더 이상 해당 Zone 파일을 
							Secondary DNS에서 사용하지 않음
60							SOA 레코드 TTL(Time To Live) 값 : DNS Resolver에서 캐시되는 시간 (180초)

DNS 동작 방식: 재귀적 쿼리(Recursive Query) + 반복적 쿼리(Iterative Query)

  • 재귀적 쿼리는 쿼리를 보낸 클라이언트에 서버가 최종 결과값을 반환하는 서버 중심 쿼리
  • 반복적 쿼리는 최종값을 받을 때까지 클라이언트에서 쿼리를 계속 진행하는 방식
  • 재귀적 쿼리는 클라이언트와 로컬 DNS 간에서 사용
  • 반복적 쿼리는 로컬 DNS 서버와 상위 DNS 구간에서 사용

www.zigispace.net 을 호출했을 때


DNS 영역 파일(zone file) 주요 레코드

  • A IPv4 호스트 도메인 주소를 IP 주소(IPv4)로 매핑
  • AAAA IPv6 호스트 도메인 주소를 IP 주소(IPv6)로 매핑
  • CNAME 별칭 도메인 주소에 대한 별칭
  • SOA 권한 시작 본 영역 데이터에 대한 권한
  • NS 도메인 네임 서버 본 영역에 대한 네임 서버
  • MX 메일 교환기 도메인에 대한 메일 서버 정보
  • PTR 포인터 IP 주소를 도메인에 매핑(역방향)
  • TXT 레코드 도메인에 대한 일반 텍스트

profile
https://github.com/John-Jung

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN