linux/bind(nameserver)

bind (네임서버) 설치

배움엔 끝이없다 2021. 7. 2. 10:07
728x90
반응형

DNS ?

 

DNS(Domain Name System)는 원하는 서버에 접근하기 위해 입력한 알기 쉬운 문자로 된 도메인 주소를 컴퓨터가 처리할 수 있는 IP 주소로 변환 시켜주는 서비스입니다. 이러한 서비스를 제공해주는 서버를 네임서버라고 합니다. 본인 소유의 서버를 네임서버로 이용하려면 현재 소유하고 있는 도메인이 있어야 합니다. 도메인을 등록한 업체를 통하여 네임서버 호스트 등록을 하면 도메인 등록 업체에서는 이에 대한 정보를 업데이트하여 최상위 기관에서도 조회할 수 있도록 조치하며, 이러한 절차를 거치고 나면 비로소 네임서버를 사용할 수 있습니다.

 

 

1. DNS 서버 구축 순서

네임서버를 구축하는 절차는 아래와 같습니다.

 

  1. DNS 구축에 필요한 프로그램 설치
  2. DNS 설정
  3. 정방향, 역방향 zone 파일 생성(호스트 추가)

 

 

* 설치 전 확인 및 준비사항

ㅁ 방화벽 설정

DNS 프로토콜은 TCP, UDP 의 53 번 포트를 열어주어야 됩니다

 

2. DNS 서버 설치 및 설정

DNS 서버의 기능을 제공하는 대표적인 소프트웨어가 BIND 입니다.

BIND 는 버전에 따라 설정 파일(/etc/named.conf)의 항목이 다를수 있기 때문에 버전 9 이외의 BIND 는 주의해야 합니다.

 

ㅁ Bind 설치여부 확인

rpm -qa | grep bind

bind 패키지들이 검색되지만 필요한 패키지들이 부족하기 때문에 아래의 명령어로 설치해줍니다.

 

ㅁ /etc/named.conf 설정

/etc/named.conf 는 네임서버의 기본 환경 설정 파일입니다.

 

 

위 면에서 네모 친 부분을 수정해줘야 됩니다.

 

options {
listen-on port 53 { 127.0.0.1; };                                                                          //네임서버의 포트번호와 접근할 수 있는 IP 를 설정
listen-on-v6 port 53 { ::1; };
directory
"/var/named";                                                                                                        //DNS  zone 파일 위치를 지정하는 곳
dump-file
"/var/named/data/cache_dump.db";                                                         //정보가 갱신될 때 저장되는 파일
statistics-file "/var/named/data/named_stats.txt";                              //통계 파일이 생성되는 절대경로와 파일이름을 지정
memstatistics-file "/var/named/data/named_mem_stats.txt";      //메모리 관련 통계파일이 생성되는 절대경로와 파일이름을 지정
allow-query { localhost; };                                                                                 //네임서버 query 를 허용할 IP 를 설정
recursion yes;                                                                                                        //외부에서 현재의 네임서버를 지정해서 사용할 수 있게 하는지 
dnssec-enable yes;                                                                                                 유무를 설정
dnssec-validation yes;


bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};

};                                                            //로그 파일 생성 위치를 지정
zone "." IN {
type hint;                                          //type 값은 hint(루트도메인 지정), master(1 차 네임서버 지정), slave(2 차 네임서버 지정)
file "named.ca";                            //루트 도메인(“.”)에 대한 설정을 named.ca 라는 파일에서 참조
};


include "/etc/named.rfc1912.zones";                                              //네임서버 데몬 실행시 /etc/named.rfc1912.zones 을 포함
include "/etc/named.root.key";

 

 

  • - listen-on port 53 { any; };                   -> 외부에서 네임서버에 접근할수 있도록 any 로 변경
  • - allow-query { any; };                            -> 외부에서 오는 query 를 받아야 하므로 any 로 변경
  • - recursion no;                                 -> no 로 설정한 경우 외부에서 현재의 네임서버 query 시 그 결과값을 받을 수 없습니다.                                                       구축할 때는 동작 확인을 위해 yes 로 두고 운영할 때는 네임서버 보안을 위해 no 로 두는게 좋습니다.

 

 

 

ㅁ /etc/named.rfc1912.zones 설정

 

etc/named.rfc1912.zones zone 파일(실제로 도메인 주소와 IP 등의 정보를 설정한 파일)의 위치 및 zone 영역에 대한 설정을 담당합니다. DNS 서버에 대한 정방향, 역방향 선언에 대한 값을 담는 파일입니다.

현재 기본적인 설정만 되어 있는 상태입니다.

 

## 로컬 호스트 도메인에 대한 설정

zone "localhost.localdomain" IN {

type master;
file "named.localhost";
allow-update { none; };
}; 


## 로컬 호스트 도메인에 대한 설정

zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};


## ipv6 에 대한 로컬 호스트 루프백 설정
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};


## 로컬 호스트에 대한 루프백 인버스 도메인 설정

zone "1.0.0.127.in-addr.arpa" IN {

type master;
file "named.loopback";
allow-update { none; };
};


## 제로 호스트에 대한 루프백 설정

zone "0.in-addr.arpa" IN {

type master;                                                                                    - 도메인을 추가할 경우 맨 아랫줄에 정방향과 역방향에 대해 추가해줍니다.
file "named.empty";
allow-update { none; };
};


## test.com 도메인의 네임서버에 대한 설정

