
배포를 위해 SSL인증과 DNS설정을 하고 있었다
A, CNAME 레코드를 추가하라는데
도통 이게 무슨 소린지 모르는채로 넘어갈 수가 없어 알아보았다
DNS가 뭐임?
인터넷에 연결된 컴퓨터 한대를 host 호스트라고 한다
호스트와 호스트가 통신하기 위해서는 주소가 필요하고, 이를 위해 IP 주소를 사용한다
하지만 매번 숫자로 된 IP주소를 외우기엔 불편해 만들어진 것이 도메인 네임 시스템 DNS이다
DNS의 핵심은 DNS Server인데, 수많은 도메인 이름과 그에 대응하는 IP 주소가 저장된 분산된 데이터베이스이다
우리 컴퓨터에서 www.어떤도메인.org 를 요청할 때, 운영체제는 DNS 서버에서 www.어떤도메인.org 의 ip 주소를 요청하여 받아온다
그 ip 주소를 이용해 우리가 원하는 도메인으로 접속하게 된다
hosts 파일
사실 DNS 서버를 거치지 않고도 hosts 파일을 통해 자주 가는 사이트의 IP 주소를 저장해둘수도 있다 (전화번호부처럼)
그러나 hosts 파일을 해킹 당해 수정되버리면 피싱 사이트로 유도될 위험이 있기 때문에 보안에 매우 유의해야 한다
public DNS, ISP
그렇다면 우리 컴퓨터는 DNS 서버의 위치를 어떻게 알고 요청을 하는가?
그건 바로 우리가 가입한 통신사 (KT, SK, LG U+)에서 기본적으로 제공하는 DNS 서버를 사용하기 때문이다
이런 통신사를 ISP Internet Service Provider 라고 한다
그런데 한가지 상상의 나래를 펼치자면 웹 서핑을 하려면 ISP에서 제공하는 DNS 서버를 사용해야하고, 그렇다면 ISP에서 내가 접속한 사이트를 다 알수도 있지 않을까?!
아무튼 모종의 이유로 통신사에서 제공하는 DNS server를 이용하고 싶지 않을 땐, public DNS를 사용해보자
구글이 만든 8.8.8.8 public DNS도 있고, 1.1.1.1로 쌈박한 주소를 가지고 있는 Cloudflare의 public DNS도 있다 (1.1.1.1은 자기네가 구글이나 보통의 ISP보다 속도도 빠르다고 어필한다)
도메인 이름의 구조
도메인의 끝에는 사실 . 이 생략되어 있다
이 점.은 루트를 의미하고 그 앞으로 탑 레벨 Top Level, 세컨드 레벨 Second Level, 서브 레벨 sub Level 로 이루어져있다
그리고 각각의 레벨마다 해당 도메인 이름에 대응하는 IP 주소를 저장한 DNS 서버가 존재한다
루트 DNS 서버는 Top-level DNS 서버의 목록을 알고있고, Top-level DNS 는 Second-level DNS의 목록을 알고있고, 각 하위 계층의 목록들만 알고 있다
결국 서브 도메인에 접속하려는 사이트의 IP주소가 있는 것이다
우리의 컴퓨터는 수 많은 서브 DNS 서버의 주소를 저장하기 어렵기에 루트 DNS 서버의 주소만 알고있다
그래서 루트 계층에서 탑으로, 탑에서 세컨으로, 세컨에서 서브로 순차적으로 각 레벨의 DNS 서버에 접근하여 최종적으로 해당 IP 주소를 얻어내는 방식으로 통신한다
도메인 이름 등록 과정과 원리
전세계 Root name server는 ICANN 이라는 비영리 단체에서 관리한다
Top-level domain 들은 Registry 등록소라는 기관에서 담당한다
도메인을 등록하려면 탑레벨 도메인에 주소를 직접 등록 할 수 없고, 네임 서버 형식으로 등록해야 하므로 네임서버가 하나 필요하다
등록대행자를 통해 네임서버를 탑레벨 도메인에게 전달해 네임서버를 등록하고, 네임서버에 내 도메인의 IP주소를 등록하면 각각의 서버가 하위 서버를 알고 있기때문에 이제 루트 서버부터 내 IP주소를 찾아 접속이 가능해진다
위의 서버 이미지 밑에 각각 저장된 도메인 정보들이 있는데, 이렇게 서버에 저장되어 있는 데이터 형식을 레코드 타입이라고 한다
여기서 A 와 NS는 최종 IP주소 = Address를 뜻하는 A레코드 와 네임서버를 뜻하는 NS레코드를 뜻한다
CNAME은 또 뭔데?
A 레코드는 도메인 이름을 정확한 IP 주소에 매핑한다
CNAME 레코드는 도메인 이름을 다른 도메인 이름에 매핑하여, 간접적으로 IP 주소에 연결한다
특정 도메인이 자주 변경될 때 유용하다
예를 들어, A 레코드를 직접 수정하지 않고도 CNAME 레코드를 수정함으로써 도메인의 별칭을 통해 IP 주소가 변경되더라도 서비스 접속에 문제가 생기지 않도록 할 수 있다
즉, A 레코드가 직접 IP 주소를 가리킨다면, CNAME 레코드는 별칭처럼 다른 도메인을 가리키는 방식이다
Ref : https://youtube.com/playlist?list=PLuHgQVnccGMCI75J-rC8yZSVGZq3gYsFp&si=4ve-6cyJ3wZyV7Qu
'Backend Basics > Cloud & Deployment' 카테고리의 다른 글
로드 밸런서가 뭐임? (0) | 2024.10.08 |
---|