320x100
320x100

DNS (Domain Name Server)
: 도메인 이름을 IP 주소로 바꾸거나 IP 주소를 도메인 이름으로 변경하기 위한 시스템
: DNS 서버는 보유한 도메인을 관리해주는 역할을 수행하지만, 
  클라이언트에서 도메인명에 대한 IP 주소 조회 시 반환하는 역할도 수행함

- DNS 서버 프로그램
: bind (birkeley Internet Name Domain)
 > 가장 널리 쓰이는 DNS 서버 프로그램
 > named 라는 이름의 데몬 사용
 > bind, bind-utils, bind-libs 등의 이름으로 패키지가 배포됨





DNS 서버의 종류
- Primary Name Server (Master DNS)
: 사용하는 도메인을 관리하기 위해 필수적으로 구성하는 서버
: 도메인 등록 시 이 서버의 IP 주소를 등록하고 도메인에 대한 정보를 관리

- Secondary Name Server (Slave DNS)
: Master DNS의 zone 파일을 백업하는 서버
: 외부 클라이언트에서 이 서버를 2차 DNS 서버로 설정하면 Master DNS 서버가 다운되어도 정상적으로
  해당 도메인에 대해 resolving 정보를 제공

- Chaching Name Server
: 관리하는 도메인 없이 resolving만을 제공하기 위해 구성하는 서버
: 도메인에 대한 resolving 결과를 저장하고 서버에 기록된 정보에 대한 요청이 들어올 경우
  바로 응답해주는 역할 수행





DNS 서버 관련 명령어
- named-checkconf
- named-checkzone
- nslookup





named-checkconf
: DNS 환경 설정 파일인 named.conf 파일의 문법 오류 검사
: 옵션없이 사용 시 /etc/named.conf 파일을 확인

- 형식
: named-checkconf [file]

 
 
 

named-checkzone
: zone 파일의 문법 오류 검사

- 형식
: named-checkzone <domain> <zone file path>





nslookup
: DNS 서버에 질의하여, 도메인의 정보를 조회
: 한 번에 여러 도메인 조회 가능

- 형식
: nslookup [domain, ip, ...]





DNS 서버 관련 파일 및 디렉터리
- /etc/named.conf
- .zone
- .rev
- /var/named
- /etc/named.rfc1912.zones
- /etc/rc.d/init.d/named





/etc/named.conf
: DNS 서버의 핵심 설정 파일. DNS 서버의 환경에 대한 설정.
: 도메인에 대한 zone 파일 및 리버스 zone 파일 지정

- zone 파일
: 호스트명 지정, 2차 도메인 부여 등 도메인에 대한 정보를 담고 있는 파일

- 형식
option value;
option "value";
option { value; value; ... };

- 구성
: options
: logging
: controls
: zone
: acl
: view
: key
: masters
: server
등..

- 파일의 특징
: 주석문과 구문으로 구성. 주석은 /* */, //, # 등 모두 지원
: 각 구문은 중괄호 ({})로 둘러싸고 끝날때는 세미콜론 (;)으로 종결
: include 지시자를 선언하여 별도의 파일에 추가 정의 가능





/etc/named.conf의 options 구문
: DNS 서버의 동작 및 제어와 관련된 설정을 하는 영역
: zone 파일이 위치하는 디렉터리를 필수로 지정해야함

- 예시
```
direcoty "/var/named";
# zone 파일이 위치하는 디렉터리명

dump-file "/var/named/data/cache_dump.db";
# named의 정보 갱신 시 저장되는 dump 파일이 생성될 위치 및 파일명

staticcs-file "/var/named/data/named_stats.txt";
# 네임 서버의 통계 파일을 생성할 위치와 파일명

memstatics-file "/var/named/data/named_mem_stats.txt";
# 네임 서버의 메모리 통계 파일을 생성할 위치와 파일명

forward (only);
# 도메인 질의에 대해 다른 서버로 넘길때 옵션
# only = 포워딩으로 지정한 서버가 응답이 없을 경우 이 서버도 응답하지 않음
# first = 포워딩으로 지정한 서버에 응답이 없을 경우 이 서버가 대신 응답
# forwarders 옵션과 같이 사용됨

forwarders  { 192.168.5.3; 192.168.5.4; };
# 도메인 질의를 포워딩할 서버

allow-query  { 192.168.0/24; };
# 네임 서버에 질의할 수 있는 호스트 지정

allow-transfer {192.168.0/24; };
# zone 파일의 내용 복사에 대해 제한할 호스트 지정

datasize 512M;
# DNS 관련 정보를 캐싱할때 사용하는 메모리 크기

recursion yes;
# 하위 도메인에 대한 검색 가능 여부 지정
```





