도메인과 DNS

July 1, 2019

    도메인

    홈 서버의 공인 IP 주소에 도메인을 연결해두면 외부에서 홈 서버의 SSH, FTP, VPN 등에 접속할 때 숫자로 된 IP 주소 대신에 도메인을 입력할 수 있어서 편리하다. 아래에서는 도메인 연결의 일반적인 사항을 알아본다.

    도메인과 DNS

    도메인은 DNS (Domain Name System) 를 통해서 서버 컴퓨터와 연결된다. 예를 들어 example.com 도메인에 접속한다면, 이 접속 요청은 먼저 DNS에 전달되고, DNS는 DNS 레코드 상에 지정된 서버 컴퓨터에게 이 접속을 연결한다.

    DNS는 각 도메인에 대한 여러 가지 연결정보를 가지는데, 이를 DNS 레코드라고 부른다. DNS 레코드의 종류에는 도메인과 서버 컴퓨터의 IP 주소를 연결하는 A 레코드, 도메인을 다른 도메인에 연결하는 CNAME 레코드, 도메인과 메일 서버를 연결하는 MX 레코드, 도메인에 특정한 정보를 지정하는 TXT 레코드 등이 있다.

    이러한 DNS가 운영되는 서버를 네임 서버라고 부른다. 자신의 도메인 등록기관에 접속해보면 각각의 도메인에 네임 서버를 지정하도록 되어있고, 보통 각 도메인 등록기관은 자체 네임 서버를 제공한다.

    DNS 서비스 선택

    www. 등의 접두어가 없는 example.com 도메인 그 자체를 루트 도메인 (또는 네이키드 도메인) 이라고 부르고, www.example.com 이나 cloud.example.com 처럼 접두어가 있는 도메인을 서브도메인이라고 부른다. 서브도메인은 그 자체로 독립된 별도의 도메인처럼 사용할 수 있어서 여러 가지 서비스를 만드는데 널리 활용된다. 서브도메인은 DNS 레코드의 A 레코드 또는 CNAME 레코드 설정을 통해서 생성하는데, 이처럼 자신이 원하는 대로 서브도메인을 생성하고 활용하고자 한다면 자신이 직접 DNS 레코드를 생성하고 삭제할 수 있어야 한다.

    자신의 도메인 등록기관에서 기본으로 제공하는 네임 서버가 DNS 레코드 설정 기능을 지원한다면 이를 사용하면 된다. 만일 그렇지 않다면, 또는 기본으로 제공되는 네임 서버의 기능이 부족하다면 별도의 DNS 서비스를 이용할 수 있다. 별도의 DNS 서비스를 이용할 경우 자신의 도메인 등록기관에 접속해서 도메인에 지정된 네임 서버를 자신이 이용하는 DNS 서비스의 네임 서버로 바꿔주어야 한다.

    별도의 DNS 서비스를 이용한다면 자신에게 필요한 기능을 고려해서 선택한다. DNS 레코드를 외부에서 제어할 수 있도록 API를 제공하는 서비스라면 그 활용도가 더 높아진다. 도메인으로 접속할 때에는 도메인에 대한 인증서를 발급받아서 그 연결을 암호화할 수 있는데, Certbot 프로그램을 사용해서 Let’s Encrypt 와일드카드 인증서를 발급받고 자동갱신까지 적용하려면 Certbot이 지원하는 DNS 서비스 목록을 확인한다.

    DNS 레코드 설정

    DNS 레코드를 설정할 때 사용하는 세부적인 용어와 절차는 각 DNS 서비스마다 조금씩 다를 수 있다. 아래는 DNS 레코드의 일반적인 설정을 다룬다.

    TTL

    먼저, 각 DNS 레코드는 TTL (Time To Live) 값을 가진다. TTL은 설정된 DNS 레코드 값이 얼나마 오랫동안 갱신되지 않을 것인지를 결정한다. 만일 A 레코드를 생성하면서 TTL을 1시간으로 설정했고 20분 뒤에 다시 A 레코드를 변경했다면 새로 변경된 A 레코드는 40분 후에 반영된다.

    A 레코드 (AAAA 레코드)

    A 레코드는 도메인과 서버 컴퓨터의 IP 주소를 연결한다. IPv4 형식의 IP 주소는 A 레코드, IPv6 형식의 IP 주소는 AAAA 레코드로 입력한다.
    루트 도메인 example.com의 A 레코드를 생성할 때에는 이름 부분에 루트 도메인을 의미하는 @을 입력한다.
    서브도메인 cloud.example.com을 만들려면 이름 부분에 cloud를 입력하고 A 레코드를 생성한다.

    CNAME 레코드

    CNAME 레코드는 서브도메인을 루트 도메인 혹은 다른 도메인에 연결할 때 사용한다. 예를 들어 www.example.com을 루트 도메인 example.com에 연결하려면 이름 부분에 www을, 값 부분에 루트 도메인을 의미하는 @을 입력하고 CNAME을 생성한다.

    MX 레코드

    MX 레코드는 도메인과 메일 서버를 연결할 때 사용한다. MX 레코드는 추가로 메일 서버의 우선 순위를 지정할 수 있다. 메일 서버 측에서 요청하는 값으로 설정한다.

    TXT 레코드

    TXT 레코드는 도메인에 특정한 정보를 지정할 때 사용한다. 도메인 인증, 이메일 보안, SSL/TLS 인증서 발급 등에 활용된다.

    NS 레코드

    NS 레코드는 도메인의 네임 서버를 지정할 때 사용하는데, 보통의 DNS 서비스에서는 사용자가 NS 레코드를 별도로 생성할 필요는 없다.

    CAA 레코드

    CAA 레코드는 도메인에 대한 SSL/TLS 인증서를 발급할 수 있는 기관을 제한할 때 사용한다. 만일 Let’s Encrypt에서만 인증서를 발급할 수 있게 제한하려면 0 issue "letsencrypt.org" 형태의 값이 된다.

     

    본 글의 저작권은 작성자 Varins에게 있습니다.
    Varins의 사전 서면 동의 없이는 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.
    

Leave a comment

댓글은 관리자의 승인 이후에 게시됩니다.