웹사이트 검색

CentOS 6에 BIND DNS 서버를 설치하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 CentOS 버전에 대해 설명합니다. 현재 CentOS 6을 실행하는 서버를 운영 중인 경우 지원되는 CentOS 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

이유:

대신 참조:

전문

이 기사에서는 BIND DNS 서버를 설정하고 구성하는 방법을 보여줍니다. DigitalOceans 통합 DNS 서비스 사용 방법에 대한 가이드를 찾고 있다면 대신 "DigitalOcean으로 호스트 이름을 설정하는 방법" 문서를 검토할 수 있습니다.

시작하기 전에 네임서버를 실행할 클라우드 서버가 두 개 이상 있는 것이 좋습니다. 실패 시 기본 서버와 보조 서버가 중복되도록 두 개의 이름 서버가 제안됩니다. 두 개의 서로 다른 POP 사용을 고려할 수도 있습니다. 예를 들어 San Francisco 1과 New York 1을 사용했습니다. 이 가이드에서는 기본 및 보조 이름 서버를 모두 구성한다고 가정합니다.

많은 수의 도메인을 관리하는 경우 마스터 및 슬레이브 이름 서버 모두에 도메인을 수동으로 추가해야 하므로 이것이 가장 실행 가능한 솔루션이 아닐 수 있다는 점에 유의해야 합니다. 즉, 자체 네임서버를 실행하는 것은 호스팅 인프라를 보다 직접적으로 제어하고 DNS 레코드를 완전히 제어할 수 있는 좋은 방법입니다.

새 서버와 마찬가지로 시스템을 최신 상태로 유지하는 것이 항상 중요합니다. 다음과 같이 yum을 사용하여 업데이트를 확인하여 이를 확인할 수 있습니다.

yum update -y

(참고: DigitalOcean에서는 클라우드 서버를 "물방울"이라고 부릅니다. 이 튜토리얼 전체에서 두 용어를 모두 사용합니다.)

초기 BIND 설치

시작하려면 yum을 사용하여 BIND 및 BIND 유틸리티 패키지를 설치해야 합니다.

yum install bind bind-utils -y

다음으로 BIND(명명된) 구성 파일을 잘 열고 몇 가지를 수정합니다.

nano -w /etc/named.conf

"옵션" 섹션은 다음과 같이 나타나야 하며 2.2.2.2를 두 번째 드롭릿의 IP로 바꿉니다.

options {
	    #listen-on port 53 { 127.0.0.1; };
        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 { any; };
        allow-transfer     { localhost; 2.2.2.2; };
        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";
};

위에서 listen-on은 사용 가능한 모든 인터페이스에서 수신 대기하도록 주석 처리되어야 합니다. 서버가 "반사" DDoS 공격에 남용되는 것을 방지하려면 재귀를 꺼야 합니다. allow-transfer 지시문 화이트리스트는 보조 드롭릿 IP로 전송합니다. 또한 사용자가 호스팅 영역에 올바르게 액세스할 수 있도록 allow-query 지시문을 "any"로 변경했습니다.

다음으로 첫 번째 도메인에 새 영역을 추가하려면 기존 영역 아래의 named.conf에 다음을 추가해야 합니다.

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

위의 변경 사항과 함께 named.conf를 저장한 후 첫 번째 영역 파일을 만들 준비가 되었습니다.

BIND 영역 구성

먼저 위의 구성에서 지정한 이름을 사용하여 영역 파일을 열어야 합니다. (예: mydomain.com.zone)

nano -w /var/named/mydomain.com.zone

새로 만든 파일에 다음 내용을 추가하십시오. 해당 정보를 자신의 정보로 바꿔야 합니다. 여기서 1.1.1.1은 첫 번째 드롭릿의 IP이고, 2.2.2.2는 두 번째 드롭릿의 IP이며, 3.3.3.3은 도메인 자체를 가리키려는 IP입니다. 웹 서버를 실행하는 물방울. 동일한 형식으로 추가 항목을 자유롭게 추가할 수 있습니다.

