라이브러리
프로그래밍언어, 각종코드, 관련동향, 논문 등의 저장소
DNSv6 구성에서 BIND DNS의 named.conf 파일은 어떻게 작성해야 하나요?
BIND 네임서버의 환경구성 파일(configuration file)은 named.conf 파일입니다.
BIND 네임서버 데몬 프로세스인 named는 디폴트 동작으로 /etc/named.conf 파일을
그 환경구성 파일로 사용합니다.
named.conf 파일의 설정 옵션은 상당히 많습니다.
여기서는 BIND 8버전과 BIND 9버전에 공통되는 가장 기본적인 설정 사항을 제시합니다.
Ref Docs:
BIND 8 과 BIND 9 매뉴얼은 배포 소스 패키지에 포함 또는ISC의 BIND 페이지에서 제공
named.conf 파일은 아래와 같은 내용의 기본적인 설정사항을 포함하여 구성합니다.
no.named.conf 내용
1options {
            directory "/dns1";
            pid-file "/var/adm/named.pid";
            listen-on-v6 { any; }
            allow-transfer {
                    192.0.2.1;
                    192.0.2.100; };
};
2zone "localhost" {
        type master;
        file "localhost";
};
3zone "." {
        type hint;
        file "root.cache";
};
4zone "0.0.127.in-addr.arpa" {
        type master;
        file "named.ipv4.local";
};
5zone "1.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." {
        type master;
        file "named.ipv6.local";
};

