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

리눅스마스터1급 : DNS 설정 및 고급활용

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: DNS 설정하기 및 고급활용하기

 

 



1) BIND 설치

 

 

리눅스의 대표적인 DNSbind이다.

 

 

 

bind는 대부분의 배포판에서 패키지 형태로 제공하고, yum, apt-get, yast등의 패키지관리 프로그램으로 설치 할 수 있다.

 

 

 

다음과 같이 yum 프로그램으로 설치 해 보자.

 

 

 

 

 

yum install bind bind-libs bind-chroot bind-utils caching-nameserver

 

 

 

 

 

위 패키지들은 bind관련 패키지이다.

 

dnf로도 설치할 수 있으며.. 다음과 같이 설치한다.

 

 

[root@RockyLinux01 ~]# dnf -y install bind

Docker CE Stable - x86_64 25 kB/s | 3.5 kB 00:00

Rocky Linux 9 - BaseOS 5.5 kB/s | 4.1 kB 00:00

Rocky Linux 9 - AppStream 6.7 kB/s | 4.5 kB 00:00

Rocky Linux 9 - Extras 4.4 kB/s | 2.9 kB 00:00

종속성이 해결되었습니다.

========================================================================================================================

꾸러미 구조 버전 레포지터리 크기

========================================================================================================================

설치 중:

bind x86_64 32:9.16.23-11.el9 appstream 488 k

향상 중:

bind-libs x86_64 32:9.16.23-11.el9 appstream 1.2 M

bind-license noarch 32:9.16.23-11.el9 appstream 13 k

bind-utils x86_64 32:9.16.23-11.el9 appstream 200 k

python3-bind noarch 32:9.16.23-11.el9 appstream 61 k

종속 꾸러미 설치 중:

bind-dnssec-doc noarch 32:9.16.23-11.el9 appstream 46 k

취약한 종속 꾸러미 설치 중:

bind-dnssec-utils x86_64 32:9.16.23-11.el9 appstream 113 k

 

연결 요약

========================================================================================================================

설치 3 꾸러미

향상 4 꾸러미

 

총계 내려받기 크기: 2.1 M

꾸러미 내려받기 중:

(1/7): bind-dnssec-doc-9.16.23-11.el9.noarch.rpm 538 kB/s | 46 kB 00:00

(2/7): bind-dnssec-utils-9.16.23-11.el9.x86_64.rpm 1.2 MB/s | 113 kB 00:00

(3/7): bind-9.16.23-11.el9.x86_64.rpm 3.6 MB/s | 488 kB 00:00

(4/7): python3-bind-9.16.23-11.el9.noarch.rpm 2.8 MB/s | 61 kB 00:00

(5/7): bind-utils-9.16.23-11.el9.x86_64.rpm 2.6 MB/s | 200 kB 00:00

(6/7): bind-license-9.16.23-11.el9.noarch.rpm 746 kB/s | 13 kB 00:00

(7/7): bind-libs-9.16.23-11.el9.x86_64.rpm 4.8 MB/s | 1.2 MB 00:00

------------------------------------------------------------------------------------------------------------------------

합계 2.0 MB/s | 2.1 MB 00:01

연결 확인 실행 중

연결 확인에 성공했습니다.

연결 시험 실행 중

연결 시험에 성공했습니다.

연결 실행 중

준비 중 : 1/1

향상 중 : bind-license-32:9.16.23-11.el9.noarch 1/11

향상 중 : bind-libs-32:9.16.23-11.el9.x86_64 2/11

향상 중 : bind-utils-32:9.16.23-11.el9.x86_64 3/11

설치 중 : bind-dnssec-doc-32:9.16.23-11.el9.noarch 4/11

향상 중 : python3-bind-32:9.16.23-11.el9.noarch 5/11

설치 중 : bind-dnssec-utils-32:9.16.23-11.el9.x86_64 6/11

스크립트릿 실행 중: bind-32:9.16.23-11.el9.x86_64 7/11

설치 중 : bind-32:9.16.23-11.el9.x86_64 7/11

스크립트릿 실행 중: bind-32:9.16.23-11.el9.x86_64 7/11