/etc/named.conf의 acl 구문
: 여러 호스트를 하나의 명칭으로 지정하는 구문
: 지정한 이름은 options 구문의 allow-query, allow-transfer 등에 사용 가능
: acl 구문은 options 구문 이전에 설정해여함

- 예시
```
acl "VIP member" { 192.168.1.5; 192.168.1.8; 192.168.10/24; };
```





/etc/named.conf의 zone 구문
: 도메인을 관리하는 데이터베이스 파일인 zone 파일 지정
: 기본적으로 루트(.)  도메인 서버에 대한 정보 파일인 named.ca에 대한 선언이 되어 있고,
  추가적으로 localhost, localhost.domain 등에 대한 존 파일이 선언되어 있음
 > named.ca를 지울 경우 resolving이 안되므로 주의
: CentOS6 이후로는 추가적인 zone파일은 /etc/named.rfc1912.zones에서 설정

- 예시
```
zone "." IN {
type hint;
file "named.ca";
};

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

- zone
: 도메인명 자리에 설정하려는 도메인 이름
: 리버스 존 파일에 대한 설정은 맨 마지막 주소를 제외하고 '192.168.8.in-addr.arpa' 형식으로 기재

- type
: DNS 서버의 종류
: master (Primary)
: slave (secondary)
: hint (resolving을 위한 root zone 서버)
: 여러 개 지정
 > masters { 192.168.45.3; };

- file
: 사용하려는 zone 파일
: 일반적으로 zone 파일은 도메인명.zone으로 설정
: 리버스 zone 파일의 경우 도메인명.rev로 설정

  



/etc/named.rfc1912.zones
: CentOS6 이후로는 root(.) zone 파일 관련 사항을 제외한 다른 zone 파일 설정은
  include /etc/named.rfc1912.zones에서 설정
  
- 형식
zone "domain name" IN {
type master | slave | hint;
file "zone file";
};

```
zone "2mukee.co.kr" IN {
type master;
file "2mukee.zone";
};

