강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

zone파일의 설정법과 zone파일 설정 해석하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

zone파일의 설정법과 zone파일 설정 해석하기

 

 

 

 

1. zone파일설정 개론

 

 

 

 

이번에는 /var/named디렉토리에 존재하는 개별도메인들의 zone파일의 설정법과 자세한 설명을 해보도록하겠다.

 

 

 

 

  앞서 말씀하였듯이 네임서버관리자가하는 업무중 가장 반복적인 업무가 도메인의 zone파일을 설정하고 변경하는 일이다.

 

 

 

 

 여기서는 방금 앞에서 새로 생성하였던 owner.co.kr도메인을 예로 들어 보도록하겠다.

 

 

 

 

 

 

/etc/named.conf에서 지정한 대로 zone파일의 위치는 /var/named 디렉토리이다.

 

 

 

 

 하나의 도메인에 대해서 하나의 zone파일을 만들어 주는 것이 가장 일반적이다.

 

 

 

 

 

 

가끔씩 모든 도메인을 하나의 zone파일에 모두 셋팅하여 사용하는 분들을 볼 수 있다.

 

 

 

 

 아마도 관리의 편리성으로 인하여 하나의 zone파일에 모든 도메인 정보를 설정하여 사용하는 것 같지만 이 방법은 그다지 좋은 방법은 아니다.

 

 

 

 

  모든 도메인에 대한 정보가 설정된 zone파일에 문제가 발생한다면 설정된 모든 도메인에 대한 네임서비스가 중단될 것이다.

 

 

 

 

 

 

하나의 zone파일에 모든 도메인을 셋팅하여 관리하느냐 아니면 여기서 설명하는 것처럼 하나의 도메인에 하나의 zone파일을 사용하느냐의 문제는 전적으로 관리자에게 달려있지만 가능한 하나의 도메인에 하나의 zone파일을 사용하라고 강력히 권장한다 .

 

, 이제 앞에서 설정하였던 /var/named/owner.co.kr.zone파일을 다시한번 살펴보도록 하겠다.

 

 

 

 

 

 

[root@sulinux named]#cat /var/named/owner.co.kr.zone

$TTL 86400

@       IN      SOA     localhost root.localhost (

                        2019041201      ; Serial

                        3H              ; Refresh

                        15M             ; Retry

                        1W              ; Expire

                        86400)          ; Minimum

;

        IN      NS      ns.linux.co.kr.         ;

        IN      NS      ns2.linux.co.kr.        ;

        IN      MX      10 mail.owner.co.kr.    ;

IN      MX      20 mail2.owner.co.kr.   ;

        IN      A       192.168.0.251           ;

www     IN      A       192.168.0.251           ;

mail    IN      A       192.168.0.251           ;

*       IN      A       192.168.0.251           ;

[root@sulinux named]#

 

 

 

이제 이 예에서 볼 수 있는 각 지시자들과 항목들에 대해서 하나씩 설명하도록하겠다.

 

 

 

 

 

 

 

2. $TTL의 의미

 

 

 

이값의 의미를 이해하는 것은 굉장히 중요하다.

 

 

 

 

 네임서버관리자 뿐아니라 모든 서버관리자들이 이 값의 의미를 정확하게 알아야한다.

 

 

 

 

 이 값은 Minimum(TTL, Time to Live)항목에 설정되어있는 값과 의미가 같은 것이다.

 

 

 

 

 owner.co.kr도메인에 대한 정보( zone파일내에 있는 정보들)를 다른 네임서버에서 가져간 다음 가져간 네임서버에 얼마나 보관할 것인가를 지정한 것이다.

 

 

 

 

 owner.co.kr.zone파일의 정보를 다른 서버에서 가져간 후에 그 서버의 캐시(cache)에 얼마나 보관할 것인가에 대한 시간을 초로 설정해 둔 것이다.

 

 

 

 

 여기에서는 86400(24시간)로 설정되어있으므로 이 정보를 가져간 네임서버에서는 가져간 후로부터 86400초동안에는 다시 질의하지 않고 캐시에 저장된 그 값으로 계속 서비스를 한다.

 

 

 

 

 이 값을 TTL값이라고 하며 다른 말로는캐시활성화시간이라고도 한다.

 

 

 

 

 따라서 86400초가 지나게 되면 캐시에서 그 값을 삭제하고 다시 이 네임서버에서 값을 받아가게 된다.

 

 

 

 

 

 