정리 : bind-utils-32:9.16.23-5.el9_1.x86_64 8/11

정리 : python3-bind-32:9.16.23-5.el9_1.noarch 9/11

정리 : bind-libs-32:9.16.23-5.el9_1.x86_64 10/11

정리 : bind-license-32:9.16.23-5.el9_1.noarch 11/11

스크립트릿 실행 중: bind-license-32:9.16.23-5.el9_1.noarch 11/11

/usr/lib/tmpfiles.d/cups-lp.conf:6: Failed to resolve group 'lp'.

/usr/lib/tmpfiles.d/cups-lp.conf:7: Failed to resolve group 'lp'.

/usr/lib/tmpfiles.d/cups-lp.conf:8: Failed to resolve group 'lp'.

/usr/lib/tmpfiles.d/cups-lp.conf:9: Failed to resolve group 'lp'.

/usr/lib/tmpfiles.d/cups.conf:3: Failed to resolve group 'lp'.

/usr/lib/tmpfiles.d/cups.conf:4: Failed to resolve user 'lp': No such process

 

확인 중 : bind-dnssec-utils-32:9.16.23-11.el9.x86_64 1/11

확인 중 : bind-32:9.16.23-11.el9.x86_64 2/11

확인 중 : bind-dnssec-doc-32:9.16.23-11.el9.noarch 3/11

확인 중 : bind-utils-32:9.16.23-11.el9.x86_64 4/11

확인 중 : bind-utils-32:9.16.23-5.el9_1.x86_64 5/11

확인 중 : bind-libs-32:9.16.23-11.el9.x86_64 6/11

확인 중 : bind-libs-32:9.16.23-5.el9_1.x86_64 7/11

확인 중 : python3-bind-32:9.16.23-11.el9.noarch 8/11

확인 중 : python3-bind-32:9.16.23-5.el9_1.noarch 9/11

확인 중 : bind-license-32:9.16.23-11.el9.noarch 10/11

확인 중 : bind-license-32:9.16.23-5.el9_1.noarch 11/11

 

향상되었습니다:

bind-libs-32:9.16.23-11.el9.x86_64 bind-license-32:9.16.23-11.el9.noarch bind-utils-32:9.16.23-11.el9.x86_64

python3-bind-32:9.16.23-11.el9.noarch

설치되었습니다:

bind-32:9.16.23-11.el9.x86_64 bind-dnssec-doc-32:9.16.23-11.el9.noarch bind-dnssec-utils-32:9.16.23-11.el9.x86_64

 

완료되었습니다!

[root@RockyLinux01 ~]#

 

 

 

 

 

 

bind가 설치된 것을 다음과 같이 확인한다.

 

[root@RockyLinux01 ~]# rpm -qa | grep bind

rpcbind-1.2.6-5.el9.x86_64

bind-license-9.16.23-11.el9.noarch

bind-libs-9.16.23-11.el9.x86_64

bind-utils-9.16.23-11.el9.x86_64

bind-dnssec-doc-9.16.23-11.el9.noarch

python3-bind-9.16.23-11.el9.noarch

bind-dnssec-utils-9.16.23-11.el9.x86_64

bind-9.16.23-11.el9.x86_64

[root@RockyLinux01 ~]#

 

 

 

이 중 bind-chroot는 악의적인 사용자로부터 bind를 보호하기 위한 방법이다.

 

 

 

chroot를 적용하게 되면, bind가 작동하는 동안은 지정한 경로(/var/named/chroot)“/”가 된다.

 

 

 

그렇기 때문에 /var/named/chroot이외의 디렉토리를 벗어나지 못하게 된다.

 

 

 

이렇게 설정하게 되면 혹 모를 bind의 버그를 통하여 침입을 한다고 하여도 지정한 경로(/var/named/chroot)외부로 나갈 수 없게 되어 안전하다.

 

 

 

 

 

그리고 caching-nameserver 패키지는 캐시 DNS 관련 설정파일이 포함된 패키지이다.

 

 

 

주 설정파일들은 다음과 같다.

 

 

 

 

 

