DNS 레코드

Kade Jeon·2024년 5월 21일

네트워크

목록 보기
2/3

DNS레코드

권한 있는 DNS서버에 있는 명령으로서, 도메인에 연계된 IP주소 및 해당 도메인에 대한 요청의 처리 방법에 대한 정보를 제공

  • 레코드는 DNS 구문이라고 하는 일련의 텍스트 파일로 구성
  • DNS 구문은 DNS DNS 서버에게 수행할 작업을 알려주는 명령으로 사용되는 문자열.
  • 모든 DNS 레코드는 TTL(Time-To-Live : DNS 서버가 해당 레코드를 새로고치는 빈도)이 있음.

A레코드 / AAAA레코드

A레코드 (Address Record)

도메인의 IP 주소를 갖고 있는 레코드.

  • A레코드의 용도는 IP 주소 조회, 즉 도메인 이름을 IPv4주소와 일치시키는 것.
  • A레코드는 IPv4 주소만 보유

    nslookup 도메인명을 입력하면 아래와 같은 결과를 얻을 수 있다.
    Address : 203.248.252.2가 A레코드이다.

AAAA레코드 (AAAA Record)

도메인의 IPv6 주소를 포함하는 레코드.

  • AAAA레코드는 IPv4대신 IPv6 주소를 저장하는 것을 제외하고는 A레코드와 같다.

    nslookup -q=AAAA 도메인명 을 입력하면 아래와 같은 결과를 얻을 수 있다.
    Address: 2404:6800:4005:80e::200e 가 AAAA레코드이다.

MX레코드

MX레코드(Mail eXchange Record) : SMTP에 따라 이메일 메시지를 라우팅하는 방법을 나타낸다.

  • MX레코드가 등록되어 있어야, 메일을 해당 도메인으로 전송했을 때 메일 서버로 전송하게 된다.
  • MX레코드는 MX preference와 mail exchanger로 구성되어 있다.
  • MX preference(우선순위)에 따라서 부하를 분산할 수도 있고, 백업 서버로 둘 수도 있다.

nslookup -type=mx 도메인명을 입력하면 아래와 같은 결과를 얻을 수 있다.
naver.com MX preference = 10, mail exchanger = mx3.naver.com부분이 MX레코드에 해당하며 사진의 경우에는 3개의 레코드가 조회됐다.
MX preference(우선순위) 값이 동일하게 10으로 주어져 있는 것으로 보아 세 개의 서버에 균등하게 부하를 분산시킴을 알 수 있다.


TXT레코드

도메인의 텍스트 정보를 저장하는 DNS레코드 유형이나 이메일 인증, 도메인 소유자 확인, 서비스 구성 및 보안 설정 등 다양한 용도로 활용.

  • TXT레코드는 "속성= 값"의 형식으로 저장된다.
  • TXT레코드는 도메인에 대한 중요한 알림을 포함시키기 위해 만들어졌지만, 이후 다른 목적에 이용할 수 있도록 변화함. 그 예는 아래와 같다.

nslookup -q=TXT 도메인명 을 입력하면 아래와 같은 결과를 얻을 수 있다.
naver.com text = "google." 부분이 TXT레코드에 해당되며 다양한 용도로 활용된다.
그 중 마지막 줄 v=spf1~ 부분은 SPF 레코드에 해당.

SPF레코드

SPF 레코드 (Sender Policy Framework Record) : 이메일 스팸을 방지하기 위해 사용되는 레코드로, 이 도메인에서 허용되는 이메일 발송 서버(IP 주소)를 정의.

  • SPF레코드는 SMTP가 발신 주소를 인증하지 않기 때문에 만들어졌다. SPF와 같은 인증 레코드가 없다면 발신자를 가장하여 메일을 보낼 수 있게 된다.
  • SPF레코드에 발신자의 IP주소나 도메인이 없다면 수신 서버는 해당 이메일을 배달하지 않거나 스팸으로 표시.

SPF레코드 구조

  • SPF레코드는 v=spf1 로 시작하여 SPF레코드가 포함되어 있다고 서버에게 알림.
  • 다음으로 SPF의 “guest list”, 즉 승인된 IP주소의 목록이 나열됨. ( ex: ip4: 192.0.0.0 )
  • include 해당 도메인에서 이메일을 보낼 수 있는 제 3자 조직을 서버에게 알림. 이 경우 include에 포함된 도메인의 SPF 레코드도 검사해야함. ( ex: include:example.net)
  • 마지막으로 all 을 이용해 메일을 어떻게 처리해야 할지 서버에 알림.
    -all : SPF 레코드에 열거되지 않은 주소는 거부하라고 서버에 알림.
    ~all : SPF 레코드에 열거되지 않은 이메일은 안전하지 않음 혹은 스팸으로 표시하되 수락하라고 서버에 알림.
    +all : SPF 레코드와 무관하게 어떤 서버라도 이메일을 보낼 수 있다고 서버에 알림.

- A 서버에서 B 서버의 SPF 레코드 확인에 실패하더라도 메일은 B 서버로 전송된다.
  이 경우에도 B 서버의 스팸메일함으로 분류된다.
- B 서버에서 A 서버의 SPF 레코드 확인에 실패하는 경우도 마찬가지다.

DKIM레코드

DKIM레코드(DomainKeys Identified Mail Record) : 이메일 인증을 위해 사용되며, 이 도메인에서 보낸 이메일이 변경되지 않았음을 검증하는데 사용(공개-개인 키 쌍 활용).

  • DKIM 레코드는 DKIM 공개 키를 저장.
  • 이메일 서버는 도메인의 DNS 레코드를 쿼리하여 DKIM 레코드를 확인하고 공개 키를 봄.
