웹사이트 검색

RHEL/CentOS 6.5에서 "바인드" 도구를 사용하여 마스터-슬레이브 DNS 서버 설정


도메인 이름 서버(DNS)는 모든 호스트에 대한 이름 확인에 사용됩니다. 마스터 DNS 서버(기본 서버)는 원래 영역 데이터 처리기이고 슬레이브 DNS 서버(보조 서버)는 동일한 영역 정보를 복사하는 데 사용되는 백업 서버일 뿐입니다. 마스터 서버. 마스터 서버는 영역 데이터베이스에 정의된 모든 호스트의 이름을 확인하고 UDP 프로토콜을 사용합니다. UDP 프로토콜은 승인 프로세스를 사용하지 않지만 tcp는 승인을 사용하기 때문입니다. DNS 서버는 또한 UDP 프로토콜을 사용하여 쿼리 요청을 가장 빨리 해결합니다.

DNS는 어떻게 작동하나요?

초보자에게는 DNS를 이해하는 것이 약간 혼란스러울 수 있습니다. 다음은 DNS 작동 방식에 대한 간략한 설명입니다.

예를 들어, 웹사이트에 액세스해야 한다면 어떻게 해야 할까요? 브라우저에 www.google.com을 입력하고 Enter 키를 누르세요. 흠 그게 우리가 아는 전부입니다. 하지만 사실은 DNS가 우리를 쿼리하는 동안 얼마나 고통을 겪는가입니다. www.google.com을 입력하는 동안 시스템은 www.google.com을 찾습니다. 도메인 이름을 입력할 때마다 www.google.com 끝에는 네임스페이스의 루트 서버를 검색하라는 .()이 있습니다.

전 세계적으로 쿼리를 해결하는 데 사용할 수 있는 13개의 루트 서버가 있습니다. 처음에 www.google.com을 입력하는 동안 브라우저는 마스터 및 슬레이브 DNS 서버 정보에 대한 항목이 있는 로컬 확인자에게 요청을 전달합니다. 요청된 쿼리에 대한 정보가 없으면 요청을 최상위 도메인(TLD)으로 전달합니다. TLD에서 내가 요청을 모른다고 하면 권한 있는 서버가 귀하의 정보를 알고 있을 수 있습니다. 요청하면 권한 있는 서버로 전달됩니다. 여기서는 www.google.com만 주소 72.36.15.56으로 정의되었습니다.

그 동안 권한 있는 서버는 TLD에 대한 답변을 제공하고 TLD는 루트 서버로 전달되고 루트는 브라우저에 정보를 제공하므로 브라우저는 나중에 사용할 수 있도록 DNS 요청을 캐시합니다. 따라서 이러한 긴 프로세스는 밀리초 안에 해결됩니다. 요청을 모르는 경우 NXDOMAIN으로 응답합니다. 즉, Zone 데이터베이스에서 아무 레코드도 발견되지 않았습니다. 이것이 DNS의 작동 방식을 이해하는 데 도움이 되기를 바랍니다.

추가 읽기: Ubuntu에서 DNS 캐시 서버 설정

내 테스트 환경

이 기사에서는 3대의 머신을 사용합니다. 2대는 서버 설정(마스터 및 슬레이브)용이고 1대는 클라이언트용입니다.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
요구사항 패키지
bind, bind-utils, bind-chroot
사용된 구성 파일
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
사용된 포트 및 프로토콜
53, UDP

마스터 DNS 서버 설정

먼저 설정을 진행하기 전에 마스터 DNS 서버의 IP 주소, 호스트 이름 및 배포 버전을 확인하세요.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

위의 설정이 올바른지 확인했다면 이제 필요한 패키지를 설치해야 합니다.

sudo yum install bind* -y

바인드 설치 및 구성

필수 패키지를 설치한 후 이제 마스터 구성 'named.conf' 파일에서 영역 파일을 정의합니다.

sudo vim /etc/named.conf

아래는 내 named.conf 파일 항목입니다. 필요에 따라 구성 파일을 변경하세요.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        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; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        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;
        file "named.ca";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

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

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