zone "10.168.192.in-addr.arpa" IN {
type master;
file "2mukee.rev";
};
# IP 주소가 192.168.10.21 인경우 맨 마지막 자리를 제외한 역순으로 기입
```





.zone
: 도메인에 대한 질의 시 IP 주소로 알려주기 위한 파일
: /etc/named.conf 파일에 지정된 디렉터리에 지정된 파일명으로 생성해야함
: 메인 도메인 뿐만 아니라 2차 도메인을 관리하는 역할
 > 2차 도메인이란 2mukee.javascript.co.kr 과 같은 도메인

- 기본 설정 디렉터리
: /var/named

- DNS 서버에서 사용하기 위해 필요한 설정
: chown root.named 2mukee.zone
: chmod 640 2mukee.zone

- 형식
```
$TTL 1D
@ IN SOA nameserver contact-email-address (
serial_number ; serial
refresh_number ; refresh
retry_number ; retry
expire_number ; expire
minimum_number ) ; minumum
domain TTL class type Rdata
```

- TTL
: 다른 서버에서 도메인 관련 정보를 조회해서 가져갔을 경우 해당 서버 캐시에 머무는 기간
: 값은 초단위 이나, W(주), D(일), H(시), M(분) 을 붙혀서 사용 가능

- SOA record
: zone 파일을 시작하는 레코드. 도메인명 또는 @를 사용.
: 설명이 필요한 경우 주석기호인 ;을 사용
: nameserver
 > 네임 서버의 호스트명과 도메인 명 (ns.2mukee.com.)
: contact-email-address
 > 관리자 이메일 주소. 계정.도메인. 형태. (deragon.2mukee.com.) 
: serial_number
 > 일종의 일련번호. YYYYMMDDNN 형식. NN은 수정 회수 (2022101601)
: refresh_number
 > 보조 네임 서버의 업데이트 주기. (1D)
: retry_number
 > 보조 네임 서버의 주 네임 서버 접근 실패 시 재시도 주기. (1D)
: expire_number
 > 보조 네임 서버의 주 네임 서버 접근 실패 시에 재시도 만기 시간. (1W)
: minimum_number
 > SOA 영역의 TTL. 가져간 정보의 최소 보관 기간. (3H)

- domain
: 도메인명, 호스트명, 공백, @, * 등을 기입
: @
 > 현재 도메인
: *
 > 모든 호스트명
: 호스트명.도메인이름
 > 전체 도메인명 지정 시 맨뒤에 .을 붙여야함
: 공백
 > 윗 항에 설정된 도메인 값을 이어서 사용
 
- TTL
: 해당 레코드에 대한 TTL 값. 보통은 생략. 생략한 경우에는 $TTL 항목의 값이 반영됨

- class
: 레코드의 클래스 지정. IN, CH, HS 등 사용 가능. 보통은 Internet을 뜻하는 IN을 사용.
: 생략해도 무방. 

- type
: 해당 레코드의 타입
: A
 > IPv4 주소
: AAAA
 > IPv6 주소
: NS
 > 도메인의 네임서버 지정
: MX
 > 메일 서버 지정. MX 다음 0 또는 양의 정수값을 기입해 우선순위도 지정해야함
: CNAME
 > 별칭
: PTR
 > 리버스 존에만 사용하는 레코드로, IP 주소를 도메인으로 변환하기 위해 지정

- Rdata
: IP 주소, 도메인명, 호스트명을 지정하는 영역
: 호스트명만 지정한 경우 자동으로 도메인을 붙여서 인식
: 전체 도메인명 명기 시 맨뒤에 .을 붙여야함

- 예시
```
$TTL 1D
@ IN SOA ns.2mukee.com. deragon.2mukee.com. (
2022101601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minumum
NS ns.2mukee.com.
A 10.0.2.16
MX 10  2mukee.com.
ns A  10.0.2.16
www A 10.0.2.16
```





.rev
: IP에 대한 질의 시 도메인을 알려주기 위한 파일
: 필수는 아니지만, 특정 사이트의 경우 해당 파일이 없으면 메일이 거부될 수 있음
: .zone 파일과 동일

- 기본 설정 디렉터리
: /var/named

- 예시
```
$TTL 1D
@ IN SOA ns.2mukee.com. deragon.2mukee.com. (
2022101601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minumum
NS ns.2mukee.com.
1M PTR 2mukee.com.
15 PTR ns.2mukee.com.
15 PTR www.2mukee.com.
```





DNS 서버 설정
1) named.conf 설정
: 로컬에서만 접속 가능하게 설정되어 있기 때문에 일부 설정을 삭제

2) named.rfc1912.zones 파일 설정
: 기존 내용은 냅두고 파일 아래에 사용할 도메인에 대한 zone 파일과 리버스 zone 파일 선언
: 리버스 zone 파일 부분의 ip는 맨 마지막 자리를 제외한 역순으로 기입

3) zone 파일 생성
: /var/named 디렉터리로 이동 후, 샘플파일인 named.localhost 파일을 복사하여 알맞게 수정
: 리버스 zone 파일은 zone 파일 생성 후 복사하여 사용

4) 서버 실행
- sersvice named start

5) 서버 실행 확인
- ps aux | grep named

6) 서버 설정 확인
: 공인 IP 주소와 도메인을 기반으로 설정한 경우 일정시간이 지난 후 외부에서 조회 가능
: 가상 IP 주소나 가상 도메인을 사용한 경우 /etc/resolv.conf를 변경 후 nslookup 명령 실행으로 확인 필요

- vim /etc/resolv.conf
```
nameserver 10.0.2.16
```
 
- nslookup www.2mukee.com
- nslookup 10.0.2.16

 

 

 

 

 

Refference

 

리눅스마스터 1급 2차 실기 정복하기 | 정성재 - 교보문고

리눅스마스터 1급 2차 실기 정복하기 | 출제 경향을 반영하여 핵심 내용만 요약 정리 시험대비를 위한 최신 기출문제를 해설과 함께 수록본 교재는 독자들이 최근 출간 요구가 많았던 리눅스마

product.kyobobook.co.kr

 

300x250
728x90