DNS(Domain Name System)
도메인 네임 시스템(Domain Name System)은 호스트의 도메인 이름을 IP주소로 바꾸거나 그 반대의 변환을 위해 개발되었다. DNS서버는 보유한 도메인을 관리해주는 역할을 수행하지만, 클라이언트에서 도메인명에 대한 IP주소의 조회를 요청했을 경우에 반환해주는 역할도 수행한다.
DNS 서버 프로그램 : BIND(Berkeley Internet Name Domain)
bind는 가장 널리 쓰이는 DNS 서버 프로그램으로 ISC에서 DHCP 서버 프로그램과 함께 공개 소프트웨어로 배포되고 있다. 데몬명은 named를 사용하고 있다.
# yum install bind
- centOS 7 버전에서 bind의 모든 패키지를 설치 할 수 있다.
/etc/named.conf 파일
- DNS 서버의 전반적인 환경 설정을 담당하는 파일이다.
- 서버에서 사용하는 zone파일 및 reverse zone 파일을 지정한다.
1) options 구문
- DNS 서버의 동작 및 제어와 관련된 여러 가지 설정을 하는 영역
- 존 파일이 위치하는 디렉터리명은 반드시 명기 해야함
directory "/var/named";
-> 존 파일이 위치하는 디렉터리 명을 명기한다.
forward (only|first);
-> forwarders 옵션과 같이 사용되며 only 나 first 두 값 중 하나를 갖는다.
-> only는 자신에게 들어온 도메인 질의를 지정한 다른 서버에 넘기도록 하는 것으로 다른 서버가 그에 대한 응답이 없을 경우 그 자신도 그 질의에 대해 응답하지 않는 경우 설정한다.
-> first는 타 서버에서 응답이 없을 때 자신이 응답하도록 설정한다
forwarders { 네임서버주소1; 네임서버주소2;... }
-> 도메인에 대한 질의를 다른 서버로 넘길때 사용하는 옵션으로 복수 형태로 지정 가능하고
세미콜론(;)로 구분한다.
forward first;
forwarders { 168.126.63.1; };
// 도메인에 대한 질의를 다른 DNS 서버인 168.126.63.1로 넘기는데,
// 이 서버에서 응답이 없을 경우에만 질의 응답을 처리한다.
allow-query { 192.168.28/24; 192.168.12.17; ihd; };
// 네임 서버에 질의할 수 있는 호스트를 192.168.28.0 네트워크 대역에 속한 호스트,
// 192.168.12.17, ihd 로 묶은 호스트만 가능하도록 설정한다.,
2) acl 구문
- ACL(Access Control List)의 약자로 여러 호스트를 하나의 명칭으로 지정한다.
acl "member" { 210.96.52.100; 203.247.40/24; 211.58.96.100; }
acl "member" { 210.96.52.100; 203.247.40/24; };
options {
directory "/var/named";
allow-transfer { 203.247.51.29; 203.247.51.30; }
forward only;
forwarders { 203.247.32.31; };
allow-query { 203.247.50/24; member; };
}
- 존 파일을 받을 수 있는 호스트 IP주소는 203.247.51.29 , 203.247.51.30로 설정한다.
- 서버로 들어온 도메인 질의 요청은 IP주소가 203.247.32.31인 호스트로 넘기고,
해당 서버에서 응답이 없더라도 질의에 대한 응답은 해주지 않는다.
- 도메인 질의 요청은 203.247.50.0 네트워크 대역에 속한 호스트와 member로 설정한 리스트만 가능하도록 설정한다.
acl "ihd" { 192.168.5.13; 192.168.12.22; 192.168.6.0/24; };
// IP 주소가 192.168.5.13 및 192.168.12.22인 호스트와
// 192.168.6.0 네트워크 대역에 속한 호스트를 ihd 라는 하나의 명칭으로 지정한다.
3) zone 구문
- 도메인을 관리하는 데이터베이스 파일인 zone 파일을 지정한다.
zone "도메인명" IN {
type (master | slave | hint);
file "존파일명";
}
항목 | 설명 |
zone | 도메인명 자리에 설정하려는 도메인 이름을 기재한다. 리버스 존 파일에 대한 설정은 맨 마지막 주소를 제외하고 "50.247.203.in-addr.arpa" 형식으로 기재한다.(ip주소 반대로) |
type | DNS의 종류를 나타낸다. master는 Primary, slave는 Secondary, hint는 리졸빙을 위한 root zone 서버를 나타낸다. |
file | 사용하려는 존 파일명을 기재한다. 일반적인 존 파일명은 "도메인명.zone"으로 설정하고 리버스 존 파일은 "도메인명.rev"로 설정한다. |
zone "linux.or.kr" IN {
type master;
file "linux.zone";
};
zone "12.168.192.in-addr.arpa" IN {
type master;
file "linux.rev";
};
-> DNS 서버의 IP주소는 192.168.12.22이고, 도메인은 linux.or.kr이다.
zone 파일은 linux.zone이고 Reverse Zone 파일은 linux.rev로 설정한다.
zone 파일
zone파일은 /etc/named.conf 파일에 저장된 디렉터리에 지정된 파일명으로 생성해야 한다. 기본 설정 디렉터리는 /var/named 디렉터리이므로 이 디렉터리에 생성하면 된다.
사용하는 도메인에 따라 zone 파일은 일반 존 파일과 리버스 존 파일로 나누어진다. 리버스 존 파일은 필수적으로 생성할 필요는 없지만, ip주소에 따른 도메인 조회를 하는 사이트로 메일 전송할 경우에 스팸 처리가 될 수도 있으니 염두에 두어야 한다. 존 파일은 메인 도메인뿐만 아니라 , 2차 도메인을 관리하는 역할도 한다.
zone 파일의 구조
zone 파일은 크게 SOA 레코드와 자원 레코드로 나눌 수 있다.
[$TTL] [ID]
@ IN SOA [nameserver] [contact-email-address] (
[serial_number] ; serial
[refresh_number] ; refresh
[retry_number ] ; retry
[expire_number] ; expire
[minium_number] ) ; minimum
[도메인] [TTL] [class] [type] [Rdata]
1) $TTL
- Time to Live의 약자 zone 파일의 첫 줄에 설정해야 한다.
- 다른 서버에서 도메인 관련 정보를 조회해서 가져갔을 경우에 그 쪽 서버의 캐시에 해당 정보가 얼마나 머물지를 결정한다.
2) SOA record
- 존 파일을 시작하는 레코드
- 시작은 도메인명 또는 도메인명을 나타내는 기호인 '@'을 사용한다.
주요 구성 | 설명 |
nameserver | 네임 서버의 호스트명과 도메인명을 적는다. 전체 도메인으로 기입할 경우에는 마지막에 루트 도메인을 뜻하는 '.'을 찍어야 한다. 예) ns.linux.or.kr. |
contact_email_address | 관리자의 이메일 주소를 적는다 '계정.도메인' 형태로 기입하고, 마지막에 루트 도메인을 뜻하는 '.'을 찍어야 한다 |
serial_number | 일종의 일련번호, 'YYYYMMDDNN' 형식 사용 |
refresh_number | 보조 네임 서버가 주 네임 서버에 얼마나 자주 체크 할 것인지 설정 |
retry_number | 보조 네임 서버가 주 네임 서버 접근에 실패했을 경우 재시도할 주기 설정 |
expire_number | 보조 네임 서버가 주 네임 서버 접근에 실패하여 retry_number에 설정한 주기로 재시도시 만기 시간 설정 |
minimum_number | 일종의 SOA 영역의 TTL로서 가져간 정보의 최소 보관 시간 설정 |
3) 도메인
- 도메인명, 호스트명, 공백, @, * 등이 올 수 있다
- @는 현재 도메인
- * 는 모든 호스트명
- 호스트명만 기입하면 '호스트명.도메인이름'
- 전체 도메인명 지정시 반드시 맨뒤에 '.'을 붙여야함
4) TTL
- 해당 레코드에 대한 TTL 값 설정 항목
- 보통 생략하고, $TTL 항목에 설정된 값이 반영됨
5) class
- 레코드의 클래스를 지정하는 부분을 IN, CH, HS 등이 사용 가능
- 보통 Internet을 의미하는 IN을 사용하는데 생략해도 무방
6) type
해당 레코드 타입을 지정하는 영역
type | 설명 |
A | IPv4의 주소 기입시 사용 |
AAAA | IPv6의 주소 기입시 사용 |
NS | 도메인 네임 서버 지정시 사용 |
MX | 메일 서버 지정시 사용, MX 다음에 0 또는 양의 정수값 기입하여 우선순위 지정 |
CNAME | 일종의 별칭 지정 |
PTR | 리버스 존에서만 사용하는 레코드로 IP주소를 도메인으로 변환 |
7) Rdata
IP주소, 도메인명, 호스트명을 지정하는 영역
@ IN SOA ns.ihd.or.kr. kait@ihd.or.kr. (
--중략
3H) ; minimum
IN NS ns.ind.or.kr. ; 도메인은 ihd.or.kr이고, 관리자 메일은 kait@ihd.or.kr 일때 관련 설정
IN A 192.168.5.13
IN MX 10 ihd.or.kr. ; ihd.or.kr 도메인으로 메일을 받을 수 있도록 설정, 0이상의 양의 정수 모두 가능
www IN A 192.168.5.13 ; www 도메인을 사용하는 호스트의 ip주소를 192.168.5.13 으로 설정
'서버 운영 > Linux' 카테고리의 다른 글
리눅스 슈퍼데몬 xinetd 데몬과 설정 파일들 (0) | 2021.11.01 |
---|---|
리눅스 TCP Wrapper 설정 - allow, deny (0) | 2021.11.01 |
리눅스 sendmail(샌드 메일) 설치 및 설정 파일들 (0) | 2021.10.24 |
리눅스 FTP(vsftpd) 설치 및 환경 설정 (0) | 2021.10.24 |
리눅스 삼바(Samba) 서버 설치 및 관련 명령어 (0) | 2021.10.24 |