우리가 흔히 도메인의 IP주소를 변경하였을 경우에 하루정도가 지난후에 바뀐 IP주소를 인식하게되는 이유가 바로 이값 때문이다.

 

 

 

 

 

 

 

3. @의 의미

 

 

 

 

zone파일내에서 @origin도메인을 의미하는 것으로서 /etc/named.conf파일에 설정되어 있는 도메인명(여기서는 owner.co.kr)을 의미한다.

 

 

 

 

  따라서 @기호 대신 owner.co.kr.이라는 도메인을 지정해도 되지만 이때에는 owner.co.kr.이라는 도메인의 끝부분에 반드시 .(마침표)를 표시해주어야 한다.

 

 

 

 

 여기서 .(마침표)는 루트도메인을 뜻하는 것이다.

 

 

 

 

 

 

 

4. SOA의 의미


 

 

SOA “start of authority”의 약어로서 해당 도메인(owner.co.kr)에 대하여 여기서 설정한 네임서버가 모든 정보를 가지고 있음을 선언하는 것으로 owner.co.kr도메인에 대한 네임서비스의 모든 권한이 여기에 있다라는 것을 의미한다.

 

 

 

 

 이 행에서 지정한 “ns.dns.co.kr.”는 네임서버를 의미하며 “root.owner.co.kr.” root@owner.co.kr을 의미하는 것으로 owner.co.kr도메인의 관리자 Email주소를 의미한다.

 

 

 

 

 주의할 것은 @기호를 사용해서는 안되며 반드시 .()을 사용해야 한다.

 

 

 

 

 

 

 

5. 2019041201      ; Serial의 의미

 

 

 

 

이 부분부터 이하의 Refresh, Retry, Expire, Minimum값들은 모두 secondary 네임서버와 primary 네임서버와의 연동을 어떻게 할 것인가에 대한 설정부분이다.

 

 

 

 

 primary 네임서버에 이상이 발생했을 경우에는 secondary 네임서버가 그 역할을 대신하도록하기 위해서 secondary 네임서버에서는 primary 네임서버의 정보를 참조하여 계속 업데이트하게 된다.

 

 

 

 

 이때 secondary 네임서버가 primary 네임서버의 정보를 어떻게, 얼마나 자주 갱신 할 것인가를 설정해 놓은 것이 이 부분이다.

 

 

 

 

 

먼저 Serial이라는 값의 형식은 정해진 것은 없지만 거의 대부분 “YYYYMMDDNN”과 같은 형식을 사용한다.

 

 

 

 

 2019 04 12 01번째 설정한 것을 표현하려면 “2019041201”과 같이 설정한다.

 

 

 

 

 대부분 도메인설정은 1차네임서버에서 하고 2차네임서버는 1차네임서버의 설정값을 주기적으로 가져가게 되어있다.

 

 

 

 

 1차네임서버 해당 도메인zone파일을 변경 및 추가할 때마다 serial값을 올려주게 된다.

 

 

 

 

그러면 2차네임서버(Secondary 네임서버) serial값보다  1차네임서버(Primary 네임서버) serial값이 크기 때문에 2차네임서버에서는 해당 도메인이 변경된 것으로 인식하고 기존의 zone파일을 새로운 zone파일로 업그레이드한다.

 

 

 

 

 

 

따라서 도메인을 셋팅하는 1차네임서버에서 zone파일을 갱신하거나 수정 편집할 때에는 반드시 변경되었다는 표시를 알려주기 위하여 serical값을 1이상 증가시켜야 한다.

 

 

 

 

 

 

참고로 세미콜론(;) 뒷부분 부터는 모두 주석처리된다.

 

 

 

 

 따라서 세미콜론(;)뒷부분은 설명을 위한 주석부분이므로 크게 신경쓰지 않아도 된다.

 

 

 

 

 

 


6. 3H              ; Refresh의 의미

 

 

 