/etc/named.conf 네임서버 데이터베이스 및 zone 파일의 위치, 접근제어등의 보안설정을 할 수 있는 메인 설정 파일이다.

 

 

 

[root@RockyLinux01 ~]# ls -l /etc/named.conf

-rw-r----- 1 root named 1722 427 16:57 /etc/named.conf

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# cat /etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

 

options {

listen-on port 53 { 127.0.0.1; };

listen-on-v6 port 53 { ::1; };

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

memstatistics-file "/var/named/data/named_mem_stats.txt";

secroots-file "/var/named/data/named.secroots";

recursing-file "/var/named/data/named.recursing";

allow-query { localhost; };

 

/*

- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.

- If you are building a RECURSIVE (caching) DNS server, you need to enable

recursion.

- If your recursive DNS server has a public IP address, you MUST enable access

control to limit queries to your legitimate users. Failing to do so will

cause your server to become part of large scale DNS amplification

attacks. Implementing BCP38 within your network would greatly

reduce such attack surface

*/

recursion yes;

 

dnssec-validation yes;

 

managed-keys-directory "/var/named/dynamic";

geoip-directory "/usr/share/GeoIP";

 

pid-file "/run/named/named.pid";

session-keyfile "/run/named/session.key";

 

/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */

include "/etc/crypto-policies/back-ends/bind.config";

};

 

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

 

zone "." IN {

type hint;

file "named.ca";

};

 

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

 

[root@RockyLinux01 ~]#

 

 

 

 

 

/var/named 네임서버의 zone 파일이 존재하는 디렉토리이다.

 

[root@RockyLinux01 ~]# ls -l /var/named

합계 16

drwxrwx--- 2 named named 6 427 16:57 data

drwxrwx--- 2 named named 6 427 16:57 dynamic

drwxr-xr-x 2 root root 6 512 11:51 dyndb-ldap

-rw-r----- 1 root named 2253 427 16:57 named.ca

-rw-r----- 1 root named 152 427 16:57 named.empty

-rw-r----- 1 root named 152 427 16:57 named.localhost

-rw-r----- 1 root named 168 427 16:57 named.loopback

drwxrwx--- 2 named named 6 427 16:57 slaves

[root@RockyLinux01 ~]#

 

 

2) 주네임 서버로 설정

 

 

주 네임서버는 자신이 도메인 등록기관을 통해 등록한 도메인에 대한 정보를 관리하기 위한 네임 서버 이다.

 

 

 

예를 들자면 "sulinux.net"이라는 도메인을 도메인 등록기관을 통해 등록했다면, DNS 정보를 입력하게 된다.

 

 

 

이 때 입력하는 DNS 정보가 주네임 서버 및 보조 네임서버이다.

 

 

 

주 네임 서버 정보를 "ns.superuser.co.kr"으로 등록 했다면, ns.superuser.co.kr 네임 서버에서는 다음과 같이 설정해야 할 것이다.

 

 

 

 

 

/etc/named.conf 파일 설정

 

named.conf 파일에 "sulinux.net"도메인에 대한 zone 관련 설정을 한다.

 

 

 

다음과 같이 추가 한다.

 

 

 

 

 

 

 

 

 

zone "sulinux.net" IN {type master; file "sulinux.net.zone"; allow-update { none; }; };

 

 

 

 

 

 

위 설정은 "sulinux.net" 도메인은 typemaster 이고, 파일은 "sulinux.net.zone"으로 설정되었다.

 

 

 

zone 파일이 기본 저장되는 경로는 "/var/named/"이지만, 위에서 bind-chroot패키지가 설치되어 설정되었다면, zone 파일 위치는 “/var/named/ chroot/var/named/"이다.

 

 

 

DNS이기 때문에 업데이트를 허용하지 않는다.

 

 

 

 

zone 파일 설정

위에서 설명하였듯 zone 파일의 위치는 chroot를 적용하여 "/var/named/chroot /var/named/"가 될 것이며, 이 디렉토리에 "sulinux.net.zone"파일을 생성하고 다음과 같이 입력한다.

 

 

 

 

 

 

 

 

 

