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

| 2018년 9월 30일 | 0 Comments

넷상의 존재하는 네트워크 장비들은 기본적으로 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가 없다면 다른 레코드는 등록할 수 없습니다.

 

NS (Name Server)

도메인에 대한 네임서버를 지정해 줄 수 있습니다.

DNS를 호스팅 받는 입장이라면 이 레코드에 대해 설정해 줄 것이 없지만,

자체 DNS를 이용하는 입장이라면 꼭 이 레코드를 등록해야만 해당 네임서버를 이용하실 수 있습니다.

 

A, AAAA

가장 단순하며 가장 많이 쓰이는 레코드입니다.

도메인에 대해서 ip를 지정해 줄 수 있습니다.

A의 경우 ipv4, AAAA는 ipv6에 대해 지정을 해줍니다.

 

CNAME(Canonical NAME)

별칭(alias)을 지정해주는 레코드입니다.

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

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

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

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

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

설정이 가능합니다.

 

MX (Mail eXchanger)

해당 도메인의 메일 서버를 지정해 줄 수 있습니다. 꼭 해당 도메인의 이름을 사용할 필요는 없습니다.

MX 레코드의 경우 우선순위(Priority)를 지정하여 여러 메일 서버를 간의 분산이 가능합니다.

우선순위 값이 적을수록 높은 우선순위를 갖게 됩니다.

 

TXT (TeXT)

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

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

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

많이 사용됩니다.

 

SRV (SeRVice)

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

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

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

 

PTR (PoinTeR)

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

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

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

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

 

 

리눅스에서 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 값을 받아오고 있습니다.

Category: 솔루션/IT기타

윤 황용

About the Author ()