1번 구성: 네임서버(named)의 동작에 관련된 글로벌(global) 환경설정 내용
directory는 named가 도메인의 존 파일(zone file)을 저장할 디렉토리를 지정
pid-file은 named 프로세스의 프로세스 ID(PID)를 저장하는 파일을 지정
listen-on-v6는 IPv6 주소를 binding하여 IPv6 패킷의 DNS 질의를 처리하게 지정
위의 경우, 이에 대해 { any; }로 지정한 것은 모든 IPv6 주소에 대해 DNS 서비스를 제공함을
의미함. 이 listen-on-v6 옵션은 디폴트로 disable 상태이므로, IPv6 DNS를 구성하는 경우,
반드시 이 옵션을 지정해야 함
NOTE!: 현 시점을 기준, BIND 9의 경우, "listen-on-v6 { any; };"만 지정 가능
BIND 8의 경우, 네임서버 플랫폼의 특정 IPv6 주소만을 지정하여 설정 가능
allow-transfer는 이 네임서버에 설정된 도메인에 대해 존 전송(zone transfer) 요청을
할 수 있는 슬레이브 네임서버 또는 관리 호스트를 지정. 이 지정된 IP 주소 외의 호스트에서
존 전송 요청을 하는 경우, 이 요청에 대한 응답을 거부
위의 경우과 같은 구성은 네임서버가 리커시브 네임서버로도 동작하도록 구성한 것.
만일 네임서버의 리커시브 리졸루션 기능을 해제하려면 명시적으로"recursion no;"와 같이
추가 지정.
2번 구성: zone "localhost" 정의
zone "localhost"는 localhost에 대한 도메인 존을 정의. (설정 권고 사항)
localhost에 대한 DNS 질의가 발생하는 경우는
가. 단말 호스트의 /etc/hosts 파일에서 'localhost'에 대한 설정을 누락한 경우, 또는
나. UNIX 및 Linux 계열 호스트에서 /etc/nsswitch.conf 파일 설정 중 "host dns file ... "로
설정한 경우
이와 같은 경우, 단말 호스트에서 localhost에 대한 IP 주소를 질의하는 DNS 패킷이
발생하며, 이 질의를 받은 리커시브 네임서버는 ROOT 네임서버로 질의를 하므로 인해
ROOT 네임서버로 불필요한 DNS 질의가 전달되게 됨
NOTE!:zone "localhost"에 대한 설정 권고는 1차적으로는 루트 네임서버에 대한
불필요한 DNS 질의를 방지하는 것이 목적이지만, 이를 설정하지 않은 경우 로컬 호스트들의
응용 어플리케이션에서 접속 지연이 발생할 수 있으므로 설정하는 것이 바람직함.
이는 많은 소프트웨어에서 "localhost"를 코드에 포함하여 사용하는 경우가 존재하기 때문임.
NOTE!: IPv6 단말 호스트가 등장하면서 localhost에 대한 질의는 A type 외에 AAAA type의
DNS 질의가 발생 가능.
이는 단말 호스트에 IPv6 루브백(loopback) 주소 ::1에 대해 localhost 지정이 누락될 경우가
증가할 것으로 보이기 때문임.
따라서 IPv6 환경에서는 localhost 존의 설정이 더욱 필요할 것으로 예상
type master는 zone "localhost"가 네임서버의 권한있는(authoritative) 존임을 지정
file "localhost"는  zone "localhost"의 정보가 "localhost" 파일에 저장되어 있음을 지정
이 경우 이 파일은 option에 의해 지정된 directory "/dns1"하위에 위치.
3번 구성: 루트(root) 네임서버의 hint 정의
zone "."는 네임서버의 필수적인 구성 항목. 루트(root) 네임서버의 IP 주소 정보를 지정.
DNS는 ROOT 도메인에서 트리(tree) 구조로 전세계 도메인 체계를 구성
네임서버는 도메인 네임의 리졸루션 등을 위해 최소한 루트 네임서버의 IP 주소를
미리 알고 있어야 함.
루트 네임서버 현황 정보제공 웹 사이트 :Root Server Technical Operations Assn
루트 네임서버 hint 파일 다운로드 :ftp://ftp.internic.net/domain/named.cache
type hint는 zone "." 지정이 루트 네임서버에 대한 hint 정보지정임을 표시
file "root.cache"는 루트 네임서버의 hint IP 주소가 존 파일 디렉토리의 root.cache 파일에
저장되어 있음을 지정
이 경우, root.cache 파일에 저장된 IP 주소는 네임서버가 초기 구동시 루트 네임서버 중
최소한 하나에 접근하여 현 시점의 모든 루트 네임서버 IP 주소를 파악하는데에 사용됨.
따라서 루트 네임서버 중 하나의 IP 주소가 변경되더라도 네임서버 동작에는 이상이 없음.
4번 구성: 루프백(loopback) IPv4 주소에 대한 역질의(reverse query)용 로컬 도메인
zone "0.0.127.in-addr.arpa"은 호스트의 IPv4 루프백(loopback) 주소 127.0.0.0/8에 대한
역변환 도메인 존을 정의
IPv4의 경우, 루프백 주소는 127.0.0.0/8 주소블럭에 포함된 127.0.0.1을 사용
127.0.0.0/8 주소블럭 자체는 인터넷 상에서 라우팅 될 수 없는 주소블럭으로 예약됨
따라서 루프백 주소용 역변환 도메인(reverse domain)의 정의에 127.0.0.0/8에 해당하는
"127.in-addr.arpa"로 도메인 존을 정의하는 것이 원칙적임.
편의상 "0.0.127.in-addr.arpa."로 도메인 정의 및 설정이 일반적
Ref RFC:RFC3330 Special-Use IPv4 Addresses
IPv4 주소 블록 중 특수한 용도로 사용하는 주소 정리
type masterfile "named.ipv4.local"지정
5번 구성: 루프백(loopback) IPv6 주소에 대한 역질의(reverse query)용 로컬 도메인
 zone "1.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."
IPv6 루프백(loopback) 주소인 "::1/128"에 대한 역질의 도메인 정의
NOTE!: IPv4와 달리 IPv6에서는 IPv6 표준화 단계에서 호스트의 루프백 주소용으로
::1 주소를 정의. 이때, IPv6 주소 블록이 아닌 단독 주소인 "::1/128"로 정의함.
따라서 "::1" 주소에 대한 역변환 도메인을 정의하는 경우, 위와 같이 ::1/128에 대응하는
도메인을 사용하는 것이 올바른 설정임
만일
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."
같이 지정한다면, 이 설정은 ::/124 주소블럭 전체에 대한 지정이 되므로 ::2, ::3과 같은
루프백 주소가 아닌 IPv6 주소에 대해서는 향후 문제가 발생할 수 있음
Ref RFC:RFC3513 IPv6 Addressing Architecture
 type masterfile "named.ipv6.local"지정
  Comments,     Trackbacks