2차네임서버에서는 1차네임서버의 변경된 값들이 있는가를 주기적으로 체크하게 된다.

 

 

 

 

 이때에 체크할 주기를 결정한 값이 refresh값이다.

 

 

 

 

 2차네임서버는 해당 도메인의 변경된 정보에 대하여 3H(3시간)에 한번씩 1차네임서버에 문의하여 체크하게 된다.

 

 

 

 

 변경되었는지의 여부는 앞에서 설정한 serial값이 증가되었는가에 따라서 판단한다.

 

 

 

 

  개별도메인들의 zone파일이 모두 다르듯이 각 도메인에 따른 refresh주기 또한 다를 수 있다.

 

 

 

 

 자주 변경되는 도메인은 체크주기를 보다 짧게 하고 거의 변경되는 경우가 없는 도메인은 보다 긴 값을 설정해 두는 것이 DNS서버를 효율적으로 관리하는 하나의 방법이다.

 

 

 

 

 


7. 15M             ; Retry의 의미

 

 

 

2차네임서버에서 1차네임서버로의 접근이 안될 경우에 2차네임서버는 계속해서 주기적으로 접근시도를 한다.

 

 

 

 

 이때 얼마만에 한번씩 접근시도를 할 것인가를 결정하는 값이 retry값이다.

 

 

 

 

 앞의 refresh값하고는 다른 의미를 가지는 값으로 retry값은 연결이 안될 경우에 연결을 하기위한 주기설정값이다.

 

 

 

 

 여기에서는 retry값으로 15M(15, 900)를 설정하였으므로 1차네임서버와 연결이 안되고있는 2차네임서버는 15(900)마다 한번씩 연결을 시도하게 된다.

 

 

 

 

 참고로 앞의 refresh값은 도메인의 설정정보의 변경된 값을 체크하기 위한 주기설정값이다.

 

 

 

 

 

8. 1W              ; Expire의 의미

 

 

 

 

특정도메인의 정보를 가져오기 위하여 2차네임서버는 1차네임서버에 연결을 바로 위에서 설정한 retry주기마다 한번씩 지속적으로 연결을 시도하였으나 결국 여기서 설정한 expire시간 동안 계속해서 연결되지 않을 경우에 2차네임서버는 해당 도메인의 정보가 삭제되었거나 패기되었다고 판단하고 이후 부터는 연결시도를 하지 않게 된다.

 

 

 

 

이에 대한 예로서 1차네임서버에 설정되어있던 특정도메인의 사용자가 해지를 신청하였기 때문에 DNS관리자가 해당 도메인의 정보(zone파일등)를 삭제하였다.

 

 

 

 

이 경우에 expire기간 동안에 연결되지 않은 도메인에 대해서는 2차네임서버에서는 삭제된 도메인이라고 인식하게 된다는 것이다.

 

 

 

 

 

 



9. 86400)            ; Minimum의 의미

 

 

 

 

 

이 값은 다른 말로 TTL값이라고 한다.

 

 

 

 

  TTL이란 “Time to Live”를 의미하는 것으로 해당 도메인의 정보를 다른 네임서버에서 가져갔을 때에 가져간 도메인정보를 얼마나 보관하고 있을 것인가에 대한 시간값을 초단위로 설정해 둔 것이다.

 

 

 

 

 zone파일의 맨첫번째 행에 설정하는 $TTL값과 같은 의미의 값이라고 생각하면 된다.

 

 

 

 

 즉 해당도메인의 정보를 가져간 후에 가져간 네임서버에서는 86400초만큼의 시간동안은 캐시에 보관하고 계속 동일한 정보로 서비스하게 된다.

 

 

 

 

 그리고 86400초가 지나게 되면 원래정보를 버리고 다시 이 네임서버에게 연결하여 해당도메인의 정보를 가져가고 86400초만큼 캐시에 보관하게 된다.

 

 

 

 

 

 

즉 결론적으로 특정도메인의 정보가 변경되었을 경우, 특히 IP주소가 변경되었을 경우에 최대 이 시간동안은 변경된 정보가 적용되지 않을 수 있다라는 의미가 된다.

 

 

 

 

 네임서버가 워낙 많이 존재하기 때문에 변경된 정보값이 적용되는 시간이 또한 다를 수 있다는 점도 함께 알아두기 바란다.

 

 

 

 

 

 

 

10. NS 레코드의 의미


 

 

NS레코드는 해당 도메인의 네임서버를 지정하는 레코드이다.

 

 

 

 

 즉 다음의 설정예를 보기 바란다.

 

 

 

 

 

 

IN      NS      ns.linux.co.kr.         ;

