DNS 레코드란 무엇인가

Stock 518612787

DNS 레코드 개요


DNS 레코드는 DNS(Domain Name System 도메인 이름 시스템)의 실질적인 구성 요소입니다. DNS란 읽을 수 있는 문자로 이어진 도메인 이름을 숫자로 된 IP 주소로 변환하여, 컴퓨터가 인터넷을 통해 서로를 찾고 연결할 수 있도록 해주는 전화번호부 같은 시스템이며, DNS 레코드는 DNS 서버가 실질적으로 수행해야 할 작업을 알려주는 명령으로 구성된 텍스트 파일입니다. DNS 레코드의 유형과 용법에 대해 알아봅니다.

각각 다른 목적으로 사용되는 다양한 DNS 레코드 유형이 있으며, 이 중에는 웹사이트 접속에 반드시 필요한 필수 DNS 레코드들과 추가적인 용도로 사용되는 선택적 DNS 레코드들이 있습니다. 다음은 자주 사용되는 DNS 레코드의 일반적 유형들입니다.

  1. A(Address) 레코드: 도메인 IP 주소를 갖고 있는 레코드로 도메인 또는 하위 도메인을 IPv4 주소에 매핑해줍니다.
  2. AAAA(IPv6 Address) 레코드: 도메인 IPv6 주소를 갖고 있는 레코드로 도메인 또는 하위 도메인을 IPv6 주소에 매핑해줍니다.
  3. MX(Mail Exchange) 레코드: 메일 서버 정보를 갖고 있는 레코드로 도메인으로 온 이메일을 이 서버로 보내줍니다. 메일 서버가 여러개인 경우 우선 순위를 지정할 수 있게 되어 있습니다.
  4. TXT(Text) 레코드: 레코드에 텍스트 메모를 저장할 수 있도록 해주는 레코드로 이메일 보안이나 소유권 확인 등에 주로 사용됩니다.
  5. CNAME(Canonical Name) 레코드: 도메인 별칭을 갖고 있는 레코드로 하위 도메인을 추가할 때 주로 사용되며 하위 도메인이 상위 도메인과 동일한 위치를 가리키도록 해줍니다.
  6. NS(Name Server) 레코드: 도메인에 대한 공식 DNS 레코드를 갖고 있는 ‘권한 DNS 서버’, 즉 네임 서버를 지정해주는 레코드입니다.
  7. PTR(Pointer) 레코드: IP 주소를 다시 도메인 이름으로 변환해주는 레코드입니다.

이러한 주요 레코드 이외에도 DMARC 레코드, DKIM 레코드, SPF 레코드, SOA 레코드, SRV 레코드 등 기타 여러가지 레코드들이 있습니다. 소유하고 있는 도메인의 DNS 레코드는 해당 도메인 등록 기관(Domain Registrar) 또는 DNS 호스팅 공급자(DNS Hosting Provider) 웹사이트에서 확인 가능합니다.

DNS 레코드 유형별 특징과 용법


1. DNS A 레코드

DNS A 레코드의 A는 주소(Address)를 뜻하며, A 레코드는 도메인 이름의 IP 주소를 가리키는 가장 일반적인 DNS 레코드입니다. 웹 브라우저는 도메인 이름이 입력되면 해당 IP주소를 조회하여 웹사이트를 로드합니다. 웹 브라우저는 A 레코드를 사용하여 도메인 이름을 사용하여 웹 페이지를 로드할 수 있습니다. 따라서 IP 주소를 모르더라도 인터넷상의 웹사이트에 액세스할 수 있습니다. A 레코드는 IPv4 주소만 보유하므로 웹사이트에 IPv6 주소가 있는 경우는 AAAA 레코드를 사용합니다.

DNS 레코드: A 레코드

예를 들어, 이 블로그 주소인 sodacan.blog가 GoDaddy에 등록되어 있으므로 GoDaddy 웹사이트에서 DNS 레코드를 확인해보았습니다. 웹 브라우저 주소창에 URL을 입력하고 실행하면 DNS 레코드를 가져오면서 위와 같은 A 레코드를 반환하게 됩니다.

  • 유형(Type): A
  • 이름(Name): @
  • 데이터(Data): 139.59.77.165
  • TTL: 1 Hour

유형의 A는 A 레코드를 뜻합니다. 이름의 @ 기호는 이 레코드가 루트 도메인에 관한 것임을 나타내고, 데이터는 A 레코드의 주 목적인 IP 주소를 나타냅니다. TTL은 Time-to-live의 약자로 해당 레코드의 유효 시간입니다. 위 경우는 1시간마다 이 레코드가 리프레시되고, 변경사항이 있으면 적용되는데 최대 1시간까지 걸릴 수 있다는 것을 의미합니다. 대부분의 웹사이트는 한 개의 A 레코드를 갖지만, 경우에 따라 트래픽 분산 목적으로 여러 개의 A 레코드가 있을 수도 있습니다.