$TTL 86400

@ IN SOA ns.superuser.co.kr. root.sulinux.net. (

2013060712 ; 시리얼값 (년월일시간)으로 대부분 셋팅

3H ; 보조 네임서버가 주 네임서버에 접속하는 시간

15M ; 접속 실패시 다시 시도할 시간 간격

1W ; 주 네임서버에서 데이터가 없다면 1주 이후에 지워짐

1D ) ; 위에서 설정한 TTL 값과 같은 의미

;

IN NS ns.superuser.co.kr. ; 도메인을 소유한 주 DNS의 도메인

IN NS ns2.superuser.co.kr. ; 도메인을 소유한 보조 DNS의 도메인

IN MX 10 mail.sulinux.net. ; 메일을 보낼 도메인 또는 주소

IN TXT "v=spf1 ip4:192.168.0.1 ~all"

IN A 192.168.0.1 ; 도메인이 찾아갈 IP 주소

www IN A 192.168.0.1 ; www.도메인이 찾아갈 IP주소

mail IN A 192.168.0.1 ; 메일서버 아이피

* IN A 192.168.0.1 ; 모든 서브 도메인이 찾아갈 서버 ip 주소

 

 

 

 

 

 

 

위에서 설정한 zone 파일 내용을 자세히 살펴보자.

 

 

 

$TTL

이 값은 아래 소개되는 SOA 레코드의 Minimum(TTL,Time to Live)항목에 설정되어 있는 값과 의미가 같은 것이다.

 

 

 

예전 버전의 bind 경우는 $TTL이 따로 빠져 있지 않았지만, bind9버전부터는 zone파일의 최상단에 설정하게 되어있다.

 

 

 

$TTL값이 SOA레코드의 Minimum 보다 우선한다.

 

 

 

위 설정에서 TTLsulinux.net 도메인에 대한 정보를 캐시 네임서버에서 가져간 다음 캐시 네임서버에 얼마나 보관할 것인가를 지정한 것이다.

 

 

 

 

@

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

 

 

 

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

 

 

 

 

 

SOA 레코드

SOA“Start Of Authority"의 약어로서 해당 도메인(sulinux.net)에 대해여 여기서 설정한 네임서버가 모든 정보를 가지고 있음을 선언한 것으로 sulinux.net 도메인에 대한 네임서비스의 모든 권한이 여기에 있음을 의미한다.

 

 

 

 

 

Serial

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

 

 

 

시리얼 값은 정해진 규칙은 없지만 보통 “YYYYMMDDNN"과 같은 형식을 사용한다.

 

 

 

대부분 도메인설정은 주 네임서버에서 하고 보조네임서버는 주 네임서버의 설정 값을 주기적으로 가져가게 되는데 주 네임서버의 serial 값을 높혀 주게 되면 보조 네임서버에서 설정이 변경되었음을 인지하고 zone 파일을 새로운 zone파일로 갱신하게 된다.

 

 

 

 

 

Refresh

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

 

 

 

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

 

 

 

 

 

Retry

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

 

 

 

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

 

 

 

 

 

Expire

 

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

 

 

 

 

 

Minimum

 

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

 

 

 

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

 

 

 

 

 

NS레코드

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

 

 

 

 

 

 

 

 

 

IN NS ns.superuser.co.kr

IN NS ns2.superuer.co.kr

 

 

 

 

 

 

 

이 도메인에 대한 주 네임서버가 ns.superuser.co.kr 이라는 것과 보조 네임서버가 ns2.superuser.co.kr 이라는 것을 설정한 것이다.

 

 

 

 

 

A레코드

 

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

 

 

 

 

 

 

 

 

IN A 192.168.0.1

www IN A 192.168.0.1

mail IN A 192.168.0.2

 

 

 

 

 

 

첫 번째 행의 의미는 해당도메인(sulinux.net)IP주소가 192.168.0.1이라는 것이고, 두 번째 행의 의미는 www.sulinux.net IP주소가 192.168.0.1이라는 것이다.

 

 

 

