도메인 - 도메인과 DNS

가이드 목표

  • 도메인과 DNS, 네임 서버에 대해 알아봐요.
  • 내 도메인을 만들고 설정하는 방법을 알아봐요.
  • DDNS에 대해 알아보고 설정하는 방법을 알아봐요.

필요한 것들

  • 공유기와 인터넷에 대한 이해
  • 공인 IP가 할당된 공유기
  • docker 가 설치된 우분투 서버

홉랩을 운영하며 여러 서비스를 배포하다 보면, IP 주소를 통해서만 서비스에 접속하는 것이 불편해질 거예요. 숫자로만 되어 있는 주소를 모두 외우고 사용하기는 어렵겠죠?

그래서 내 서버에서도 google.com처럼 멋진 도메인 주소를 통해 접속할 수 있는 방법이 필요해지게 되는데요. 이를 위해 도메인은 어떻게 동작하고 어떻게 만들 수 있는지 함께 알아보려 해요.


도메인

도메인이란 숫자 형태의 IP 주소 대신 사용할 수 있는 인간 친화적인 주소

여러분들은 브라우저에서 웹 사이트에 방문할 때 어떤 주소를 입력하시나요? 아마 구글이라면 google.com와 같은 쉬운 주소를 사용하실 거예요. 이렇게 IP 주소가 아닌 사람이 읽기 쉬운 주소를 도메인 주소라 불러요.

초기 인터넷 세상에선 오직 IP 주소를 통해서만 다른 컴퓨터에 접속할 수 있었어요. 하지만 점차 인터넷에 서버 수가 증가하면서, 서버들의 IP 주소를 모두 외워서 사용하기가 힘들게 돼요. 213.213.213.213과 같은 주소를 수십 수백개를 외우고 있기는 너무 힘들었겠죠?

이 문제를 해결하기 위해서 세상에는 도메인 주소 체계가 탄생하게 됐어요. 이 덕분에 오늘날의 우리는 IP 주소라는 개념을 몰라도 될 정도로 편리한 세상에 살게 된 거예요.


DNS 서버

flowchart LR;

server["
서버
"];
computer["
컴퓨터
"];
dns-server["
DNS 서버
"];

computer --[google.com]--> dns-server;
dns-server --[192.168.0.1]--> computer;
computer --[192.168.0.1]--> server;

그런데 도메인 주소라는 것을 적용하고 싶어도 서버를 찾아갈 수 있는 유일한 주소는 여전히 공인 IP 주소였어요. 그래서 우리가 google.com를 입력했을 때 구글의 IP 주소로 변환해 줄 어떠한 시스템이 필요해지게 되는데요. 이를 비유해 보면 중간에 전화번호부의 역할이 필요했다는 것과 같아요.

그래서 탄생한 것이 도메인 이름 시스템(Domain Name System) 이에요. 이 시스템에 의해 우리가 구글을 접속할 때 컴퓨터는 다음의 과정을 거치며 서버의 IP 주소를 찾고 접속하게 돼요.

  • 컴퓨터는 DNS 서버에 google.com의 IP 주소를 물어봐요.
  • DNS 서버는 google.com 의 IP 주소를 응답해요.
  • 컴퓨터는 응답받은 구글 서버의 IP 주소로 접속해요.

이런 숨은 과정 덕분에 우리는 도메인 주소만으로 인터넷을 사용할 수 있게 됐어요. 그래서 우리의 서버를 도메인 주소로 접속할 수 있게 만든다는 건 다음을 의미해요.

  • DNS 서버에 내가 원하는 도메인 주소를 등록해요.
  • DNS 서버에 내 도메인에 대한 요청이 들어왔을 때, 내 공인 IP 주소를 응답하도록 만들어요.

이렇게 되면 인터넷에서 내 도메인 주소로 서버를 접속할 수 있겠죠?


네임 서버

flowchart BT;

computer["
컴퓨터
"];
dns-server-1["
DNS 서버 1
"];

dns-server-2["
DNS 서버 2
"];

name-server["
네임 서버
"];

computer --[google.com]--> dns-server-1;
dns-server-1 --[192.168.0.1]--> computer;

dns-server-1 --[google.com]--> dns-server-2;
dns-server-2 --[192.168.0.1]--> dns-server-1;

dns-server-2 --[google.com]--> name-server;
name-server --[192.168.0.1]--> dns-server-2;

세상에는 수없이 많은 DNS 서버가 존재해요. 그런데 이렇게 많은 DNS 서버들이 모두 전화번호부의 역할을 한다면 문제가 될 수도 있는데요.

만약 google.com 의 IP 주소를 DNS 서버마다 다르게 응답하면 어떨까요? 그럼 구글에 들어갔는데 네이버가 나오는 이상한 문제가 생길 수도 있겠죠? 내 도메인을 등록하려고 해도, 전세계의 DNS 서버에 모두 등록 시킨다는 건 꽤나 고된 일이 될 거예요. 그리고 아무나 이를 지정할 수 있다면 모두가 google.com 의 소유권을 주장하는 문제도 생길 수 있게 돼요.

하지만 다행히도 이 문제를 방지하기 위해서 DNS 서버는 대부분 실제 정보를 가지고 있지 않아요. 대신 상위 DNS 서버에 다시 물어보고 반환해 주는 중간자 역할만을 수행하게 돼요.

이런 중간 DNS 서버들의 위에는 실제 전화번호부의 역할을 하는 진정한 DNS 서버가 있는데 이를 네임 서버라 불러요. 그래서 우리의 서버를 DNS 서버에 등록한다는 건 사실 네임 서버에 등록한다는 것과 같아요.