다음은 위 파일에서 사용한 각 구성에 대한 설명입니다.

  1. 수신 포트 53 – DNS가 사용 가능한 인터페이스를 수신하는 데 사용됩니다.
  2. 마스터 DNS – 쿼리를 수신할 마스터 DNS IP 주소를 정의합니다.
  3. 슬레이브 DNS – 마스터에서 호스트를 확인하기 위해 영역 정보를 동기화하는 데 사용되는 슬레이브 DNS를 정의합니다.
  4. recursion no – yes로 설정하면 재귀 쿼리가 서버를 DDOS 공격으로 만듭니다.
  5. 영역 이름 – 여기에서 tecminlocal.com으로 정의된 영역 이름을 정의하십시오.
  6. 마스터 유형 – 이 시스템은 마스터 서버용으로 구성되었으므로 향후 슬레이브 서버에서는 슬레이브 서버가 됩니다.
  7. tecmintlocal.fwd.zone – 이 파일에는 이 영역에 대한 호스트 정보가 있습니다.
  8. allow-update none – 아무것도 설정되지 않는 경우. 동적 DNS(DDNS)를 사용하지 않습니다.

마스터 영역 파일 생성

먼저 정방향 조회 영역 항목을 정의하겠습니다. 여기서는 아래와 같이 named.conf 파일에 정의한 이름으로 영역 파일을 생성해야 합니다.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

정방향 영역 파일을 생성하기 위해 샘플 구성 파일을 사용합니다. 이를 위해 샘플 구성 파일을 복사해야 합니다.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

구성 파일을 복사했다면 이제 vim 편집기를 사용하여 이러한 영역 파일을 편집하세요.

sudo vim /var/named/tecmintlocal.fwd.zone

정방향 영역 파일에서 호스트 정보를 정의하기 전에 먼저 샘플 영역 파일을 간략하게 살펴보세요.

이것은 내 정방향 영역 구성입니다. 아래 항목을 추가하고 필요에 따라 변경합니다.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

wq!를 사용하여 파일을 저장하고 종료합니다. 정방향 조회를 편집한 후에는 아래와 같습니다. TAB을 사용하여 영역 파일에서 적절한 형식을 얻으세요.

이제 역방향 조회 파일을 만듭니다. 이미 tecmintlocal.rev.zone이라는 이름으로 루프백 파일의 복사본을 만들었습니다. 따라서 이 파일을 사용하여 역방향 조회를 구성합니다.

sudo vim /var/named/tecmintlocal.rev.zone

역방향 영역 파일에서 호스트 정보를 정의하기 전에 아래와 같이 샘플 역방향 조회 파일을 간략하게 살펴보세요.

이것은 내 역방향 영역 구성입니다. 아래 항목을 추가하고 필요에 따라 변경하세요.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

wq!를 사용하여 파일을 저장하고 종료합니다. 역방향 조회를 편집하면 아래와 같습니다. TAB을 사용하여 영역 파일에서 적절한 형식을 얻으세요.

구성 오류를 확인하기 전에 정방향 조회 및 역방향 조회 파일의 그룹 소유권을 확인하세요.

sudo ls -l /var/named/

샘플 파일에서 복사본을 만드는 파일은 /var/named/에서 사용할 수 있으므로 여기에서 두 파일이 모두 루트 사용자 소유권에 있음을 알 수 있습니다. 다음 명령을 사용하여 두 파일 모두에서 그룹 이름을 변경합니다.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

파일에 올바른 소유권을 설정한 후 다시 확인하세요.

sudo ls -l /var/named/

이제 DNS 서비스를 시작하기 전에 영역 파일의 오류를 확인하십시오. 먼저 named.conf 파일을 확인한 다음 다른 영역 파일을 확인하세요.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

기본적으로 iptables가 실행 중이었고 DNS 서버는 localhost로 제한되어 있습니다. 클라이언트가 DNS 서버에서 이름을 확인하려는 경우 인바운드 요청을 허용해야 합니다. 이를 위해서는 포트 53에 대한 iptables 인바운드 규칙을 추가해야 합니다.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