그리고 mail.sulinux.netIP주소는 192.168.0.2를 의미한다.

 

 

 

 

 

MX레코드

 

MX레코드는 "Mail eXchanger"의 약자로서 해당 도메인으로 메일을 사용할 경우 메일서버를 지정한 것이다.

 

 

 

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

 

 

 

(주의) 도메인으로 지정할 경우 다음과 같이 꼭 “.”으로 끝나야 한다.

 

 

 

“.”으로 끝나지 않으면 "mail.sulinux.net.sulinux.net"과 같이 "mail.sulinux.net"을 서브 도메인으로 보게 된다.

 

 

 

 

 

 

 

 

 

IN MX 10 mail.sulinux.net.

IN MX 20 mail2.sulinux.net.

mail IN A 192.168.0.2

mail2 IN A 192.168.0.3

 

 

 

 

 

 

MX 다음의 숫자는 메일처리의 우선순위를 명시한 것이다.

 

 

 

위 설정은 메일 큐잉서비스를 하기 위해 설정하는 것이다.

 

 

 

위와 같이 설정하게 되면 sulinux.net 으로 들어오는 메일은 mail.sulinux.netmail2.sulinux.net으로 분산 되어 수신된다.

 

 

 

그러나 mail2.sulinux.net은 메일을 다시 mail.sulinux.net으로 보내게 된다.

 

 

 

결론적으로 메일은 숫자가 가장 적은 mail.sulinux.net 으로 메일을 보내게 된다.

 

 

 

이 설정은 메일 수신량이 많은 메일서버에 어떠한 이유로 메일서버가 장애가 났을 경우 숫자가 높은 메일서버에서 메일을 보관하고 있다 숫자가 낮은 서버가 정상화가 되면 다시 보내주게 된다.

 

 

 

 

CNAME레코드

 

CNAME 레코드는 “Canonical NAME"의 약어로서 IP가 아닌 특정 도메인으로 설정하기 위해 사용한다.

 

 

 

다음 예를 보자.

 

 

 

 

 

IN A 192.168.0.1

www IN CNAME sulinux.net.

 

 

 

 

 

 

위의 예에서 첫 번째 행은 A 레코드에 대한 것으로 sulinux.net IP주소가 192.168.0.1 라는 것을 지정한 것이며 두 번째 행에서는 www.sulinux.netIP주소는 sulinux.net과 같다는 의미이다.

 

 

 

 

 

PTR레코드

 

PTR 레코드는 IP주소에 대해 도메인명을 매핑해 주며 Reverse Zone 파일에서 사용된다.

 

 

 

다음 예를 보자.

 

 

 

 

 

1.0.168.192.in-addr.arpa. IN PTR sulinux.net.

 

 

 

 

 

 

위 내용은 192.168.0.1 IP에 대한 도메인은 sulinux.net이라는 것을 설정한 것이다.

 

 

 

PTR 레코드는 중복되지 않기 때문에 하나의 IP에 대해 하나의 도메인만 정의할 수 있다.

 

 

 

우리가 설정하는 주 DNS에 위와 같이 설정한다고 해도 큰 의미는 없다.

 

 

 

IP대역 또한 IP대역을 할당받은 ISP(Internet service provider)에서 설정해야 어디에서든 IP로 도메인을 조회 할 수 있다.

 

 

 

최근 스팸 IP를 차단하기 위해 정상적인 서버의 IP에 대해 도메인 연결을 요구한다.

 

 

 

이러한 경우 ISP에 요청하면 IP에 대한 도메인을 등록할 수 있다.

 

 

 

 

 

TXT레코드

TXT 레코드는 임의의 문자열을 추가 하는 레코드이다.

 

 

 

다음 예를 보자.

 

 

 

 

 

IN TXT "v=spf1 ip4:192.168.0.1 ~all"

 

 

 

 

 

 

위 내용은 임의의 문자 레코드를 추가한 것이다.

 

 

 

하지만 위 설정은 특별한 의미를 가진다.

 

 

 

위 설정은 도메인에 대한 SPF(Sender Policy Framework) 레코드를 만든 것이다.

 

 

 