A 레코드의 가장 일반적인 용도는 IP 주소 조회, 즉 도메인 이름(예: “sodacan.blog”)을 IPv4 주소에 맵핑하는 것입니다. 덕분에 사용자는 모든 웹사이트의 IP 주소를 일일히 기억해서 입력하지 않아도 도메인 입력만으로 웹사이트에 접속할 수 있는 것입니다.

2. DNS AAAA 레코드

DNS AAAA 레코드는 도메인 이름을 IPv6 주소에 맵핑합니다. IPv4 주소 대신 IPv6 주소를 저장한다는 것만 제외하면, DNS AAAA 레코드는 DNS A 레코드와 그 목적과 용법이 동일합니다. IPv6은 더 효율적이고 유연한 최신 버전 인터넷 프로토콜로 IPv4에 비해 길이가 길기 때문에 그만큼 더 많은 IP 주소를 생성할 수 있습니다.

예를 들어, facebook.com의 IPv6 주소는 2a03:2880:f10c:83:face:b00c:0:25de입니다. IPv4보다 상당히 길다는 것을 알 수 있습니다. 아직은 대부분의 도메인이 IPv4를 사용하고 있지만 점점 더 IPv6를 채택하는 케이스가 늘어나고 있어, 멀지 않은 미래에 거의 모든 도메인이 AAAA 레코드를 가질 것으로 예상됩니다.

3. DNS MX 레코드

DNS MX 레코드의 MX는 메일 교환(Mail Exchange)을 뜻하며, 이메일을 표준 이메일 프로토콜인 SMTP에 따라 라우팅하는 기능을 합니다.

DNS 레코드: MX 레코드

Kinsta에서 DNS 호스팅을 받고 있는 한 도메인의 DNS MX 레코드를 조회해보았습니다. 현재 구글 MX 레코드를 등록하여 Gmail(구글 워크스페이스)을 도메인 이메일 계정으로 사용하고 있습니다.

  • 유형(Type): MX
  • 이름(Name): @
  • 값(Value): 1 SMTP.GOOGLE.COM
  • TTL: 1 hour

유형의 MX는 MX 레코드를 뜻합니다. 값의 이메일 서버 SMTP.GOOGLE.COM의 앞에 있는 번호 ‘1’은 우선 순위를 나타내며, MX 레코드가 여러개 있으면 이 우선 순위에 따라 실행 순서가 정해집니다. 1개 이상의 MX 레코드들을 동일한 우선 순위로 설정한 경우 이메일 수신량이 동일하게 분산됩니다.

4. DNS TXT 레코드

DNS TXT 레코드의 TXT는 텍스트(Text)를 뜻하며, DNS에 텍스트 메모를 입력하기 위해 사용하는 레코드입니다. 하나의 도메인이 다수의 TXT 레코드를 가질 수 있습니다.

DNS 레코드: TXT 레코드

TXT 레코드는 원래 다른 용도로 설계되었으나 요즘은 주로 이메일 스팸 방지와 도메인 소유권 확인의 용도로 사용됩니다. 위와 같이, TXT 레코드에 지정된 값을 입력하는 것이 도메인 소유권을 증명하는 방법 중 하나로 흔히 사용되고 있습니다.

  • 유형(Type): TXT
  • 이름(Name): @
  • 데이터(Data): google-site-verification=zFtyr-Mhi4ZSJ9HpWnYzNo8_baAYFMdoyPCJVyIQmTw
  • TTL: 1 hour

아울러, TXT 레코드를 사용하면 이메일 관련 추가 DNS 레코드들과 함께 다양한 방법으로 이메일을 인증하고 보안을 강화할 수 있습니다.

5. DNS CNAME 레코드

DNS CNAME 레코드의 CNAME은 표준 이름(Canonical Name)을 뜻하며, 별칭 도메인의 입장에서 표준 도메인을 가리키는 역할을 합니다. 도메인 또는 하위 도메인이 다른 도메인의 별칭인 경우 A 레코드 대신 CNAME 레코드가 사용됩니다. 모든 CNAME 레코드는 IP 주소 대신 도메인을 가리켜야 합니다.

20240217 165143

위와 같이 www에 sodacan.blog 데이터를 갖고 있는 CNAME 레코드가 있습니다. 이는 DNS 서버가 www.sodacan.blog 대한 DNS 레코드에 도달하면 실제로는 sodacan.blog의 DNS를 조회하여 sodacan.blog의 A 레코드(IP 주소)를 반환하게 됩니다. 이 경우 sodacan.blog는 www.sodacan.blog의 표준 이름에 해당합니다.

  • 유형(Type): CNAME
  • 이름(Name): www
  • 데이터(Data): sodacan.blog
  • TTL: 1 hour

6. DNS NS 레코드

DNS NS 레코드의 NS는 이름 서버(Name Server)를 의미하며 보통 네임서버로 불립니다. 네임서버는 해당 도메인의 권위 있는 네임서버(실제 DNS 레코드를 갖고 있는 서버)가 어디인지 안내합니다. 즉, 해당 도메인의 IP 주소를 찾으려면 어디로 가야 하는지를 알려줍니다. NS 레코드가 올바르게 구성되지 않으면 웹사이트 로딩에 문제가 발생합니다.