#DKIM 예시
example-mail.domainkey.example.com        TXT       v=DKIM1; p=76E629F05F709EF665853333EEC3F5ADE69A2362BECE40658267AB2FC3CB6CBE            6000

DKIM레코드 구조

[selector]._domainkey.[domain]
selector :이메일 서비스 공급자가 발급한 특수 값, DKIM 헤더에 포함되어 이메일 서버가 DNS에서 필요한 DKIM 조회를 수행할 수 있도록 함. (DKIM Selector)
_domainkey : 모든 DKIM 레코드 이름에 포함.
domain : 이메일 도메인 명.

v=DKIM1 이 TXT레코드가 DKIM 레코드로 해석되어야 함을 나타냄
p= 공개 키

DKIM헤더

  • 이메일 헤더 중 하나.
  • 송신지 메일 서버는 이메일 헤더, 이메일 본문, 개인 키를 사용하여 디지털 서명을 만들고, 이 디지털 서명이 DKIM 헤더의 일부로서 메일에 첨부됨.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=naver.com; s=s20171208;
	t=1715331124; bh=vpMfqA7uxzhNG8wELHvwQbnQ3W5RsE0QJJu4E7tfvkA=;
	h=Message-ID:Date:From:To:Subject:From:Subject:Feedback-ID:
	 X-Works-Security;
	b=QEiF3SOWpkpwebHnZssAD9JdOgxdhYK8wJP75+e6oFJuoxU3opqnFUft2tRu1GUS9
	 WZ3jgCvJ32Pqk7F4/9iv66uZ83X7QFp9Ix2RqxirlFNK0FFOAqVs7MQLp37Y7Fod63
	 PXsADdnbU4luFvIDuBkghEWg7PrgIk0PSjCS8rp+S1NUu61Pe5JRzoTFDOKX1kZEIc
	 86mqyB6mh5BiP3uvvHQLOUdOCzqwBhGThuGet3ETF+qYEiW9r6fTjeuL0poorIq4Ux
	 yR1UVNlLp22F2UpfvFSDoz5k5HaZmMISZCgOE22cxIaYyqPd/HAWYRhnS4srdy3Mbn
	 JCWo+pf8oIZJg==

DKIM 헤더 구조

v= : 사용되는 DKIM 표시
a= : 디지털 서명 또는 b 를 계산하고, bh 해시 생성하는데 사용되는 알고리즘.
c= : 서명 조건. / relaxed (공백이나 라인 피드 등의 공백 무시) ↔ simple (공백 무시하지 않음)
d= : 송신자의 도메인 이름.
s= : 수신 서버가 DNS 레코드를 조회하는 데 사용해야 하는 선택기(DKIM Selector). DKIM 레코드에서 사용된 Selector와 일치해야 함.
t= : DKIM 서명 유효기간.
bh= : 이메일 본문의 해시.
h= : 디지털 서명을 만드는 데 사용되는 헤더 필드 또는 b 를 나열
b= : hbh 에서 생성되고 개인 키로 서명된 디지털 서명

DMARC레코드

DMARC레코드 (Domain-based Message Authentication, Reporting and Conformance Record) : SPF와 DKIM을 통합하여 이메일 도메인의 인증을 강화하는데 사용.

  • DMARC 레코드는 DMRAC 정책을 담고 있다.
  • DMARC 정책은 SPF 및 DKIM 레코드를 확인한 후 수행할 작업을 수신 이메일 서버에 알려준다.
  • DMARC 정책은 실패할 경우 이메일이 스팸으로 표시, 차단 등의 여부를 결정
#DMARC 예시
v=DMARC1; p=none; sp=quarantine; adkim=r; aspf=r; rua=mailto:mailauth-reports@google.com

DMARC 구조

v=DMARC1 : 이 TXT 레코드를 DMARC 레코드로 해석해야 함.
p= : 이메일 서버가 SPF 및 DKIM에 실패한 이메일을 처리하는 규칙. (quarantine = 격리, none = 통과, reject = 차단)
adkim= : DKIM 검사 수준 (s = 엄격, r = 완화)
aspf= : SPF 검사 수준 (s = 엄격, r = 완화)
rua= : 이메일 발송에 대한 집계 피드백을 보낼 URI를 나타냄. 이메일 발송/실패 통계 정보 등.

PTR레코드

PTR 레코드(DNS Pointer Record) : IP 주소와 연결된 도메인 이름을 제공

  • 도메인 이름과 연결된 IP 주소를 제공하는 A레코드와 반대 개념
  • 리버스 DNS 조회에 사용됨.
#PTR레코드 예시

127.0.0.1 인 경우
PTR레코드 : 127.0.0.1   PTR   1.0.0.127.in-addr.arpa    localhost

(1) IP를 역순으로 만든다.
(2) 역순으로 만든 IP뒤에 .in-addr.arpa 를 붙인다.

CNAME레코드

CNAME레코드(Cononical Name Record) : 도메인의 별칭을 정의하는 레코드.

  • CNAME 레코드를 통해 별칭(alias) 도메인을 정식 도메인 이름으로 매핑할 때 사용.
  • CNAME 레코드를 사용하면 한 도메인의 여러 서브도메인이나 도메인에 대한 요청을 다른 도메인으로 리디렉션 할 수 있음.

    blog.naver.com 은 별칭이다.
    blog.naver.com.nheos.com 는 CNAME 레코드로 정식 도메인이다.
    따라서 blog.naver.com 도메인은 실제로 blog.naver.com.nheos.com 으로 리디렉션 된다는 것을 의미.


💾 참고자료
https://www.cloudflare.com/ko-kr/learning/dns/dns-records/
Google Gemini
OpenAI ChatGPT

profile
안녕하세요. 백엔드 개발자가 되고 싶은 Kade 입니다.

0개의 댓글