SPF 레코드는 도메인을 대표하여 이메일을 보낼 수 있는 메일서버를 식별하기 위해 추가하는 것이며, SPF 레코드의 목적은 스팸 발송자가 도메인의 위조된 '보낸사람' 주소를 사용하여 메일을 보내지 못하도록 하는 것이다.

 

 

 

수신자는 SPF 레코드를 참조하여 자신의 도메인에서 보낸 것처럼 위장한 메일이 인증된 메일서버에서 전송된 것인지를 판별할 수 있다.

 

 

 

 

 

AAAA레코드

 

AAAA 레코드는 IPv6에서 사용되는 A레코드라고 생각하면 된다.

 

 

 

다음 예를 보자.

 

 

 

 

 

IN AAAA affe:50:1:10:fff:233:b34:23ff

 

 

 

 

 

위 내용은 도메인에 대한 IPv6주소는 “affe:50:1:10:fff:233:b34:23ff”이라는 것이다.

 

 

 

 

그 밖에 DNS 장비의 지리적 위치를 설정하는 LOC레코드, 도메인의 특정 서비스를 지정하는 SRV레코드가 있지만 사용하는 곳은 없다.

 

 

 

 

 

설정 파일 검증

 

named.conf 설정파일 검증named-checkconf 명령어로 다음과 같이 named.conf 파일을 검증한다.

 

 

 

 

 

 

 

 

 

[root@SULinux-64Bit ~]# named-checkconf /etc/named.conf

 

 

 

 

 

 

[root@RockyLinux01 named]# named-checkconf /etc/named.conf

[root@RockyLinux01 named]#

 

아무런 메시지가 나타나지 않으면 정상적인 것이다.

 

 

 

 

 

zone 파일 검증named-checkzone 명령어로 다음과 같이 zone파일을 검증한다.

 

 

 

 

 

 

 

 

 

[root@SULinux-64Bit ~]# named-checkzone sulinux.net /var/named/sulinux.net.zone

zone sulinux.net/IN: loaded serial 2013060909

OK

 

 

 

 

 

 

[root@RockyLinux01 named]# named-checkzone sulinux.net /var/named/sulinux.net.zone

zone sulinux.net/IN: loaded serial 2013060712

OK

[root@RockyLinux01 named]#

 

위와 같이 OK 메시지를 보여주면 설정에 문제가 없는 것이다.

 

 

 

 

 

zone 파일의 일부를 수정하여 검증 해 보았다.

 

 

 

 

 

 

 

[root@SULinux-64Bit ~]# named-checkzone sulinux.net /var/named/sulinux.net.zone

dns_rdata_fromtext: /var/named/sulinux.net.zone:7: near 'IN': extra input text

zone sulinux.net/IN: loading master file /var/named/sulinux.net.zone: extra input text

 

 

 

 

 

 

 

위와 같이 잘못 설정된 위치와 내용을 알려 준다.

 

 

 

 

3) 보조 네임 서버로 설정

 

 

보조 네임 서버는 주네임 서버의 백업서버로 주 네임서버의 데이터베이스를 가지고 있으며 지속적으로 복제하였다가 주 네임 서버시스템에 문제가 생겼을 때 네임 서버 역할을 하게 된다.

 

 

 

다음과 같이 named.conf 파일만 설정하면 해당 zone파일을 주 네임서버에서 가지고 오게 된다.

 

 

 

 

 

/etc/named.conf 파일 설정

 

 

named.conf 파일에 "sulinux.net"도메인에 대한 보조 네임서버 설정은 다음과 같이 해 보자.

 

 

 

 

 

 

 

zone "sulinux.net" IN {type slave; masters {192.168.0.129;}; file "sulinux.net.zone"; };

 

 

 

 

 

 

 

위 설정은 "sulinux.net" 도메인은 typeslave이고, master 서버는 192.168.0.129이고, zone 파일명은 "sulinux.net.zone"으로 설정되었다.

 

 

 

zone 파일이 기본 저장되는 경로는 "/var/named/"이지만, 위에서 bind-chroot패키지가 설치되어 설정되었다면, zone 파일 위치는 “/var/named/chroot/var/named/"이다.

 

 

 

 