IN      NS      ns2.linux.co.kr.        ;

 

 

 

 

이 도메인에 대한 1차네임서버가 ns.linux.co.kr이라는 것과 2차네임서버가 ns2.linux.co.kr이라는 것을 설정한 것이다.

 

 

 

 

 

 

 

11. A 레코드의 의미


 

 

A레코드는 해당도메인의 실제 IP주소를 설정하는 레코드이다.

 

 

 

 

 아래의 예를 보기 바란다.

 

 

 

 

 

 

IN      A       192.168.0.251           ;

www     IN      A       192.168.0.251           ;

mail    IN      A       192.168.0.251           ;

*       IN      A       192.168.0.251           ;

 

 

 

첫번째 행의 의미는 해당도메인(owner.co.kr) IP주소가 192.168.0.251이라는 것을 설정한 것이며 두번째행의 의미는 www.owner.co.kr IP주소가 192.168.0.251라는 것을 설정한 것이며 세번째행에서는 mail.owner.co.kr도메인의 IP주소가 192.168.0.251이라는 것을 지정하였고 네번째행에서는 그외 모든 owner.co.kr도메인에 대한 서브도메인들 (*.owner.co.kr) IP주소를 192.168.0.251로 설정하겠다는 의미이다.

 

 

 

 

  

 

이번 예에서는 하나의 도메인에 대한 서브도메인들의 IP주소가 모두 동일하게 설정되어있지만 서브도메인들 마다 각각 다르게 설정할 수도 있다.

 

 

 

 

 

즉 예를들어 다음과 같이 설정할 수 있다.

 

 

 

 

 

웹서버 www.owner.co.kr IP주소는 192.168.0.251로 하고,
메일서버 mail.owner.co.kr IP주소는 192.168.0.252로 하고,
FTP
파일서버 ftp.owner.co.kr의 IP주소는 192.168.0.253으로 각각 설정할 수 있다.

 

 

 

 

 

이와 같이 사용하려면 다음과 같이 설정하면 된다.

 

 

 

 

 

 

www             IN      A       192.168.0.251
mail            IN      A       192.168.0.252
ftp             IN      A       192.168.0.253

 

 

 

 

물론 각 도메인들이 완전히 다른 네트워크의 IP주소를 가지게 설정할 수도 있다.

 

 

 

 

 그리고 위의 예에서 사용한 www, 그리고 bbs, 그리고 ftp등은 모두 호스트명으로 인식된다.

 

 

 

 

 따라서 호스트명 뒤에 owner.co.kr이라는 도메인명은 자동으로 붙게된다.

 

 

 

 

 

 

위의 설정은 다음과 같이 설정하여 사용할 수도 있다.

 

 

 

 

 

 

www.owner.co.kr             IN      A       192.168.0.251
mail.owner.co.kr            IN      A       192.168.0.252
ftp.owner.co.kr             IN      A       192.168.0.253

 

 

 

 

즉 완전한호스트명+도메인명으로 사용해도 된다는 것을 알아두기 바란다.

 

 

 

 

 

 

 

12. MX 레코드의 의미


 

 

MX 레코드는 “Mail eXchanger”의 약어로서 해당 도메인의 메일서버로 사용하게될 메일서버를 지정한 것이다.

 

 

 

 

 주의 할 것은 MX레코드에서는 IP주소로 지정하셔도 되지만 가능하면 도메인명으로 지정하는 것이 좋다.

 

 

 

 

 

 

IN          MX      10    mail.owner.co.kr
IN          MX      20    mail2.owner.co.kr

 

 

 

 

owner.co.kr의 해당 메일들을 어떤 메일서버에서 받도록 할 것인가를 지정한 것으로 예를들어 bible@owner.co.kr에 관한 메일은 처음에 mail.owner.co.kr가 처리하도록한다.

 

 

 

 

 만약 mail.owner.co.kr서버가 다운되었거나 처리되지 않을 때에는 mail2.owner.co.kr이 받아서 보관하게 되며 다시 mail.owner.co.kr이 정상화 되었을 때에는 mail2.owner.co.kr서버는 mail.owner.co.kr서버로 그 메일을 보내주게 된다.

 

 

 

 

 이때 mail2.owner.co.kr서버의 /etc/mail/local-host-names에는 메일주소의 도메인이 등록되어있으면 안된다.

 

 

 

 

 만약 mail2.owner.co.kr서버의 /etc/mail/local-host-names파일에 해당 도메인이 등록되어 있을 경우에는 mail2.owner.co.kr서버가 최종 수신지 서버가 되기 때문에 받은 메일을 mail.owner.co.kr로 보내주지 않게 된다.

 

 

 

 

 

 