이제 INPUT 체인에 규칙이 올바르게 추가되었는지 확인하세요.

sudo iptables -L INPUT

다음으로 규칙을 저장하고 방화벽을 다시 시작하세요.

sudo service iptables save
sudo service iptables restart

명명된 서비스를 시작하고 이를 지속적으로 만듭니다.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

마지막으로 dignslookup 도구를 사용하여 구성된 마스터 DNS 영역 파일(정방향 및 역방향)을 테스트합니다.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

시원한! 마스터 DNS를 구성했으므로 이제 슬레이브 DNS 서버를 설정해야 합니다. 슬레이브 서버 설정을 진행해 보겠습니다. 마스터 설정만큼 시간이 많이 걸리지 않습니다.

슬레이브 DNS 서버 설정

슬레이브 컴퓨터에서도 마스터와 동일한 바인딩 패키지를 설치해야 하므로 다음 명령을 사용하여 설치해 보겠습니다.

sudo yum install bind* -y

영역 데이터베이스 및 포트 수신을 위해 'named.conf' 파일을 열고 편집합니다.

sudo vim /etc/named.conf

요구 사항에 따라 표시된 대로 변경합니다.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        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; 192.168.0.0/24; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        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;
        file "named.ca";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

다음을 사용하여 DNS 서비스를 시작하십시오.

sudo service named start

바인딩 서비스를 다시 시작한 후에는 아래 이미지와 같이 allow-transfer가 마스터 서버에서 영역 정보를 복제하므로 영역 정보를 개별적으로 정의할 필요가 없습니다.

sudo ls -l /var/named/slaves

cat 명령을 사용하여 영역 정보를 확인합니다.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

그런 다음 iptables에서 DNS 포트 53을 열어 인바운드 연결을 허용합니다.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

iptables 규칙을 저장하고 iptables 서비스를 다시 시작하십시오.

sudo service iptables save
sudo service iptables restart

시스템 부팅 시 서비스가 지속되도록 만듭니다.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

그게 다야!. 이제 클라이언트 시스템을 구성하고 호스트 이름을 확인할 차례입니다.

클라이언트 시스템 구성

클라이언트 측에서 호스트 이름을 할당하려면 네트워크 설정에서 기본(192.168.0.200) 및 보조 DNS(192.168.0.201) 항목을 할당해야 합니다. 이를 수행하려면 setup 명령을 실행하여 그림에 표시된 대로 이러한 모든 항목을 정의하십시오.

setup

그렇지 않으면 '/etc/reslov.conf' 파일을 편집하고 다음 항목을 추가하십시오.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

이제 IP, 호스트 이름 및 이름 서버 조회를 확인하십시오.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

이제 정방향 및 역방향 DNS 조회를 사용하여 확인하십시오.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

발굴 결과 이해하기:

  1. 헤더 - 여기에는 우리가 요청한 모든 내용과 결과가 어땠는지 알려줍니다.
  2. 상태 – 상태가 NO ERROR였습니다. 이는 우리가 보낸 쿼리 요청이 오류 없이 성공했음을 의미합니다.
  3. 질문 – 우리가 만든 쿼리입니다. 여기서 내 쿼리는 masterdns.tecmintlocal.com이었습니다.
  4. 답변 – 사용 가능한 정보가 있으면 쿼리 요청이 해결되었습니다.
  5. Authority – 도메인 및 영역에 대한 이름 서버 응답입니다.
  6. 추가 – 호스트 이름, IP 주소 등 네임서버에 관한 추가 정보입니다.
  7. 쿼리 시간 – 위 서버에서 이름을 확인하는 데 걸린 시간입니다.

마지막으로 노드를 확인하고 ping을 실행합니다.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

마지막으로 설정이 완료되었습니다. 여기서는 기본(마스터) 및 슬레이브(보조) DNS 서버를 모두 성공적으로 구성했습니다. 모두가 문제 없이 설정하길 바랍니다. 설정하는 동안 문제가 발생하면 언제든지 의견을 남겨주세요.