Linux/Linux 실습

[Linux] DNS 서버 구축

GGkeeper 2021. 11. 12. 12:48

실습> DNS 서버 설치

1. 패키지 설치
bind 패키지를 설치한다.
# yum -y install bind bind-chroot bind-utils

서버 재부팅 시 다시 네임서버를 시작하기 위해서 named를 활성화시킨다.
# systemctl enable named

2. 설정파일 수정
네임서버 설정 파일 : /etc/named.conf
도메인  설정 파일 : /etc/named.rfc1912.zones
https://datatracker.ietf.org/doc/html/rfc1912

listen-on port :
any; 로 설정하면 모든 IP주소가 53번 포트가 열리게 된다.
IP주소가 1개만 있으면 상관이 없지만 이 실습처럼 여러 개의 IP주소를 설정했을 경우에는
any; 로 설정하면 모든 IP주소에 53번 포트가 열리게 되므로 특정 IP주소만 열릴 수 있도록 
설정하는 것이 좋다.

listen-on-v6 port 53 : IPv6 에 해당하므로 사용하지 않는다.

allow-query : 
도메인 질의를 허용하는 클라이언트를 적는다. any라고 하면 아무곳에서나
접속해서 도메인에 대한 질의를 허용하는 것이다. 
그래서 일반적으로 allow-query는 any로 둔다.

# vi /etc/named.conf
listen-on port 53 { any; };
// listen-on-v6 port 53 { ::1; };
allow-query     { any; };
dnssec-enable no; 
dnssec-validation no;                                                                                                     

3. 네임서버 시작
네임서버를 시작한다.
# systemctl start named
# netstat -nltup | grep 53
tcp        0      0 192.168.102.254:53      0.0.0.0:*               LISTEN      3243/named          
tcp        0      0 192.168.108.104:53      0.0.0.0:*               LISTEN      3243/named          
tcp        0      0 192.168.108.103:53      0.0.0.0:*               LISTEN      3243/named          
tcp        0      0 192.168.108.102:53      0.0.0.0:*               LISTEN      3243/named          
tcp        0      0 192.168.108.101:53      0.0.0.0:*               LISTEN      3243/named          
tcp        0      0 192.168.108.3:53        0.0.0.0:*               LISTEN      3243/named          
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      3243/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      3243/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      3243/named          
udp        0      0 192.168.102.254:53      0.0.0.0:*                           3243/named          
udp        0      0 192.168.108.104:53      0.0.0.0:*                           3243/named          
udp        0      0 192.168.108.103:53      0.0.0.0:*                           3243/named          
udp        0      0 192.168.108.102:53      0.0.0.0:*                           3243/named          
udp        0      0 192.168.108.101:53      0.0.0.0:*                           3243/named          
udp        0      0 192.168.108.3:53        0.0.0.0:*                           3243/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           3243/named 

윈도우에서 nslookup을 이용해서 도메인을 질의한다.
C:\Users\user1>nslookup
기본 서버:  ns.dacom.co.kr
Address:  164.124.101.2

> server 192.168.108.3
기본 서버:  [192.168.108.3]
Address:  192.168.108.3

> naver.com
서버:    [192.168.108.3]
Address:  192.168.108.3

권한 없는 응답:
이름:    naver.com
Addresses:  223.130.195.200
          223.130.200.107
          223.130.200.104
          223.130.195.95
  

리눅스에서 nslookup을 이용해서 도메인을 질의한다.
# nslookup
> server 192.168.108.3
Default server: 192.168.108.3
Address: 192.168.108.3#53
> daum.net
Server: 192.168.108.3
Address: 192.168.108.3#53

Non-authoritative answer:
Name: daum.net
Address: 211.231.99.17
Name: daum.net
Address: 203.133.167.16
Name: daum.net
Address: 203.133.167.81
Name: daum.net
Address: 211.231.99.80
> exit
  
4. 도메인 등록
도메인  설정 파일 : /etc/named.rfc1912.zones

도메인       IP 주소
sbs.com    192.168.108.101 (웹서버 IP 주소)

포워드 존파일 : 도메인을 요청했을 때 IP주소 정보를 저장하고 있는 파일
리버스 존파일 : IP주소 정보를 요청했을 때 도메인 정보를 저장하고 있는 파일