$TTL 86400
@   IN  SOA     ns1.mydomain.com. root.mydomain.com. (
        2013042201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
; Specify our two nameservers
		IN	NS		ns1.mydomain.com.
		IN	NS		ns2.mydomain.com.
; Resolve nameserver hostnames to IP, replace with your two droplet IP addresses.
ns1		IN	A		1.1.1.1
ns2		IN	A		2.2.2.2

; Define hostname -> IP pairs which you wish to resolve
@		IN	A		3.3.3.3
www		IN	A		3.3.3.3

이제 처음으로 이름을 지정할 수 있습니다. 이름이 처음 실행될 때만 발생하는 rndc.key 파일을 생성하는 동안 몇 분 정도 걸릴 수 있습니다.

service named restart

이름이 성공적으로 시작되면 다음을 실행하여 시작 서비스로 활성화되었는지 확인하십시오.

chkconfig named on

지금쯤이면 완전히 작동하는 기본 네임서버가 있어야 합니다. 1.1.1.1을 첫 번째 드롭릿의 IP로 대체하여 다음 명령을 실행하여 BIND가 올바르게 작동하는지 확인할 수 있습니다.

dig @1.1.1.1 mydomain.com

답변 및 권한 섹션이 포함된 응답을 받으면 네임서버가 올바르게 구성된 것입니다.

슬레이브 네임서버 구성

기본 네임서버가 구성되었으므로 이제 두 번째 클라우드 서버에 슬레이브 네임서버를 설정합니다.

항상 그렇듯이 다음과 같이 yum으로 업데이트를 확인하여 시스템이 최신 상태인지 확인하십시오.

yum update -y

첫 번째와 같은 방식으로 두 번째 드롭릿에 BIND(및 관련 유틸리티)를 설치하여 시작할 수 있습니다.

yum install bind bind-utils -y

named.conf를 열고 이전에 변경한 것과 동일하게 변경하여 "allow transfer" 줄을 생략합니다. 기본 이름 서버에서만 레코드를 전송하므로 이 지시문은 필요하지 않습니다.

nano -w /etc/named.conf
options {
		#listen-on port 53 { 127.0.0.1; };
        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 { any; };
        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";
};

첫 번째 드롭릿에 구성한 영역을 추가하고 이번에는 "type" 지시문을 마스터 대신 슬레이브로 변경합니다. "1.1.1.1"을 첫 번째 드롭릿 IP 주소로 바꿔야 합니다.

zone "mydomain.com" IN {
	type slave;
	masters { 1.1.1.1; };
	file "mydomain.com.zone";
};

슬레이브 영역을 구성한 후 명명을 시작합니다. 다시 rndc.key 파일이 처음 생성되는 동안 몇 분 정도 걸릴 수 있습니다.

service named start

첫 번째 클라우드 서버와 마찬가지로 시작 시 다음과 같이 named가 실행되도록 설정해야 합니다.

chkconfig named on

이제 슬레이브 네임서버가 실행 중이어야 합니다. dig를 다시 사용하여 2.2.2.2를 두 번째 드롭릿의 IP로 대체하여 완전히 작동하는지 확인할 수 있습니다.

dig @2.2.2.2 mydomain.com

마스터 영역 파일을 변경한 후에는 BIND에 다시 로드하도록 지시해야 합니다. 마스터와 슬레이브 간의 동기화를 보장하기 위해 "serial" 지시문도 증가시켜야 합니다.

영역 파일을 다시 로드하려면 마스터 이름 서버에서 다음 명령을 실행한 다음 슬레이브에서 실행해야 합니다.

rndc reload

chroot 환경에서 BIND

일반적으로 추가 패키지 "bind-chroot"를 설치하는 것이 좋습니다. 이 패키지는 BIND의 권한을 chroot 환경으로 떨어뜨립니다.

운 좋게도 CentOS 패키지는 이것을 매우 간단하게 만듭니다. 주목할만한 유일한 측면은 BIND의 활성 경로가 chrooted 등가물로 변경된다는 것입니다. 예를 들어 /var/named/var/named/chroot/var/named가 됩니다. CentOS 6에서는 패키지가 루트가 아닌 디렉토리에 대한 하드 심볼릭 링크를 자동으로 생성하므로 파일을 이동할 필요가 없습니다.

제공하는 추가 보안을 위해 이 기능을 활성화하려면 다음을 수행할 수 있습니다.

yum install bind-chroot -y
service named restart