Domain 주소를 IP 주소로, IP 주소를 Domain 주소로 변환하는 프로토콜
DNS 서버 종류
Master Server : Domain Zone에 대한 권한을 가진 DNS 서버
Slave Server : Domain Zone에 대한 보조 DNS 서버 Master Server로부터 Domain 정보를 받아오며 Domain Zone을 변경할 수 없음
Caching Server : Domain Zone을 관리하지 않는 서버로 다른 DNS 서버로부터 Domain 정보를 받아 Cache를 저장하는 NDS 서버, 빠른 DNS 응답을 위해 ISP나 네트워크 관리자가 구축하여 사용.
DNS Query 종류
재귀 쿼리(Recursive Query) : 일반적으로 Client가 DNS서버에게 Domain 정보를 요청하는 쿼리
반복 쿼리(Iterative Query) : DNS 서버가 요청한 Domain 정보를 알아내기 위해 Domain 주소를 계층적으로 요청하는 쿼리
Domain Zone
정방향 영역(Forward Zone)
Domain 주소에 대한 IP 주소를 포함하는 Zone
역방향 영역(Reverse Zone)
IP 주소에 대한 Domain 주소 정보를 포함하는 Zone
DNS 레코드 종류
| DNS 레코드 | 설명 |
|---|---|
| A | 도메인 주소에 대한 IPv4 주소 |
| AAAA | 도메인 주소에 대한 IPv6 주소 |
| CNAME | 호스트에 대한 별칭 정보 |
| MX | 메일 서버(Mail Exchanger)에 대한 정보 |
| NS | Domain의 Name Server(DNS) 에 대한 정보 |
| PTR | IP 주소에 대한 Domain 주소 정보 |
| SOA | 도메인 Zone에 대한 권한 정보(Start Of Authority) |
| TXT | 다양한 정보를 포함하기 위한 텍스트 레코드 |
DNS 서비스 패키지 설치
$ yum install bind

BIND 구성 파일 설정
$ vim /etc/named.conf

| 기본 설정 값 | 설명 |
|---|---|
| listen-on port 53 {127.0.0.1;}; | DNS 요청에 응답할 인터페이스와 포트 (IPv4) |
| listen-on-v6 port 54{LL1l}; | DNS 요청에 응답할 인터페이스와 포트 (IPv6) |
| allow-query {localhost;}; | NDS 쿼리 요청을 허가할 대상 |
특정 인터페이스 또는, 특정 대상을 지정하려9면 적절한 설정 값을 지정해야 하고, 특정 대상을 지정하지 않으려면 any를 입력.

$systemctl start named.service$systemctl enable named.service
$ firewall-cmd --add-service=dns$ firewall-cmd --add-service=dns --permanent
$ nslookup
$ vim /etc/named.rfc1912.zones

Domain Zone File 작성
우선 /var/named 디렉터리에 있는 named.empty나 named.localhost 파일을 복사한다 (복사하지 않아도 되지만 기본양식을 따라하기 위해서)

/var/named 밑에 생성한 example.com.zone (실습 파일) 을 수정한다.
$ vim /var/named/ZONE_FILE
$ vim /var/named/example.com.zone

TTL : 도메인의 수명 1D는 하루를 의미함.
@ : 서비스할 영역의 도메인명. @ 기호는 origin을 의미.
IN : DNS클래시 중 Internet을 의미
SOA : 도메인에 대한 정보와 권한이 있음을 선언.(Start of Authority)
ns : 해당 존의 마스터 네임 서버. ns로 입력했으니 master 네임서버인 "example.com"이 된다.
hostmaster.example.com. : DNS 서버 관리자의 메일 주소.
(host1@example.com >>> host.example.com.)
serial : 시리얼 번호. 도메인 정보의 갱신 여부를 판단하기 위하여 사용.
refresh : Slave 서버가 1차 Master 서버의 변경을 확인하는 주기.
retry : Slave 서버에서 Master 서버로 연결이 되지 않을 경우 재시도 주기.
expire : Master 서버로 연결이 계속 이루어지지 않을 경우 만료 기간.
minimim : 캐싱 DNS 서버에서 도메인의 레코드가 유지될 기간을 지정.
$ systemctl restart named.service
이런 오류가 발생하기 때문에 소유그룹을 변경해야 한다.(?)
$ chgrp named /var/named/example.com.zone
$ ls -l /var/named/example.com.zone
-rw-r-----. 1 root named 303 May 7 14:26 example.com.zone
$ systemctl restart named.service

$ nslookup
클라이언트에서 dns 변경.

DNS 구성파일(/etc/named.rfc1912.zones)에서 Domain Zone 선언.
$ vim /etc/named.rfc1912.zones

도메인 주소를 거꾸로 생성.
마찬가지로 소유그룹 변경

Domain Zone File 작성
$ vim /var/named/ZONE_FILE
$ vim /var/named/example.com.zone

빨간색 골뱅이는 지워야함 오타임.
역방향은 PTR 설정.
restart
$ systemctl restart named.service

nslookup
$vim /etc/named.rfc1912.zones


DNS 서버 구성파일 오류점검
named-checkconf [CONFIG_FILE]\
Domain Zone 파일 오류 점검
$ named-checkzone DOMAIN_ZONE DOMAIN_ZONE_FILE
$ named-checkzone example.com /var/named/example.com.zone