/etc/named.rfc1912.zones 파일에 도메인을 등록한다.
등록하는 형식은 아래처럼 등록해야 한다.

zone "도메인명" IN {
    type 네임서버종류;
    file "포워드존파일";
    allow-update { none; };
};

sbs.com 도메인에 대한 정보를 /etc/named.rfc1912.zones 맨 아래에 추가한다.
# vi /etc/named/rfc1912.zones
  :
  :(생략)
zone "sbs.com" IN {
    type master;
    file "sbs.com.zone";
    allow-update { none; };
};

5. 포워드 존파일 생성
/etc/named.rfc1912.zones 에 저장된 도메인에 해당하는 파일을 생성한다.
/etc/named.conf : directory "/var/named";
/etc/named.rfc1912.zones : file "sbs.com.zone";

# cd /var/named

# vi sbs.com.zone
$TTL 60
@     IN  SOA ns  root (
        2021111101; serial
        1D    ; refresh
        1H    ; retry
        1W    ; expire
        3H )  ; minimum

      IN  NS  ns
      IN  A   192.168.108.3  ; sbs.com.
ns    IN  A   192.168.108.3  ; ns.sbs.com.
www   IN  A   192.168.108.3  ; www.sbs.com.

허가권과 소유권의 권한을 변경한다.
# chmod o= sbs.com.zone -c
# chgrp named sbs.com.zone -c
# ls -l sbs.com.zone 
-rw-r-----. 1 root named 256 11월 11 21:06 sbs.com.zone

6. 네임서버 재시작
설정파일에 문제가 없는지 확인하고 이상이 없을 경우 재시작 한다.
# named-checkconf /etc/named.conf 
# named-checkconf /etc/named.rfc1912.zones
# named-checkzone sbs.com sbs.com.zone 
zone sbs.com/IN: loaded serial 2021111101
OK

# systemctl restart named

7. 도메인 질의
> server 192.168.108.3
Default server: 192.168.108.3
Address: 192.168.108.3#53
> sbs.com
Server: 192.168.108.3
Address: 192.168.108.3#53

Name: sbs.com
Address: 192.168.108.3
www.sbs.com
Server: 192.168.108.3
Address: 192.168.108.3#53

Name: www.sbs.com
Address: 192.168.108.3
> ns.sbs.com
Server: 192.168.108.3
Address: 192.168.108.3#53

Name: ns.sbs.com
Address: 192.168.108.3

aaaa.sbs.com 은 없기 때문에 에러가 발생한다.
> aaaa.sbs.com
Server: 192.168.108.3
Address: 192.168.108.3#53

** server can't find aaaa.sbs.com: NXDOMAIN

abc
.sbs.com 은 없기 때문에 에러가 발생한다.
> abc.sbs.com 
Server: 192.168.108.3
Address: 192.168.108.3#53

** server can't find abc.sbs.com: NXDOMAIN



윈도우에서 도메인을 질의한다.
C:\Users\user1>nslookup
기본 서버:  ns.dacom.co.kr
Address:  164.124.101.2

> server 192.168.108.3
기본 서버:  [192.168.108.3]
Address:  192.168.108.3

> sbs.com
서버:    [192.168.108.3]
Address:  192.168.108.3

이름:    sbs.com
Address:  192.168.108.3

www.sbs.com
서버:    [192.168.108.3]
Address:  192.168.108.3

이름:    www.sbs.com
Address:  192.168.108.3

> ns.sbs.com
서버:    [192.168.108.3]
Address:  192.168.108.3

이름:    ns.sbs.com
Address:  192.168.108.3

> aaaa.sbs.com
서버:    [192.168.108.3]
Address:  192.168.108.3

*** [192.168.108.3]이(가) aaaa.sbs.com을(를) 찾을 수 없습니다. Non-existent domain
> abc.sbs.com
서버:    [192.168.108.3]
Address:  192.168.108.3

*** [192.168.108.3]이(가) abc.sbs.com을(를) 찾을 수 없습니다. Non-existent domain
> exit

주석은 설정파일 마다 다르다. 
/etc/named.conf, /etc/named.rfc1912.zones 
- # // /* ~ */

포워드 파일 
- ;

주석을 확인하는 방법
# named-checkconf /etc/named.conf 
# named-checkconf /etc/named.rfc1912.zones
# named-checkzone sbs.com sbs.com.zone