위와 같이 설정 후 네임서버를 시작하면, zone파일을 전송받는다.

 

 

 

zone파일이 저장되는 위치 "/var/named/chroot/var/named/"의 권한은 네임서버를 실행시키는 "named" 사용자 또는 그룹 사용자의 쓰기 권한이 있어야 한다.

 

 

 

 

 

아래 내용은 보조 네임서버에서 수신한 sulinux.netzone 파일이다.

 

 

 

 

 

 

 

 

 

[root@SULinux-32Bit named]# cat /var/named/chroot/var/named/sulinux.net.zone

$ORIGIN .

$TTL 43200 ; 12 hours

sulinux.net IN SOA ns.superuser.co.kr. root.superuser.co.kr. (

2013060909 ; serial

10800 ; refresh (3 hours)

900 ; retry (15 minutes)

604800 ; expire (1 week)

86400 ; minimum (1 day)

)

NS ns.superuser.co.kr.

A 192.168.0.1

MX 10 mail.sulinux.net.

TXT "v=spf1 ip4:192.168.0.1 ~all"

$ORIGIN sulinux.net.

* A 192.168.0.1

mail CNAME sulinux.net.

www CNAME sulinux.net.

 

 

 

 

 

 

 

 

4) 캐싱 서버로 설정

 

 

캐싱 네임서버는 복잡한 설정이 필요 없다.

 

 

 

대부분의 리눅스 배포판에서 패키지로 제공되는 bind는 캐싱 기능이 설정된 상태이다.

 

 

 

/etc/named.conf 파일을 보자.

 

 

 

 

 

//

// named.caching-nameserver.conf

//

// Provided by caching-nameserver package to configure the

// ISC BIND named(8) DNS server as a caching only nameserver

// (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

// DO NOT EDIT THIS FILE - use system-config-bind or an editor

// to create named.conf - edits to this file will be lost on

// caching-nameserver package upgrade.

//

options {

listen-on port 53 { any; };

listen-on-v6 port 53 { ::1; };

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

memstatistics-file "/var/named/data/named_mem_stats.txt";

 

// Those options should be used carefully because they disable port

// randomization

// query-source port 53;

// query-source-v6 port 53;

 

//allow-query { localhost; };

//allow-query-cache { localhost; };

};

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

view localhost_resolver {

match-clients { any; };

match-destinations { any; };

recursion yes;

include "/etc/named.rfc1912.zones";

};

 

 

 

 

 

 

 

위 내용을 보면 캐싱 네임서버 관련 설정은 view에 설정되어 있으며 관련 zone 파일은 /etc/named.rfc1912.zones 라고 설정되어 있다.

 

 

 

 

 

 

 

 

 

// named.rfc1912.zones:

//

// Provided by caching-nameserver package

//

// ISC BIND named zone configuration for zones recommended by

// RFC 1912 section 4.1 : localhost TLDs and address zones

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

zone "." IN {

type hint;

file "named.ca";

};

 

zone "localdomain" IN {

type master;

file "localdomain.zone";

allow-update { none; };

};

 

zone "localhost" IN {

type master;

file "localhost.zone";

allow-update { none; };

};

 

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

allow-update { none; };

};

 

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

type master;

file "named.ip6.local";

allow-update { none; };

};

 

zone "255.in-addr.arpa" IN {

type master;

file "named.broadcast";

allow-update { none; };

};

 

zone "0.in-addr.arpa" IN {

type master;

file "named.zero";

allow-update { none; };

};

 

 

 

 

 

 

 

zone 설정 내역을 보면 ROOT DNS관련설정, localdomain, localhost 설정이 있으며, 127.0.0.x, IPv6 IP, 255.x.x.x, 0.x.x.x IP에 대한 설정을 볼 수 있다.

 

 

 

여기서 가장 중요한 것은 ROOT DNS관련 설정이며, ROOT DNS zone파일은 주기적으로 업데이트 해 줘야 한다.

 

 

 

그 방법은 “DNS 업데이트부분에서 다룬다

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  143 명