zone "test.com" IN {                                                                    - 구매한 도메인 입력
type master;                                                                                   - 서버타입 지정
file "test.com.zone";                                                                   - zone 파일 이름 설정
allow-update { none; };                                                              - 동기화 할 slave 서버의 IP 지정(없을 경우 none;)
}; 


## 현재의 서버 IP 를 도메인으로 매핑하는 인버스 도메인 설정입니다. 자신의 IP 주소의 마지막 자리를 빼고 역순으로 입력하시면 됩니다. 예를 들어 현재 서버 ip 가 1.2.3.4 이라면, 마지막 4 을 빼고 역순으로  3.2.1를 사용하면 됩니다.

zone "10.168.192.in-addr.arpa" IN {
type master;
file "10.168.192.zone";
allow-update { none; };
};

 

 

ㅁ 정방향 zone 파일, reverse 파일 생성

/var/named 디렉토리로 이동합니다.

Named.localhost 파일을 이용해 zone 파일과 reverse 파일을 생성합니다.

cp -arp named.localhost test.com.zone

cp -arp named.localhost test.com.rev

 

 

cp 명령어를 이용하여 정방향 파일과 역방향 파일을 생성합니다. cp 명령어에 옵션을 줘서 복사하였기 때문에 권한까지 복사 되었습니다.

여기서 중요한 점은 소유 그룹입니다. 소유 그룹이 named 권한으로 되어 있지 않으면 나중에 bind zone 파일을 못 찾기 때문에 만약 소유 그룹이 다른 권한일 때는 named 로 변경해줘야 됩니다.

 

 

ㅁ 정방향 zone 파일

- ; (세미콜론) : 주석을 의미합니다.

-$TTL : Time To Live 의 약자로 sjm.com 의 호스트 이름을 질의해 갔을 때, 질의해 간 다른 네임서버가 해당 IP 주소를 캐시에 저장하는 기간 입니다.(3H - 3 시간, 1D - 1 , 10M - 10 , 8600 - 24 시간, 600 - 10 )

-@ : /etc/named.rfc1912.zones 에 정의된 test.com.을 의미합니다.(@ 대신 도메인을 직접 적어주려면 반드시 마지막에 루트도메인(.)을 입력해주어야 합니다.)

-IN : 클래스 이름으로 internet 을 의미합니다.

-SOA 레코드 : Start Of Authority 의 약자로 권한의 시작을 뜻하며, 괄호 안의 숫자는 시간을 의미하는데 차례로 serial(버전 정보), refresh(상위 네임 서버에게 업데이트 된 정보를 요청하는 간격), retry(상위 네임 서버에 문제 발생시 재접속 간격), expire(상위 네임 서버에 접속 못할 경우 이전의 정보를 파기하는 간격), minimum(이 시간 이후에 정보가 삭제됨)을 말함. H Hour, D Day, W Week 의 약자입니다. SOA ns.test.com 의 도메인에 대한 모든정보를 가지고 있으며, 관리자는 root@test.com 이라는 메일로 설정하고 있습니다.(@는 특수문자로 인식하기 때문에대신 .을 사용합니다.)

-NS 레코드 : Name Server 의 약자로 설정된 도메인의 네임 서버 역할을 하는 컴퓨터를 지정합니다.

-MX 레코드 : Mail Exchanger 의 약자로 메일 서버 컴퓨터를 설정함, IN MX 10 mail.test.com. 에서 10 은 메일주소의 우선순위를 위한 숫자 입니다.

-A 레코드 : 호스트 이름에 상응하는 IP 주소를 지정합니다.

-CNAME 레코드 : 호스트 이름에 대한 별칭을 부여할 때 사용합니다, 간혹 적용이 안되는 경우가 있으므로 A

-PTR 레코드 : IP 주소에 대한 호스트 명입니다.

test.com. IN TXT "v=spf1 ip4:*.*.*.* ~all" : 위 메일발송 IP 를 위조하여 보내온 메일은 수신자의 메일서버의 정책에 따라 판단하라 라는 뜻입니다. SPF 는 메일발신서버 인증 중 하나로서 소유하신 도메인의 SPF 레코드를 확인하거나, SPF 레코드 작성을 도와주는 곳입니다.

- reverse(역방향) 파일

 

 

3. DNS 서비스 시작 및 확인

ㅁ DNS 서비스 시작

모든 설정이 끝났기 때문에 named 서비스를 시작해줍니다.

/etc/init.d/named start or service named start 명령어로 시작해주면 됩니다.

 

 

 

ㅁ DNS 테스트

named-checkconf /etc/named.rfc1912.zones

named-checkconf /etc/named.conf

 

named-checkconf 명령어를 통해 파일을 체크합니다.

아무런 메시지도 나오지 않는다면 정상입니다.

 

 

zone 파일의 경우 아래의 명령어로 체크합니다.

named-checkzone test.com /var/named/test.com.zone

* named-checkzone [도메인] [파일 경로]

Ok 가 나오면 정상입니다.

 

 

 

네임서버의 응답을 확인합니다.

nslookup [찾고자 하는 호스트 이름] [질의할 네임서버]

 

 

만약 네임서버를 지정하지 않으면 /etc/resolv.conf 에 지정된 네임서버에 질의를 합니다.

/etc/resolv.conf 파일도 자신의 IP 주소로 변경해주어야 합니다.

nameserver [자신의 ip]

 

728x90
반응형
LIST