그리고 MX뒤에있는 숫자는 우선순위를 표시하는 것으로 상대적인 값으로만 인식한다.

 

 

 

 

 즉 숫자가 낮은 메일서버에서 먼저 처리하도록 되어있다.

 

 

 

 

 

 

 

13. CNAME 레코드의 의미

 

 

 

 

앞의 owner.co.kr.zone파일의 내용을 나타낸 예에서는 설정하지 않은 레코드이지만 다음레코드들도 알아두면 좋다.

 

 

 

 

 CNAME 레코드는 “Canonical NAME”의 약어로서 특정도메인에 대한 서브도메인을 사용하기 위한 레코드이다.

 

 

 

 

 다음 예를 보기 바란다.

 

 

 

 

 

 

www                    IN           A           192.168.0.201
ftp                    IN           CNAME       www

 

 

 

 

위의 예에서 첫번째행은 A레코드에 대한 것으로 앞서 설명한 바와같이 www.owner.co.kr IP주소가 192.168.0.201이라는 것을 지정한 것이며 두번째행에서는 ftp라는 이름을 www라는 별칭으로 사용할 수 있도록 설정한 것이다.

 

 

 

 

 www라는 호스트명과 ftp라는 호스트명이 동일한 IP주소로 매핑된다는 의미이다.

 

 

 

 

 따라서  www.owner.co.kr IP주소가 192.168.0.201이므로 ftp.owner.co.kr IP주소 또한 192.168.0.201이 된다는 의미이다.

 

 

 

 

 

지금까지 설명한 zone파일의 레코드들은 자주 사용되는 레코드들이다.

 

 

 

 

 다음 설명드리는 레코드들은 많이 사용되지않지만 참고로 간단히 설명한다.

 

 

 

 

 

 

 

14. HINFO 레코드의 의미

 

 

 

 

HINFO레코드는 “Host INFOmation”의 약어로서 해당 도메인의 호스트정보를 설정하는 레코드이다.

 

 

 

 

 여기서 호스트정보란 해당 도메인이 사용하고있는 서버의 하드웨어(CPU)와 운영체제에 대한 정보들을 의미한다.

 

 

 

 

 다음 예를보기 바란다.

 

 

 

 

 

 

Alpha               IN                A           192.168.1.101
HINFO                         “alpha-533” “Fedora Core 10”

 

 

 

 

위의 예는 owner.co.kr이 가지는 호스트정보로서 alpha-533이라는 CPU“Fedora Core 10”라는 운영체제를 사용하고 있다는 것을 설정한 것이다.

 

 

 

 

 사실 이 레코드는 정보유출의 우려로 인하여 그다지 많이 사용되지는 않다.

 

 

 

 

 관리자에 의해 설정될 수 있는 값이므로 설정된 값 또한 100% 신뢰할 수 있는 값은 아니다.

 

 

 

 

 

 

 

15. 기타 zone파일에서 사용하는 레코드들



 

 

UINFO 레코드

 

 

UINFO레코드는 “User INFOmation”의 약어로서 해당 도메인의 사용자정보를 설정하기 위한 레코드이다.

 

 

 

 

 

 

MINFO 레코드

 

 

MINFO레코드는 “Mail INFOmation”의 약어로서 해당 도메인의 Email정보를 설정하기 위한 레코드이다.

 

 

 

 

 

 

PTR 레코드

 

 

PTR레코드는 “Pointer”의 약어로서 해당 도메인에 대한 인버스기능을 설정하기 위한 도메인으로서 IP주소에 대한 도메인명을 매핑하기위해 사용된다.

 

 

 

 

 

 

TXT 레코드

 

 

TXT레코드는 해당도메인의 텍스트(text)정보를 설정하기 위한 레코드이다.

 

 

 

 

 

 

WKS 레코드

 

 

WKS레코드는 해당도메인의 주된 서비스정보를 설정하기 위한 레코드이다.

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,807 개
  • 현재 접속자 :  130 명