20240217 165136

네임서버는 DNS 서버의 유형 중 한 가지로, A 레코드, MX 레코드, CNAME 레코드 등 특정 도메인에 관한 모든 DNS 레코드를 저장하는 서버입니다.

  • 유형(Type): NS
  • 이름(Name): @
  • 데이터(Data): ns31.domaincontrol.com, ns32.domaincontrol.com
  • TTL: 1 hour

안정성을 위해 한 개의 도메인에 통상적으로 두 개 이상의 네임서버가 설정됩니다. 이렇게 하면, 네임서버 하나에 문제가 생겨도 다른 네임서버를 이용할 수 있습니다. 기본 네임서버가 하나 있고, 이 기본 서버의 DNS 레코드가 복사된 한 개 이상의 보조 네임서버가 있는 것이 일반적입니다. 기본 네임서버를 수정하면 보조 서버도 함께 수정됩니다. 주로 웹 호스팅사를 변경해서 웹서버가 이전될 때 NS 레코드를 변경하게 되는데, NS 레코드의 변경 사항이 DNS에 전파되는 데는 최대 48시간까지 걸리기도 합니다.

DNS 서버 유형별 프로세스


  • DNS 재귀 확인자 (DNS Recursive Resolver): DNS 재귀 확인자는 DNS 조회의 시작점으로, 사용자 클라이언트(웹 브라우저)와 DNS 네임서버 사이에서 중개자 혹은 해결사 같은 역할을 합니다. DNS 요청을 수신하고 IP 주소를 반환하기까지 나머지 3개의 네임서버에 재귀적으로 요청을 보낸다 하여 ‘재귀 확인자’라 불립니다. 웹 브라우저에 입력된 URL을 통해 DNS 조회 요청이 들어오면, 재귀 확인자는 캐시에 해당 정보가 없을 시 새로운 DNS 조회 요청을 루트 네임서버로 보냅니다. 루트 네임서버에서 응답이 오면 재귀 확인자는 이를 TLD 네임서버로 보내고, TLD 네임서버에서 응답이 오면 재귀 확인자는 이를 권한 네임서버로 보내고, 권한 네임서버에서 응답이 오면 이를 웹 브라우저에 반환합니다. 이 과정 중 재귀 확인자는 권한 네임서버에서 받은 정보를 캐시하게 되고, 다른 브라우저에서 동일한 도메인의 IP 주소 요청이 들어오면 재귀 확인자는 네임서버를 호출하는 대신 이미 캐시된 레코드를 브라우저에 반환합니다. 재귀 확인자는 이러한 재귀적 작업 방식을 통해 엄청난 사용자 요청 부하를 직접 처리하기 어려운 나머지 3개 네임서버를 서포트하는 매우 중요한 역할을 하고 있습니다.
  • DNS 루트 네임서버 (DNS Root Name Server): 전세계에는 13세트의 DNS 루트 네임서버가 있으며 비영리 단체인 ICANN(Internet Corporation for Assigned Names and Numbers)이 이를 관리하고 있습니다. root-servers.org에 가면 루트 네임서버들의 위치를 확인할 수 있습니다. 루트 네임서버는 재귀 확인자로부터 DNS 요청이 오면 해당 도메인의 확장자(.com,. net, .org, 등)에 따라 해당 TLD 네임서버를 가리키는 응답을 반환합니다.
  • TLD 네임서버 (DNS Top-level Domain Name Server): 네임서버는 도메인 확장자(.com,. net, .org, 등)를 공유하는 도메인 이름들의 정보를 저장하고 있으며, ICANN 산하의 IANA(Internet Assigned Numbers Authority)에 의해 관리됩니다. TLD 네임서버는 같은 도메인 확장자로 끝나는 모든 웹사이트들의 정보를 갖고 있으며, 요청받은 도메인의 권한 네임서버를 가리키는 응답을 반환합니다. TLD 네임서버 종류는 .com, .org, .net, .edu, .gov 등의 일반 최상위 도메인과 .uk, .us, .ru, .kr 등의 국가 코드 최상위 도메인이 있습니다.
  • 권한 네임서버 (DNS Authoritative Name Server): 권한 네임서버는 요청받은 도메인 이름의 고유한 정보, 즉 DNS 레코드에 대한 최종 권한을 갖고 있는 서버입니다. 권한 네임서버는 A 레코드로부터 요청받은 도메인의 IP 주소 추출하여 반환함으로써 재귀 확인자가 웹 브라우저에 IP 주소를 제공할 수 있도록 해주고, CNAME 레코드가 있는 경우 별칭 도메인을 추출, 재귀 확인자에 제공함으로써 이에 대한 DNS 조회를 수행할 수 있도록 해줍니다.

Leave a Reply

Your email address will not be published. Required fields are marked *