DNS (Domain Name System)
인터넷에서 사용자가 입력한 도메인 이름을 IP 주소로 변환하는 시스템
인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있다.
Domain
인터넷 상의 특정 대상의 IP 주소 등의 정보와 맵핑되는 사람이 기억하기 쉬운 형태의 이름
-서브 도메인 : 도메인 중 스트링 앞에 추가 문자열이 붙은 도메인
what.example.com
-APEX 도메인(루트 도메인) : 도메인 중 앞에 추가 문자열이 없는 순수한 최상위 도메인
example.com
-Name server : DNS 쿼리를 Zone File(파일로 된 Domain Zone)이 기반으로 응답할 수 있는 서버
- Authoritative : DNS 정보의 원본을 가지고 있는 최상위 NS서버
- Caching : Authoritative NS 서버를 조회하여 정보를 보관하고 있거나 응답하는 서버
/*
Domain Zone : 도메인의 모든 DNS 레코드들이 저장되어 있음
캐싱 서버는 TTL 기간 동안 DNS 레코드를 저장한다.
TTL이 만료되면 DNS 질의 과정을 다시 거친다.
*/
DNS resolver : 보통 ISP가 관리하며 사용자의 컴퓨터와 DNS 서버 사이에서 작동하는 클라이언트 측 DNS 구성 요소
DNS 작동 방식
계층 구조의 형태로 하나의 단계마다 DNS 쿼리를 하여 필요한 정보를 가진 네임서버에서 레코드를 가져온다.
1.사용자가 브라우저에 www.naver.com을 입력
(로컬) 캐시를 먼저 확인하고 캐시에 없다면 DNS Resolver에게 요청한다.
2.리졸버는 Root 네임서버에게 요청한다.
그러면 .com 을 관리하는 주체인 최상위 도메인 네임서버(TLDs) 의 위치를 알려준다.
3.리졸버는 받은 정보를 이용하여 해당 TLD 네임서버(.com TLD 네임서버)에게 요청한다.
해당 TLD네임서버는 해당 도메인(naver.com)을 관리하는 권한 있는 네임서버의 위치를 알려준다.
4.리졸버는 해당 권한 있는 네임 서버(ns-)에 최종적으로 요청하여 IP주소를 받아온다.
/*
가지고 있는 레코드 중 필요한 레코드에 대한 정보를 가져온다. www 서브도메인이니 www에 대한 A레코드를 가져온다.
*/
5.해당 IP 주소는 사용자의 컴퓨터와 리졸버 서버에 캐시되고 해당 IP 주소로 웹 서버에 접속한다.
/*
DNS 캐시 테이블이란 도메인 네임과 IP 주소의 대응관계를 저장한 것
ipconfig /displaydns : DNS 캐시테이블 출력 (없을 경우 DNS 확인자 캐시를 표시할 수 없습니다 라고 출력됨)
ipconfig /flushdns : DNS 캐시테이블 삭제 (플러시)
1 | 사용자가 도메인 네임을 입력 |
2 | 도메인 네임에 대응하는 IP를 hosts 파일에 검색 |
3 | hosts 파일에 입력한 도메인이 없을 경우 DNS 캐시 테이블에서 해당 도메인에 대응하는 IP 주소를 검색하고 테이블안에 있을 경우 IP 주소를 참고해 사이트에 접속 |
4 | DNS 캐시 테이블에 없을 경우 로컬 DNS 서버의 IP 주수로 입력한 도메인 네임에 대한 질의를 요청 |
5 | 로컬 DNS 서버로부터 도메인 네임에 대한 IP 주소를 응답 받으면 DNS 캐시테이블에 반영 |
ARP 캐시 테이블 : IP와 목적지 MAC 주소의 대응 관계를 저장 ( 출발지, 목적지의 네트워크 ID 비교 부터 시작 )
DNS 캐시 테이블 : 도메인 네임과 목적지 IP 주소의 대응 관계를 저장 ( hosts 파일 검색 부터 시작)
*/
DNS 레코드
권한 있는 DNS 서버에 있는 명령으로서 도메인에 연계된 IP 주소 및 해당 도메인에 대한 요청의 처리 방법에 대한 정보를 제공한다. (출처 : Cloudflare)
도메인 이름을 IP 주소나 기타 네트워크 정보로 변환하여 사용자가 원하는 리소스를 쉽게 접근할 수 있도록 해준다.
즉 도메인이 어떤 방식으로 데이터와 매칭되는지 정의하는 기록이다. 따라서 레코드 별로 다른 정보와 매칭된다.
A 레코드 (Address)
도메인의 IPv4 주소를 갖고 있음
IP는 그대로 유지
1대1 아니어도 1대다 / 다대1 가능
예: tistory.com - 123.12.123.123 으로 연결
PTR 레코드 (Pointer)
IP 주소를 도메인 이름으로 변환하는 정보를 갖고 있음 (역방향 조회)
1대1 만 가질 수 있다.
예 : 123.12.123.123 - tistory.com
CNAME 레코드 (Canonical Name)
도메인의 별칭을 다른 도메인으로 설정함
도메인 그대로 유지
예: boanog2.com - boanog.com 으로 연결
AAAA 레코드 (IPv6 Address)
도메인의 IPv6 주소를 갖고 있음
예:boanog.com - 2001:db8::1
MX 레코드 (Mail Exchange )
도메인으로 수신되는 이메일을 처리할 메일 서버 정보를 갖고 있음
해당 도메인과 연동되어있는 메일서버(주소)를 확인하는데 사용하는 레코드
예: boanog.com - mx.boanog.com 이메일 주소로 사용 가능하다.
NS 레코드 ( Name Server )
도메인의 권한 있는 네임서버를 지정함
도메인 이름의 DNS 정보를 관리하는 서버이다.
예: boanog.com - ns1.boanog.com
/*
설정한 네임서버에서 도메인 관리를 해준다. 서버비용이랑은 별개다.
*/
SOA 레코드 ( Start of Authority )
도메인의 관리 정보를 갖고 있음 (네임서버, 관리자 이메일 등)
네임서버에게 어떤 기준에 의해 이 도메인을 관리하여야하는지 알려주는 역할
예 : 권한 있는 기본네임서버(주요 dns 서버 역할) / 관리자 이메일 주소(. 대신 @) / 일련번호(ZONE파일업데이트시 최신정보 여부) / 갱신 간격(초) / 재시도 간격 / 만료시간 / dns 레코드가 캐시될 수 있는 시간 등등
TXT 레코드
주로 메모를 남기는 용도이다. 도메인과 관련된 텍스트 데이터를 저장함 (보안, 인증 등)
예 : 구글로부터 제공받는 특정 텍스트값을 DNS에 설정함으로써 소유권을 증명하거나 특정 IP 대역에서만 이메일을 발송할 수 있도록 설정한다는 의미로 텍스트 값으로 적어놓는다.
출처
https://www.cloudflare.com/ko-kr/learning/dns/dns-records/
https://learn.microsoft.com/en-us/azure/dns/dns-zones-records