name server
페이지 정보
작성자 admin 작성일16-04-22 18:38 조회935회 댓글0건관련링크
본문
dns 서버는 크게 세가지로 분류할수 있다.
1. Primary DNS (또는 Master DNS)
2. Secondary DNS (또는 Slave DNS) - 이중화(백업) 역할을 하는 DNS.
Primary DNS가 다운되었을때 대신 서비스 하기 위한것이다.
3. Cache Only DNS
- Cache 목적으로 만 사용하기 위한 DNS
DNS 역할
다른 호스트에 접속하기위해서 ip 주소가 필요하다.
그러나 ip 주소는 기억하고 불편하므로 보통 도메인 이름을 사용한다.
도메인에 대한 해당 ip 주소를 알려주는것이 DNS 의 주된 역할이다.
도메인이 ip 주소로 변환되는 과정.
1. 클라이언트: http://www.abc.co.kr
2. 클라이언트가 해당도메인의 ip주소를 알아내기 위해 /etc/host.conf 파일 참조
보통 아래와 같은 내용이 등록되어있거나 비어 있다.
order hosts,bind ; /etc/hosts 를 참조후 없으면 /etc/resolv.conf 를 참조
(*. 이설정이 비어 있어도 마찬가지)
multi on ; hosts 파일이 다중 ip 주소를 가질수 있는지 여부를 판단한다.
두개이상의 ip주소를 가지는 호스트를 multi homed 라고 한다.
3. hosts 파일에는 일반적으로 다른 host 의 도메인을 등록하지 않는다.
/etc/hosts 파일에 찾고자 하는 도메인이 등록 안되어 있으면 /etc/resolv.conf 파일 참조
아래와 같이 name server 가 적어도 한개이상은 등록 되어 있어야 한다.
nameserver 168.126.63.1
5. 클라이언트는 168.126.63.1 로 접속해서 도메인 ip 주소를 요청
6. 168.126.63.1 에서 도메인 정보를 검색해서 클라이언트한테 ip주소를 알려준다.
(자신의 dns 설정에 등록되지 않은 주소는 root dns 를 통해서 찾을 수 있다)
DNS 패키지 설치
확인해보고 설치 안된 패키지가 있으면 설치해야 한다.
DNS 설정 파일
/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; ; local 주소로 접속했을때만 응답
127.0.0.1 을 dns ip 주소로 변경해야 한다.
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";
allow-query { localhost; }; ; local 의 query 에 대해서만 응답
- localhost 를 any 로 변경해야 한다.
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
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";
----------------------------------------------------------------------------------
/etc/named.conf 의 문법
// comment
/*
comment
*/
기본형식 :
keword {
설정내용 ;
설정내용;
....;
};
ex)
options {
directory path_name;
기타 부가적인 설정...;
}
zone 구문
zone "." IN {
type hint;
file 파일명;
};
zone "domain name" IN {
type master ; => slave dns 일경우 type 은 slave 가 되어야 한다.
file file명;
}
zone "10.168.192.in-addr.arpa" IN {
type master;
file file명;
};
*. 세부설정 파일 문법
1. forward zone 설정파일
$TTL value ; root dns 를 통해서 찾은 도메인 정보를 cache 에 저장해두는 시간
@ IN SOA dns도메인명. 이메일주소. (
serial_number
refresh_number
retry_number
expire_number
minmum_number
);
IN NS dns도메인명(호스트명 포함(FQDN)).
hostname IN A ip-address
hostname IN A ip-address
...
*. hostname 대신에 (FQDN을 사용해도 된다. ex) www.abc.co.kr.
주의할점은 FQDN(host명을포함한 도메인)을 적을때는 맨끝에 '.' 을
반드시 붙여야 한다. 그렇지 않으면 host명으로 인식한다.
$TTL value ; 다른 dns 가 root dns 를 통해서 여기에 있는 정보를 참조했을때
이 정보를 캐시에 담아두는 기간.
ex) $TTL 86400(= $TTL 24H) => 다른 dns 가 여기 있는 정보를 참조하면
여기있는 정보를 24시간동안 캐시에 저장.
단위가 없으면 초단위, H 는 시간 D는 day , M은 분, W는 주 이렇게 몇가지
단위를 붙여 표현할수 있다. $TTL 24H == $TTL 1D == $TTL 86400
serial_number : slave dns 가 primary dns zone 설정을 업데이트 하기 위한
값으로 사용된다. slave dns 는 자신이 가지고 있는 zone 파일과 이파일을 비교하여
primary dns 에 있는 serial number 가 더 높은 경우에만 업데이트한다.
serial_number 는 기간을 의미 하지 않는다. 보통 날짜 형태의 표기를 한다.
ex) 2016042200
refresh number ; slave dns 가 primary dns 의 설정파일을 업데이트 하는 주기
retry number ; slave dns 가 refresh time 에 도달하여 update 를 하려고 했으나
primary dns 로 부터 응답이 없는경우 재시도 하는시간.
expire number ; slave dns 가 master dns 로 부터 expire number 동안 어떤문제로
zone 설정 파일을 update 못하거나 설정이 변경되지 않았는지를 확인하지 못하면
폐기하게 된다.
minimum number ; named server cache 의 저장시간
$TTL value <= 맨 첫번째 줄에 이부분이 와야 한다.
이거 없어도 동작하지만 경고메시지가 출력될것이다.
@ IN SOA dns도메인명. 이메일주소. ( <= 두번째 줄은 이부분이 반드시 와야 한다. 문법이 그렇다.
@ => 그 도메인 자체를 의미 ex) abc.co.kr.
IN ; class 이름 모든 레코드 앞에 위치
SOA (Start Of Authority) - 도메인 권한의 시작
dns도메인명 : name server 도메인명을 호스트 이름을 포함하여 적는다.
이메일주소: 설정하는 도메인에 대해서 책임있는 관리자의 이메일 주소를 적는다.
이때 이메일 주소에는 '@' 문자를 포함하면 안된다.
만약 이메일주소가 root@abc.co.kr 이라면 root.abc.co.kr. 이렇게 표기해야 한다.
IN NS dns도메인명(호스트명 포함(FQDN)). ; NS 는 dns를 의미하는 레코드타입.
- 주의 : IN 앞에 반드시 탭키 또는 스페이스 문자가 있어야 한다. 그렇지 않으면 IN 을 호스트명으로
간주하게 된다.
hostname IN A ip-address
- 주의 : hostname 앞에 스페이스 문자가 있으면 안된다.
hostname 은 첫칸부터 시작해야 한다.
A (Address 의 약자)는 도메인 -> ip 로 변환하기 위한 레코드 타입.
-------------------------------------------------------------------------------
2. reverse 설정파일
forward 설정파일과 형식이 거의 같은데 다른 부분은 IN NS 부분 다음줄부터이다.
hostname IN PTR ip-address
hostname IN PTR ip-address
==> forward 설정파일의 이부분만 다르다.
ip-address 의 맨 마지막 자리 IN PTR 도메인명.
ex)
1 IN PTR (Pointer 의 약자) www.abc.co.kr.
2 IN PTR 192.168.10.2 ftp.abc.co.kr.
1. Primary DNS (또는 Master DNS)
2. Secondary DNS (또는 Slave DNS) - 이중화(백업) 역할을 하는 DNS.
Primary DNS가 다운되었을때 대신 서비스 하기 위한것이다.
3. Cache Only DNS
- Cache 목적으로 만 사용하기 위한 DNS
DNS 역할
다른 호스트에 접속하기위해서 ip 주소가 필요하다.
그러나 ip 주소는 기억하고 불편하므로 보통 도메인 이름을 사용한다.
도메인에 대한 해당 ip 주소를 알려주는것이 DNS 의 주된 역할이다.
도메인이 ip 주소로 변환되는 과정.
1. 클라이언트: http://www.abc.co.kr
2. 클라이언트가 해당도메인의 ip주소를 알아내기 위해 /etc/host.conf 파일 참조
보통 아래와 같은 내용이 등록되어있거나 비어 있다.
order hosts,bind ; /etc/hosts 를 참조후 없으면 /etc/resolv.conf 를 참조
(*. 이설정이 비어 있어도 마찬가지)
multi on ; hosts 파일이 다중 ip 주소를 가질수 있는지 여부를 판단한다.
두개이상의 ip주소를 가지는 호스트를 multi homed 라고 한다.
3. hosts 파일에는 일반적으로 다른 host 의 도메인을 등록하지 않는다.
/etc/hosts 파일에 찾고자 하는 도메인이 등록 안되어 있으면 /etc/resolv.conf 파일 참조
아래와 같이 name server 가 적어도 한개이상은 등록 되어 있어야 한다.
nameserver 168.126.63.1
5. 클라이언트는 168.126.63.1 로 접속해서 도메인 ip 주소를 요청
6. 168.126.63.1 에서 도메인 정보를 검색해서 클라이언트한테 ip주소를 알려준다.
(자신의 dns 설정에 등록되지 않은 주소는 root dns 를 통해서 찾을 수 있다)
DNS 패키지 설치
centos[root ~]# rpm -qa | grep -w bind
bind-utils-9.8.2-0.37.rc1.el6_7.7.x86_64 ; nslookup 등의 dns 관련 utility 패키지
bind-9.8.2-0.37.rc1.el6_7.7.x86_64 ; dns server 패키지
bind-libs-9.8.2-0.37.rc1.el6_7.7.x86_64 ; dns 라이브러리 패키지
centos[root ~]#
확인해보고 설치 안된 패키지가 있으면 설치해야 한다.
DNS 설정 파일
/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; ; local 주소로 접속했을때만 응답
127.0.0.1 을 dns ip 주소로 변경해야 한다.
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";
allow-query { localhost; }; ; local 의 query 에 대해서만 응답
- localhost 를 any 로 변경해야 한다.
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
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";
----------------------------------------------------------------------------------
/etc/named.conf 의 문법
// comment
/*
comment
*/
기본형식 :
keword {
설정내용 ;
설정내용;
....;
};
ex)
options {
directory path_name;
기타 부가적인 설정...;
}
zone 구문
zone "." IN {
type hint;
file 파일명;
};
zone "domain name" IN {
type master ; => slave dns 일경우 type 은 slave 가 되어야 한다.
file file명;
}
zone "10.168.192.in-addr.arpa" IN {
type master;
file file명;
};
*. 세부설정 파일 문법
1. forward zone 설정파일
$TTL value ; root dns 를 통해서 찾은 도메인 정보를 cache 에 저장해두는 시간
@ IN SOA dns도메인명. 이메일주소. (
serial_number
refresh_number
retry_number
expire_number
minmum_number
);
IN NS dns도메인명(호스트명 포함(FQDN)).
hostname IN A ip-address
hostname IN A ip-address
...
*. hostname 대신에 (FQDN을 사용해도 된다. ex) www.abc.co.kr.
주의할점은 FQDN(host명을포함한 도메인)을 적을때는 맨끝에 '.' 을
반드시 붙여야 한다. 그렇지 않으면 host명으로 인식한다.
$TTL value ; 다른 dns 가 root dns 를 통해서 여기에 있는 정보를 참조했을때
이 정보를 캐시에 담아두는 기간.
ex) $TTL 86400(= $TTL 24H) => 다른 dns 가 여기 있는 정보를 참조하면
여기있는 정보를 24시간동안 캐시에 저장.
단위가 없으면 초단위, H 는 시간 D는 day , M은 분, W는 주 이렇게 몇가지
단위를 붙여 표현할수 있다. $TTL 24H == $TTL 1D == $TTL 86400
serial_number : slave dns 가 primary dns zone 설정을 업데이트 하기 위한
값으로 사용된다. slave dns 는 자신이 가지고 있는 zone 파일과 이파일을 비교하여
primary dns 에 있는 serial number 가 더 높은 경우에만 업데이트한다.
serial_number 는 기간을 의미 하지 않는다. 보통 날짜 형태의 표기를 한다.
ex) 2016042200
refresh number ; slave dns 가 primary dns 의 설정파일을 업데이트 하는 주기
retry number ; slave dns 가 refresh time 에 도달하여 update 를 하려고 했으나
primary dns 로 부터 응답이 없는경우 재시도 하는시간.
expire number ; slave dns 가 master dns 로 부터 expire number 동안 어떤문제로
zone 설정 파일을 update 못하거나 설정이 변경되지 않았는지를 확인하지 못하면
폐기하게 된다.
minimum number ; named server cache 의 저장시간
$TTL value <= 맨 첫번째 줄에 이부분이 와야 한다.
이거 없어도 동작하지만 경고메시지가 출력될것이다.
@ IN SOA dns도메인명. 이메일주소. ( <= 두번째 줄은 이부분이 반드시 와야 한다. 문법이 그렇다.
@ => 그 도메인 자체를 의미 ex) abc.co.kr.
IN ; class 이름 모든 레코드 앞에 위치
SOA (Start Of Authority) - 도메인 권한의 시작
dns도메인명 : name server 도메인명을 호스트 이름을 포함하여 적는다.
이메일주소: 설정하는 도메인에 대해서 책임있는 관리자의 이메일 주소를 적는다.
이때 이메일 주소에는 '@' 문자를 포함하면 안된다.
만약 이메일주소가 root@abc.co.kr 이라면 root.abc.co.kr. 이렇게 표기해야 한다.
IN NS dns도메인명(호스트명 포함(FQDN)). ; NS 는 dns를 의미하는 레코드타입.
- 주의 : IN 앞에 반드시 탭키 또는 스페이스 문자가 있어야 한다. 그렇지 않으면 IN 을 호스트명으로
간주하게 된다.
hostname IN A ip-address
- 주의 : hostname 앞에 스페이스 문자가 있으면 안된다.
hostname 은 첫칸부터 시작해야 한다.
A (Address 의 약자)는 도메인 -> ip 로 변환하기 위한 레코드 타입.
-------------------------------------------------------------------------------
2. reverse 설정파일
forward 설정파일과 형식이 거의 같은데 다른 부분은 IN NS 부분 다음줄부터이다.
hostname IN PTR ip-address
hostname IN PTR ip-address
==> forward 설정파일의 이부분만 다르다.
ip-address 의 맨 마지막 자리 IN PTR 도메인명.
ex)
1 IN PTR (Pointer 의 약자) www.abc.co.kr.
2 IN PTR 192.168.10.2 ftp.abc.co.kr.
댓글목록
등록된 댓글이 없습니다.