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
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 프록시 서버 관리 (0) | 2022.10.20 |
---|---|
리눅스 서비스 데몬 관리 (0) | 2022.10.20 |
리눅스 메일 서버 관리 (0) | 2022.10.20 |
리눅스 파일 서버 관리 3 - FTP (0) | 2022.10.20 |
리눅스 파일 서버 관리 2 - NFS (0) | 2022.10.20 |