노션 블로그를 만들면서 헷갈렸던 개념들을 정리했다. 익숙한 용어들이지만 직접 DNS를 설정하는 과정에서 생각보다 모르는 내용들이 많았다. 이번 기회에 DNS가 어떻게 동작하는지 공부해봤고 오래 기억할 수 있도록 정리해봤다.
1. 도메인
minsoftk.com을 도메인이라고 한다.
2. 도메인 네임 서비스(DNS)
blog.minsofk.com 로 접속했을 때, ipv4 주소를 알려주는 서비스가 도메인 네임 서비스이다. 우리가 123.123.123.~~ 이런 ip 주소를 외우기는 어렵기 때문.
2-1. 트리 구조의 도메인 네임 체계
minsoftk.com 에서 minsoftk가 com에 속하며, 그 하위에 blog가 있다.
(루트)
│
com (최상위 도메인, TLD)
│
minsoftk (2차 도메인)
│
blog (서브도메인)
Scss
복사
•
호스트 네임: blog
◦
전체 도메인 이름 중에서 특정 호스트나 서비스를 구분하기 위한 이름
◦
즉, 네트워크에 연결된 개별 장치를 식볋하기 위함.
•
도메인 네임: minsoftk.com
호스트, 도메인 네임 차이는?
•
호스트네임은 네트워크 장치 자체를 식별하는 이름이라는 관점에 초점을 .
•
서브도메인은 도메인 네임 체계 내에서 계층 구조를 이루는 이름이라는 관점에 초점을 둠.
즉, blog.minsoftk.com은 우피로 블로그 페이지를 호스팅 한다. 따라서 서브 도메인이자 호스트네임 역할도 한다고 생각하면 됨.
2-2. DNS의 분산 구조형 데이터베이스
KT, LG 같은 인터넷을 사용하고 있다면, 해당하는 인터넷 DNS 서버로 접속하려는 도메인을 보낸다. 그러면 ip 주소를 전달받게 되고 해당 사이트로 접속을 하게 된다.
한번이라도 DNS에 질의를 했다면 www.naver.com이라는 ip 주소는 PC에서 저장을 하고 있다. 이게 DNS Cache다. 주소와 같이 유효기간이 같이 딸려온다. 이후 반복되는 접속이 있을 때, DNS 캐시에 존재한다면 Cache-Hit로 바로 접속을 한다. 만약 DNS 캐시가 변조된다면 올바른 주소를 찾아갈 수가 없다.
DNS 확인
•
터미널에서 nslookup 명령어 사용:
nslookup -type=ns example.com
Shell
복사
로컬 DNS Cache 확인법
분산 구조형 데이터베이스
수 많은 인터넷 주소를 하나의 데이터베이스에 저장하기는 리스크가 크다. 따라서 아래와 같은 분산 구조의 데이터베이스를 가지고 있으며, 보안이 굉장히 철저하다.
만약에 로컬의 Host 파일이 변조 되어서 DNS 정보가 변조되었다면 악의적인 목적을 가진 사이트로 연결될 수 있기 때문이다. 그래서 AhnLab의 보안 프로그램을 보면 이런 Host 파일들의 변조를 보호한다.
각각의 도메인 네임스페이스에서는 다음과 같이 동작한다.
1.
루트 네임서버의 주요 역할은 최상위 도메인(TLD) 서버를 반환한다.
2.
TLD 서버는 일반적으로 google.com의 경우 .com 과 같은 호스트 이름의 마지막 부분을 반환한다.
3.
.com 네임서버는 google.com의 네임서버가 어디에 있는지 알고있다. 해당 네임서버를 반환.
즉, 동시에 실행이 되는 과정 같지만, 각각의 요청에 따라 DNS recursor가 재귀적으로 반복해서 DNS 서버에 요청하는 과정이 포함된다.
•
DNS recursor 과정
유저의 blog.minsoftk.com 도메인 요청 → 루트 네임서버가 TLD 서버를 반환(.com) → TLD 서버(.com)가 가비아 네임서버를 반환(ns.gabia.co.kr) → … → 브라우저가 IP 주소를 전달받아 HTTP 요청을 보낸다.
•
.com 네임서버는 minsoftk.com의 네임서버(NS 레코드)가 어디에 있는지 알고 있다. 네임서버가 “이 도메인은 가비아에서 관리하고 있으니 가비아 네임서버로 가라”고 알려준다.
3. DNS 레코드
DNS 레코드는 DNS 서버가 해당 패킷을 받았을 때 어떤식으로 처리할지를 나타내는 지침이다.
A Record
•
도메인을 서버의 IP로 직접 연결한다.
CNAME
•
CNAME 레코드는 도메인 별명 레코드라고 부르며,도메인 주소를 또 다른 도메인 주소로 이중 매핑시키는 형태의 DNS 레코드 타입이다.
•
예를 들면 내 서브도메인은 현재 우피로 연결이 되어있다. 따라서 blog.minsoftk.com을 치면 우피로 연결한다.
가비아에서 DNS 설정시
가장 이해가 안가던 부분인데 가비아에서 도메인을 등록하거나 DNS 레코드를 수정하면 어떻게 되는걸까?
네임서버 정보를 변경하거나 A 레코드, CNAME 등을 수정하면, 변경 사항이 인터넷 전반에 걸쳐 전파되는 데 시간이 걸린다. 이를 DNS Propagation이라고 한다.
즉, 가비아에서 도메인을 등록하고 CNAME 설정을 DNS 관리 툴에서 추가해주면, DNS 전파 과정을 통해 전 세계적으로 적용되는 과정을 거친다. 이 전파 과정은 설정된 TTL(Time To Live)에 따라 다소 시간이 걸린다.
따라서, DNS 전파가 완료되기 전에는 기존의 브라우저 또는 로컬 DNS 캐시에 남아 있는 경우에만 이전 주소로 접근할 수 있지만, 새로운 DNS 정보가 반영되지 않은 상태에서는 정상적인 접근이 어려울 수 있다.
•
TTL: 특정 DNS 정보(A 레코드, CNAME, MX 등)를 얼마 동안 유지할지를 결정하는 값이다.(가비아에서 설정 가능. 기본으로 24시간)
•
Local DNS 캐시: 사용자의 ISP(인터넷 서비스 제공자 KT, SKT, LGU+..)의 DNS 서버는 한번 이상 요청했던 DNS 정보를 캐싱하여 반환해준다.
DNS 전파 이후 요청:
•
브라우저 → Root 네임서버 → TLD 네임서버(.com) → 가비아 네임서버
→ CNAME 정보 반환(blog.minsoftk.com → notion2.oopy.io)
→ IP 주소 반환(A 레코드) → 반환 받은 IP 주소로 HTTP 요청
DNS 수정 여부 확인
•
터미널에서 nslookup 또는 dig 명령어 사용
•
반환값에 CNAME 정보가 나오면 DNS 설정을 확인할 수 있다.
nslookup blog.example.com
Shell
복사