Overview
오늘은 DNS의 동작원리에 대해서 알아보려고 한다.
동작 원리
- 사용자가 브라우저로 웹 사이트에 접속(www.a.com)
- 사용자의 컴퓨터는 도메인 이름을 가지고 로컬 DNS 캐시를 확인 로컬 DNS 캐시에 해당 도메인 이름에 대한 IP 주소가 캐시되어 있다면바로 IP주소를 반환
- 로컬 DNS 캐시에 해당 도메인 이름에 대한 IP주소가 없다면 DNS 질의 시작
- 사용자는 먼저 루트 DNS 서버의 IP 주소를 알아내기 위해, 사용자의 컴퓨터에 미리 설정되어 있는 최상위 DNS 서버의 IP 주소를 참조하여 루트 DNS 서버의 IP 주소를 획득
- 사용자는 루트 DNS 서버에 질의를 보내어, 해당 도메인 이름을 관리하는 TLD(Top Level Domain) DNS 서버의 IP 주소를 얻습니다. (예: .com .org .net 등)
- 사용자는 TLD DNS 서버에 질의를 보내어, 해당 도메인 이름을 관리하는 Authoritative DNS 서버의 IP 주소를 획득
- 사용자는 Authoritative DNS 서버에 질의를 보내어, 해당 도메인 이름에 대한 IP 주소를 획득
- 획득한 IP 주소를 캐시에 저장하고, 이를 브라우저에 반환하여 해당 도메인 이름에 대한 웹 페이지를 표시
DNS란?
인터넷에서 사용되는 호스트 이름(도메인 이름)을 실제 IP 주소로 변환하는 시스템이다.
DNS 서버의 종류
Root DNS 서버
Root DNS 서버는 인터넷에서 가장 중요한 DNS 서버 중 하나이다. 이 서버는 전 세계적으로 분산되어 있으며, 인터넷 상의 모든 도메인 이름에 대한 최상위 DNS 서버로 인터넷 전체 DNS 시스템의 기초를 담당한다.
그리고 루트 도메인 이름을 관리한다. 루트 도메인 이름은 인터넷에서 사용되는 도메인 이름 중 최상위 도메인 이름이다. 루트 도메인 이름은 .(점)으로 표시되며, 예를 들어 보자면 `www.aaa.com`이라는 도메인 이름의 의 루트 도메인 이름은 `.com`이다.
Root DNS 서버는 TLD DNS 서버의 IP 주소를 알고 있다. 따라서 사용자가 `www.aaa.com`이라는 도메인 이름으로 쿼리를 수행할 때, 먼저 Root DNS 서버에 해당 도메인 이름의 TLD DNS 서버가 어디에 있는지 물어본다. 그리고 Root DNS 서버는 TLD DNS 서버의 IP 주소를 반환하고, 이후 사용자의 DNS 쿼리는 해당 TLD DNS 서버로 전달된다.
즉, Root DNS 서버는 인터넷 상의 모든 DNS 서버에 대한 출발점이며, 인터넷 전체 DNS 시스템의 핵심 역할을 담당한다.
Root DNS 서버는 전 세계적으로 분산되어 있으며, ICANN(Internet Corporation for Assigned Names and Numbers)에서 관리된다.
TLD DNS 서버(Top-Level Domain)
TLD DNS 서버는 인터넷에서 사용되는 최상위 도메인 이름(Top-Level Domain)을 관리하는 DNS 서버이다.
`.com, .org, .edu` 등과 같이 최상위 도메인 이름에 대한 DNS 서버로, 각 도메인 이름의 DNS 쿼리를 처리한다.
TLD DNS 서버는 각 TLD 도메인 이름에 대한 IP 주소와 기타 DNS 레코드 정보를 관리한다.
예를 들어, `.com` 도메인 이름에 대한 TLD DNS 서버는 `.com` 도메인 이름에 대한 모든 DNS 쿼리를 처리합니다. 이러한 DNS 쿼리는 해당 도메인 이름에 대한 IP 주소를 찾는 것이 주된 목적이다.
TLD DNS 서버는 또한 ICANN(Internet Corporation for Assigned Names and Numbers)에 등록되어 있으며, 해당 TLD 도메인 이름을 사용하는 도메인 이름 등록 업체(Domain Name Registrar)와 협력하여 해당 도메인 이름에 대한 정보를 업데이트한다.
TLD DNS 서버는 Root DNS 서버로부터 요청된 DNS 쿼리를 받는다. Root DNS 서버는 TLD DNS 서버의 IP 주소를 알고 있으며, 이를 통해 사용자가 요청한 도메인 이름의 TLD DNS 서버를 찾아서 DNS 쿼리를 전달한다. TLD DNS 서버는 이후 해당 도메인 이름의 Second-Level DNS 서버를 찾아서 DNS 쿼리를 전달한다.
따라서, TLD DNS 서버는 인터넷 상의 모든 도메인 이름에 대한 DNS 쿼리 처리에서 중요한 역할을 담당한다. TLD DNS 서버는 전 세계적으로 분산되어 있으며, 도메인 이름 등록 업체와 ICANN에 의해 관리된다.
Second-Level DNS 서버(Authoritative DNS 서버)
Second-Level DNS는 DNS의 핵심 요소 중 하나로, 특정 도메인 이름에 대한 IP 주소 정보를 제공하는 DNS 서버이다.
일반적으로 도메인/호스팅 업체의 네임서버를 말한다.
또한 해당 도메인 이름에 대한 정보를 가지고 있는 최종적인 답변자 역할을 한다. 예를 들어 `aaa.com` 도메인 이름에 대한 IP 주소를 알고 있는 DNS 서버가 있다면 , 해당 DNS 서버는 Second-Level DNS 서버가 된다.
Recursive DNS 서버
DNS 쿼리를 수행하고, 필요한 경우 다른 DNS 서버에 쿼리를 보내서 최종적으로 요청된 도메인 이름에 대한 IP 주소를 찾아서 제공한다.
Caching DNS 서버
이전에 수행한 DNS 쿼리 결과를 캐시하고, 이후 동일한 쿼리에 대해서는 캐시된 결과를 반환합니다.
이를 통해 DNS 쿼리 성능을 향상시킬 수 있다.
# win10 DNS 캐쉬 초기화 방법 #
# cmd 창을 켠 뒤
ipconfig/flushdns
Forwarding DNS 서버
DNS 쿼리를 수행하고, 필요한 경우 다른 DNS 서버에 쿼리를 보내서 최종적으로 요청된 도메인 이름에 대한 IP 주소를 찾아서 반환한다. 이때, 다른 DNS 서버에서 반환된 결과를 캐시할 수 있다.
Secondary DNS 서버
Primary DNS 서버의 데이터를 복제하는 역할을 담당하여, Primary DNS 서버에 장애가 발생하더라도 서비스를 유지할 수 잇도록 한다.
DNS 레코드 종류
DNS record는 Domain Name System(DNS)에서 도메인 이름과 해당 도메인과 연결된 IP 주소를 매핑하는 데 사용되는 데이터 항목이다. DNS 레코드는 도메인 이름과 관련된 정보를 담고 있으며, DNS 쿼리를 수행하는 서버에 의해 사용된다.
DNS 레코드의 유형은 다양하다. 다음은 일반적인 DNS 레코드 유형의 몇 가지 예이다.
- A 레코드: 도메인 이름을 IP 주소로 매핑한다. 이 레코드는 도메인 이름을 IP 주소로 해석하는 데 사용된다..
- CNAME 레코드: 도메인 이름을 다른 도메인 이름으로 매핑한다.. 이 레코드는 도메인 이름을 다른 도메인 이름으로 변경하는 데 사용된다..
- MX 레코드: 도메인 이름과 연결된 메일 서버의 우선 순위를 지정한다. 이 레코드는 이메일을 전송할 때 도메인 이름과 연결된 메일 서버를 찾는 데 사용된다.
- NS 레코드: 도메인 이름에 대한 권한 DNS 서버를 식별한다. 이 레코드는 DNS 쿼리가 수행될 때 도메인 이름에 대한 권한 DNS 서버를 찾는 데 사용된다.
- TXT 레코드: 도메인 이름과 연결된 텍스트 정보를 포함된다. 이 레코드는 보안, 인증 등 다양한 목적으로 사용된다.
- SPF (Sender Policy Framework) 레코드: 이메일 스팸을 방지하기 위해 도메인 이름의 이메일 발송 권한을 확인하는 데 사용된다. SPF 레코드는 도메인 이름을 검색하여 이메일 발송 권한을 확인하고, 이를 통해 도메인 이름의 이메일 스팸을 방지한다.
- SRV (Service) 레코드: DNS 서버가 제공하는 특정 서비스의 위치를 식별하는 데 사용된다. 이 레코드는 웹 서비스, VoIP, FTP 등과 같은 특정 서비스의 위치를 찾는 데 사용된다.
- AAAA 레코드: IPv6 주소를 도메인 이름에 매핑하는 데 사용된다. IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 개발된 새로운 IP 주소 체계이다.
- SOA (Start of Authority) 레코드: 도메인 이름에 대한 기본 설정을 제공한다. 이 레코드는 도메인 이름의 소유자, DNS 서버, 캐시 된 정보의 유효 기간 등의 정보를 제공한다.
- PTR (Pointer) 레코드: 이 레코드는 IP 주소를 도메인 이름으로 매핑하는 데 사용된다. A 레코드가 도메인 이름을 IP 주소로 매핑하는 반면, PTR 레코드는 IP 주소를 도메인 이름으로 매핑한다. PTR 레코드는 역 DNS (reverse DNS)라고도 하며, 주로 이메일 서버에서 사용된다.. 이메일 서버에서는 전송된 이메일의 IP 주소를 역 DNS 쿼리로 검색하여 해당 IP 주소가 신뢰할 수 있는 소스에서 전송되었는지 확인할 수 있다.
- NSID (Name Server Identifier) 레코드: 이 레코드는 DNS 서버의 고유 식별자를 제공한다. NSID 레코드는 주로 DNS 서버 간의 통신에서 사용된다. DNS 서버는 서로 자신의 식별자를 제공하고, 이를 통해 서로 간의 통신을 안전하게 유지할 수 있다.
- DNSKEY (DNS Public Key) 레코드: 이 레코드는 DNSSEC (DNS Security Extensions)에 사용되는 공개 키를 제공한다. DNSSEC는 DNS 시스템을 보호하기 위한 보안 프로토콜로, DNS 데이터의 무결성과 인증을 제공한다. DNSKEY 레코드는 DNSSEC에서 사용되는 공개 키를 포함하며, 이를 통해 DNS 데이터의 무결성과 인증을 보호한다.
tinydns 레코드 설정 방법
. SOA, NS, A
& NS, A
@ MX, A
= PTR, A
+ A
' TXT
^ PTR
C CNAME
Z SOA
%(클라이언트 위치 조건식, 레코드를 생성하지 않음)
# (주석, 레코드를 생성하지 않음)
– (A 레코드를 일시적으로 비활성화하는 데 사용, 레코드를 생성하지 않음)
: 사용자 정의
6 AAAA, PTR(내 패치 포함)
3 AAAA(내 패치 포함)
bind 정방향 zone 설정방법
bind 역방향 zone 설정방법
bind rfc1912 zone 설정방법
RFC1912는 "Common DNS Operational and Configuration Errors"라는 제목의 문서로, DNS 운영 및 구성에서 흔히 발생하는 오류들에 대해 설명하고 권장 사항을 제시한 문서이다.
rfc1912.zones는 BIND DNS 서버에서 DNS 존 파일을 만들기 위한 기본 템플릿으로 사용된다.
'CS 지식' 카테고리의 다른 글
[CS 지식6.] HTTP 메서드(Method)란? / HTTP Status Code (0) | 2023.05.25 |
---|---|
[CS 지식5.] 가상화란? (0) | 2023.03.17 |
[CS 지식4.] OSI 7계층 & TCP/IP 4계층이란? (0) | 2023.03.07 |
[CS 지식3.] HTTP / HTTPS 란? (0) | 2023.03.07 |
[CS 지식1.] 웹 브라우저의 동작원리 (0) | 2023.01.13 |