DNS Record Type 레코드 종류와 역할
WEB/Domain

DNS Record Type 레코드 종류와 역할

Dns 레코드 유형 및 간단한 dns zone 파일 분석

넷상의 존재하는 네트워크 장비들은 기본적으로 ip를 통해 통신을 하게 됩니다.

다만 이용자, 즉 우리 사람들은 모든 서버의 ip를 외울 순 없습니다.

이를 간단하게 외울 수 있도록 도와주는 것이 도메인(domain)입니다.

ip를 외우는 것 대신 도메인을 외움으로써 좀 더 간단하게 원하는 웹페이지, 필요한 서버 등을 찾을 수가 있습니다.

이 과정에서 ip와 도메인을 매칭해주는 역할을 하는 서버가 필요한데 이를 도와주는 것이

DNS(Domain Name Service) 입니다.

내가 구매한 도메인의 네임서버를 지정해주면 해당 네임서버에서 갖고 있는 dns의 레코드를 통해

이용자가 찾고자 하는 도메인을 ip로 변경하여 통신을 하도록 도와주는 것입니다.

간략하게 아래의 순서로 통신이 이루워집니다.

 

그렇다면 원하는 서버와의 정확한 통신을 위해서는 도메인에 대해서 정확한 레코드 값을 지정함으로써

내가 원하는 서버와 통신이 되도록 만들어야 합니다.

 

DNS 레코드에는 여러 종류가 있습니다. SOA, A, AAAA, NS, MX, CNAME, PTR, TXT, SRV 등의 여러 종류가 있습니다.

이 중 많이 사용되는 레코드들에 대해 알아보겠습니다.

 

SOA (Start Of Authority)

도메인의 시작점, 즉 도메인에 대한 선언을 하는 부분입니다.

SOA 부분에서 도메인의 네임서버, 관리자의 메일, 도메인에 대한 타이머 관련한 설정들을 지정해 줄 수 있습니다.

SOA가 없다면 다른 레코드는 등록할 수 없습니다.

 

A(Host) : 주소/호스트 레코드;

 - 정규화된 도메인 이름/호스트명(FQDN)을 IPV4에 연결한다

(가장 기본이 되는 레코드, 대부분의 서버는 Host Record랑 연동이 되어 있다.)

AAAA : 주소레코드;

 - 호스트를 IPv6에 연결한다

(IPv6 주소를 기준으로 하는 레코드)

 

 

CNAME(Canonical NAME): 별칭 레코드;

 - 실제호스트명(A레코드)과 연결되는 별칭, 별명을 정의 해주는 레코드입니다.

(A 레코드가 있어야 생성 가능, A레코드에 별명을 달아 주는것)

A 레코드와 비슷한 성격을 띄고 있으나, CNAME의 경우, 도메인에 대한 ip를 넣어주는 것이 아닌

도메인에 대해 다른 도메인의 ip 값을 받아 오도록 해주는 것입니다.

예를 들어, abc.abc라는 도메인의 ip 가 123일 때 a.abc.abc라는 도메인을 cname으로 abc.abc. 라는 값을 줄 경우

abc.abc의 ip 주소로 가도록 하는 차이가 있습니다. 하지만 두 도메인은 엄연히 다른 도메인으로 취급됩니다.

즉, apache의 vhost 설정 시 cname으로 등록된 도메인과 a 레코드로 등록된 도메인이 다른 페이지를 띄울 수 있도록

설정이 가능합니다.

 

MX(Mail Exchange) : 메일 교환 레코드;

 - 메일서버(사서함)에 도달할 수 있는 라이팅정보(메일서버)를 제공한다

(Eamil 서버에서 이용)

 

TXT (TeXT)

도메인 이름을 텍스트 문자열에 매치하는데 사용하는 레코드입니다.

위의 레코드들과 다르게 ” “로 내부에 텍스트 열을 넣는 형태의 레코드 입니다.

보통 SPF(Sender Policy Framework) 레코드를 등록하거나 그 외 메일 관련 설정을 위해

많이 사용됩니다.

 

SRV(SeRVice) : 서버 위치 레코드;

(서비스와 연결되어 있는 레코드)

SRV (SeRVice)

특정 서비스에 대한 특정 도메인을 연결해주기 위한 레코드입니다.

레코드 앞에 서비스와 프로토콜을 밑줄(_)과 함께 명시 해놓습니다.

이를 통해 해당 서비스의 경우 지정된 레코드의 값으로 보내게 됩니다.

 

