도메인
도메인은 example.com 과 같은 주소를 의미합니다. 도메인은 그 자체로는 아무런 정보를 가지지 않기 때문에 도메인의 정보를 저장할 DNS 서버가 필요합니다.
example.com 과 같은 아무런 접두어가 없는 도메인을 루트 도메인이라 하고
www.example.com, service.example.com 과 같은 접두어가 있는 도메인을 서브 도메인이라 합니다.
DNS
DNS 는 Domain Name Server 의 약자로서 인터넷의 전화번호부와 같은 역할을 합니다. DNS 서비스가 돌아가는 서버를 DNS 서버 혹은 네임서버라고 합니다.
클라이언트가 example.com 이라는 사이트로 접속하려 할 때, 네임서버에 example.com 의 레코드를 물어 보게 되고, 네임서버는 example.com 이라는 도메인에 저장된 주소를 응답합니다. 그럼 클라이언트는 그 주소로 접속을 하게 됩니다.
네임서버가 IP 주소만 저장하는 것은 아닙니다만, 전화번호부의 개념으로 이해하면 쉽습니다.
레코드
도메인은 그 자체로는 아무런 정보를 가지지 않습니다. 전화번호부에서 ‘철수네 집’ 이라는 단어가 아무런 정보를 가지지 않는 것과 같습니다. 도메인에 특정 정보를 저장할 수 있는데, 그 정보를 레코드라고 합니다.
전화번호부에 [‘철수네 집’ : 010-1234-5678] 라는 정보가 있을 때, ‘철수네 집’ 은 도메인이고, 010-1234-5678 은 레코드입니다.
A 레코드는 IPv4 주소를 의미하고
AAAA 레코드는 IPv6 주소를 의미합니다.
CNAME 레코드는 도메인의 별칭을 의미하고,
TXT 레코드는 도메인에 특정한 정보 (TXT) 를 저장할 수 있습니다.
모든 종류의 레코드 설명은 아래 링크에서 확인할 수 있습니다.
https://en.wikipedia.org/wiki/List_of_DNS_record_types
DDNS
일반 사용자들에게는 고정 IP를 할당해주지 않고 유동 IP를 할당해 줍니다. 그래서 자신의 주소를 등록한다 할지라도 시간이 지나 자신의 IP가 바뀌게 되면 도메인은 엉뚱한 주소를 가르키게 됩니다. 이것을 방지하기 위해선 주기적으로 자신의 주소를 네임서버에 등록하는 식으로 계속 레코드를 갱신해 주어야 하는데, 이것을 Dynamic DNS 즉 DDNS 라 합니다.
도메인의 필요성
도메인이 없으면 외부에서 자신의 서버에 접속하기 위해 자신의 IP를 입력해야 하는데, 위에서 서술하였듯이 일반 사용자들에게는 유동 IP 가 할당되기 때문에 그렇게 하기가 곤란합니다. 또한, 자신의 도메인이 없을 경우 let’s encrypt 인증서를 발급 받을 수가 없습니다.
서버를 내부망에서만 사용할 것이 아니라면 도메인 하나쯤은 있는 것이 좋습니다.
도메인 구입과 네임서버 선택
도메인은 후이즈나 가비아와 같은 도메인 등록 기관에서 구매할 수 있습니다. 보통 .com 도메인이 년 2만원 정도 합니다. 한 달에 1670 원 정도니 매우 저렴하죠.
보통 도메인 등록 기관에서 레코드를 수정할 수 있도록 해 주지만, let’s encrypt 와일드카드 인증서를 발급하거나, DDNS 서비스를 이용하기 위해선 certbot (let’s encrypt 자동 갱신 프로그램) 이 지원하고, API를 지원하는 네임 서버를 사용하는 것이 좋습니다.
필자는 이것을 위해 Cloudflare 라는 네임서버를 사용할 것입니다.