PTR(PoinTeR) : 포인터 리소스 레코드;

역방향 질의(ip > domain)를 위한 레코드 입니다.

 - 다른 DNS레코드를 가리킴, 역방향 조회에서 A레코드를 가리킬때 사용한다

{Pointer Record, 역 방향 레코드 (IP -> 이름)}

보통 메일 서비스 이용 시 혹은 다른 서비스들에서 해당 ip가 사용중인 도메인이 맞는 지 확인하기 위해

이용되며, 호스팅을 받는 입장이라면, 해당 ip를 소유하고 있는 호스팅 업체 측에 등록을 요청해야 합니다.

역방향 질의의 경우 일반 도메인과 다른 ip 대역에 대한 다른 zone 파일에 등록이 필요합니다.

 

SOA(Start Of Authority) : 권한시작 레코드;

 - DNS영역의 주 DNS 서버를 정의하고 일련번호를 통해 영역의 변경사항을 기록한다 또한 보조영역의 새로고침 및 다시시도 간격을 정의하고, 여역의 기본 TTL 값을 정의한다

 

NS(Name Server) : 네임 서버레코드;

 - 영역을 풀이할 수 있는 dns서버의 목록을 가지고 있다

(나를 포함해서 이 영역을 가지고 있는 서버의 이름)

 

NS : 도메인의 네임서버 정보

MX : 도메인의 MX(Mail Exchange) 서버

A : 호스트의 IP주소

CNAME : 별칭(Canonical Name)

SOA : 도메인의 Start Of Authority(시작점)

HINFO : 호스트의 CPU 정보와 운영체제 정보

MINFO : 메일박스와 메일리스트 정보

PTR : IP주소에 대한 호스트명

UINFO : 사용자 정보

ANY : 호스트에 관련된 모든 레코드들의 정보

 

NS = 도메인이 속해 있는 아이피를 찾아오는 레코드

SOA = DNS 서버내에서 각 도메인 여역을 식별하는 레코드

CNAME (Aliases) = 호스트가 다른호스트를 지칭할때 사용하는 레코드

MX = 메일서버 위치정보(IP주소)를 제공하는 레코드 


Linux Bind

리눅스에서 bind를 이용하여 dns를 구축할 때, 간단한 예시의 Zone 파일로 좀 더 확인해보겠습니다.

우선 가장 먼저 TTL(Time To Live)값을 지정해주어야 합니다. TTL 값의 경우 다른 네임 서버들에서 이 도메인에 대해 질의를 해서

정보를 가져갔을 경우, 해당 시간이 지나면 캐시를 삭제하고 다시 값을 받아가도록 지정해주는 시간입니다.

 

다음 SOA를  지정하면서, 네임서버(ns.test.tw)와 관리자 이메일(root.test.tw)라는 값을 지정, 세부 타이머 설정이 가능합니다.

Serial의 경우 2차 네임서버에서 시리얼 값이 갖고있는 zone파일과 비교하였을 때, 1차의 serial값이 클 경우, 1차 네임서버의 zone 파일을 받아가도록 하는 수치입니다.

Refresh의 경우, 2차 네임서버에서 주기적으로 1차 네임서버에 변경된 값이 있는지 체크하는 시간을 지정합니다. sereial 값이 변한 것이 있다면 도메인 정보 변경을 진행합니다.

Retry는 2차 네임서버에서 1차 네임서버로 접근 실패 시, 접근을 시도할 주기를 지정하고 있습니다.

Expire는 2차 네임서버에서 1차 네임서버로 지속적인 접근 실패 시 최대 한도 기간을 지정해주고 있습니다.

지정 시간 동안 정보를 받아오지 못 할 경우, 해당 도메인의 정보를 버리게 됩니다.

SOA 내부 TTL의 경우 zone 파일에 대한 TTL 값입니다.

 

아래 레코드 값들을 살펴 보면, test.tw의 네임서버는 ns.test.tw로 지정이 되어 있습니다.

또한 mail 서버로 mail1.test.tw와 mail2.test.tw가 있고, 우선순위의 경우 mail1이 더 높습니다.

test.tw와 www.test.tw 경우 같은 ip를 갖고 있으며, test.test.tw라는 레코드는

cname으로 test.tw의 ip 값을 받아오고 있습니다.

'WEB > Domain' 카테고리의 다른 글

도메인 호출 루트 dig web interface  (0) 2021.09.21