웹사이트 검색

Rocky Linux 9에서 BIND로 DNS 서버를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시스템 준비
  3. BIND 패키지 설치
  4. 마스터 BIND DNS 서버 구성
    1. 기본 구성
    2. 영역 설정

    BIND 또는 Berkeley Internet Name Domain은 무료 오픈 소스 DNS 서버 소프트웨어입니다. 인터넷에서 DNS의 70% 이상이 사용하는 가장 인기 있는 DNS 서버 소프트웨어 중 하나입니다. BIND는 1980년대부터 사용되어 왔으며 유연성, 성능 및 기능으로 잘 알려져 있습니다. BIND는 신뢰할 수 있는 DNS 및 캐싱 DNS로 사용할 수 있으며 로드 밸런싱, 동적 업데이트, 분할 DNS, DNSSEC, IPv6 등을 지원합니다.

    BIND DNS 소프트웨어는 Unix 계열 운영 체제에서 가장 안정적인 DNS 서버 중 하나입니다. 대부분의 Linux 배포판에서 사용할 수 있으며 DNS 서버의 진단 및 테스트를 위한 추가 도구를 제공합니다.

    이 튜토리얼은 Rocky Linux 9 서버에서 BIND로 DNS 서버를 설정하는 방법을 보여줍니다. BIND는 신뢰할 수 있는 DNS, 캐시 전용 DNS, 기본 DNS 로드 밸런싱, 분할 DNS, DNSSEC, IPv6 등과 같은 다양한 기능을 제공하는 가장 널리 사용되는 DNS 서버 소프트웨어 중 하나입니다.

    전제 조건

    이 자습서에서는 마스터-슬레이브 아키텍처로 BIND DNS 서버를 설정하고 구현합니다. 따라서 두 개의 Rocky Linux 서버가 필요합니다. 또한 각 서버에 대한 루트/관리자 권한이 필요합니다.

    도메인(Authoritative DNS Server)을 처리할 수 있는 퍼블릭 DNS 서버를 설정하려면 도메인 이름을 등록하고 Glue 레코드를 구성해야 합니다.

    또한 이 가이드에서는 SELinux가 허용 모드로 실행 중이라고 가정합니다.

    시스템 준비

    이 가이드를 시작하려면 각 Rocky Linux 서버에 올바른 FQDN(정규화된 도메인 이름)을 설정해야 합니다. hostnamectl 명령 유틸리티와 /etc/hosts 파일을 통해 이 작업을 수행할 수 있습니다.

    다음은 이 가이드의 예로 사용될 상세 서버입니다.

    Hostname    IP Address          FQDN                    Used as
    ---------------------------------------------------------------
    ns1         192.168.5.100       ns1.hwdomain.io         Master
    ns2         192.168.5.120       ns2.hwdomain.io         Slave

    마스터 서버에서 아래 hostnamectl 명령 유틸리티를 실행하여 fqdn을 ns1.hwdomain.io로 설정합니다.

    sudo hostnamectl set-hostname ns1.hwdomain.io

    아래에서는 슬레이브 서버에서 hostnamectl 명령을 실행하여 fqdn을 ns2.hwdomain.io로 설정해야 합니다.

    sudo hostnamectl set-hostname ns2.hwdomain.io

    다음으로 다음 nano 편집기 명령을 사용하여 마스터 및 슬레이브 서버 모두에서 /etc/hosts 파일을 엽니다.

    sudo nano /etc/hosts

    파일에 다음 줄을 추가합니다.

    192.168.5.100   ns1.hwdomain.io     ns1
    192.168.5.120   ns2.hwdomain.io     ns2

    완료되면 파일을 저장하고 편집기를 종료하십시오.

    마지막으로 다음 호스트 이름 명령을 실행하여 각 서버에서 fqdn을 확인합니다. 마스터 서버에는 fqdn이 ns1.hwdomain.io이고 슬레이브 서버에는 fqdn이 ns2.hwdomain.io인 것을 볼 수 있습니다.

    sudo hostname -f

    아래는 마스터 서버의 출력입니다.

    그리고 아래는 슬레이브 서버의 출력입니다.

    fqdn이 구성되면 Rocky Linux 서버에 BIND를 설치할 준비가 된 것입니다.

    BIND 패키지 설치

    기본적으로 Rocky Linux AppStream 리포지토리는 BIND 패키지의 안정적인 최신 버전을 제공합니다. 이 글을 쓰는 시점에서 BIND의 현재 안정적인 버전은 v9.16입니다.

    이 단계에서는 마스터 및 슬레이브 서버 모두에 BIND 패키지를 설치합니다. 그런 다음 IPv4에서만 실행되도록 BIND를 설정하고 DNS 포트를 허용하도록 방화벽을 구성합니다.

    마스터 및 슬레이브 서버 모두에 BIND 패키지를 설치하려면 아래 dnf 명령을 실행하십시오. 확인 메시지가 표시되면 y를 입력하여 확인하고 ENTER를 눌러 계속 진행합니다.

    sudo dnf install bind bind-utils

    BIND 패키지가 설치된 후 다음 nano 편집기 명령을 사용하여 /etc/sysconfig/named 구성을 엽니다.

    sudo nano /etc/sysconfig/named

    다음 줄에 기본 OPTIONS=..를 추가합니다. bind 또는 named에 대한 이 명령 옵션은 IPv4에서만 BIND를 실행합니다.

    OPTIONS="-4"

    파일을 저장하고 완료되면 편집기를 종료하십시오.

    그런 다음 아래의 systemctl 명령 유틸리티를 실행하여 named BIND 서비스를 시작하고 활성화합니다. 이제 명명된 서비스가 실행 중이고 활성화되어 부팅 시 자동으로 시작됩니다.

    sudo systemctl start named
    sudo systemctl enable named

    이제 이름이 지정된 서비스를 확인하여 서비스가 실행 중이고 다음 명령을 통해 활성화되어 있는지 확인하십시오.

    sudo systemctl is-enabled named
    sudo systemctl status named

    다음과 유사한 출력을 받게 됩니다. BIND 명명된 서비스가 활성화되고 현재 실행 중입니다.

    BIND 명명된 서비스가 실행 중이면 Rocky Linux에서 기본적으로 활성화되고 실행되는 방화벽에 DNS 포트를 추가해야 합니다.

    아래의 firewall-cmd 명령 유틸리티를 실행하여 DNS 서비스를 firewalld에 추가합니다. 그런 다음 방화벽을 다시 로드하여 변경 사항을 적용합니다.

    sudo firewall-cmd --add-service=dns --permanent
    sudo firewall-cmd --reload

    firewalld에서 활성화된 서비스 목록을 확인하면 DNS 서비스가 활성화된 것을 볼 수 있습니다. 아래의 firewall-cmd 명령을 실행하여 서비스 목록을 확인합니다.

    sudo firewall-cmd --list-services

    산출:

    이 시점에서 fqdn 구성을 완료하고 BIND 패키지를 설치했으며 방화벽도 구성했습니다. 이를 염두에 두고 이제 마스터 서버에서 BIND 마스터 구성을 시작할 수 있습니다.

    마스터 BIND DNS 서버 구성

    이 단계에서는 Rocky Linux ns1.hwdomain.io를 사용하여 BIND 마스터 서버를 설정하고 서버 IP 주소는 192.168.5.100입니다. 마스터 서버에서 다음 명령을 실행해야 합니다.

    다음 단계에 따라 BIND 마스터 서버를 구성합니다.

    • 기본 구성에는 ACL(액세스 제어 목록) 구성, BIND 서비스를 실행할 IP 주소 설정, 전달자 설정 등이 포함됩니다.\n
    • 영역 설정 - 도메인에 대한 구성을 만드는 곳입니다. 여기에는 기본 도메인 구성과 역방향 DNS 구성이 포함됩니다.\n

    기본 구성

    RHEL 기반 배포의 기본 BIND 구성은 /etc/named.conf에서 사용할 수 있습니다.

    이제 아래의 나노 편집기 명령을 사용하여 /etc/named.conf 파일을 엽니다.

    sudo nano /etc/named.conf

    다음 줄을 사용하여 기본 구성을 변경합니다.

    acl "trusted" {
            192.168.5.100;    # ns1 - or you can use localhost for ns1
            192.168.5.120;    # ns2
            192.168.5.0/24;  # trusted networks
    };

    options {
            listen-on port 53 { 192.168.5.100; };

            // 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";
            secroots-file   "/var/named/data/named.secroots";
            recursing-file  "/var/named/data/named.recursing";
            
            allow-query     { localhost; trusted; };

            recursion yes;
            allow-recursion { trusted; };
            allow-transfer { localhost; 192.168.5.120; };

            forwarders {
                    8.8.8.8;
                    1.1.1.1;
            };

    완료되면 파일을 저장하고 편집기를 종료하십시오.

    이 구성을 사용하여 다음 구성으로 BIND를 설정합니다.

    • 로컬 네트워크의 모든 쿼리를 허용하는 신뢰할 수 있는 ACL을 설정합니다.\n
    • 192.168.5.100에서 기본 포트 53으로 BIND 서비스를 실행합니다.\n
    • 재귀를 활성화하고 신뢰할 수 있는 ACL 네트워크에서 재귀를 허용합니다.\n
    • IP 주소가 192.168.5.120인 슬레이브 서버로 영역 전송을 허용합니다.\n
    • Cloudflare의 공개 DNS 서버 1.1.1.1 및 Google의 8.8.8.8로 전달자를 설정합니다.\n

    그런 다음 아래 명령을 실행하여 BIND 구성 /etc/named.conf을 확인합니다.

    sudo named-checkconf /etc/named.conf

    마지막으로 아래의 systemctl 명령 유틸리티를 실행하여 BIND 명명된 서비스를 다시 시작하고 변경 사항을 적용합니다.

    sudo systemctl restart named

    이제 BIND DNS 서버의 기본 구성이 완료되었습니다.

    영역 설정

    이제 BIND DNS 서버로 영역을 설정합니다. 주소 ns1.hwdomain.io 및 ns2.hwdomain.io를 사용하여 새 DNS 서버를 만듭니다.

    시작하려면 아래의 nano 편집기 명령을 통해 BIND 구성 /etc/named.conf를 엽니다.

    sudo nano /etc/named.conf

    줄 맨 아래에 다음 구성을 추가합니다.

    include "/etc/named/zones.conf.local";

    완료되면 파일을 저장하고 편집기를 종료하십시오.

    다음으로 아래 nano 편집기를 사용하여 새 구성 /etc/named/zones.conf.local을 만듭니다.

    sudo nano /etc/named/zones.conf.local

    파일에 다음 줄을 추가합니다.

    zone "hwdomain.io" {
        type master;
        file "db.hwdomain.io";        # zone file path
        allow-transfer { 192.168.5.120; };           # ns2 IP address - secondary DNS
    };


    zone "5.168.192.in-addr.arpa" {
        type master;
        file "db.192.168.5";  # subnet 192.168.5.0/24
        allow-transfer { 192.168.5.120; };  # ns2 private IP address - secondary DNS
    };

    완료되면 파일을 저장하고 닫습니다.

    이 구성을 사용하여 다음 구성을 정의합니다.

    • 도메인 hwdomain.io 및 역방향 DNS 5.168.192.in-addr.arpa에 대해 두 개의 영역을 만듭니다.\n
    • 두 영역 모두 마스터로 입력합니다.\n
    • 서버 IP 주소 192.168.5.120에서 실행될 슬레이브 DNS 서버로 영역 전송을 허용합니다.\n

    다음으로 nano 편집기 명령을 사용하여 새 DNS 영역 구성 /var/named/db.hwdomain.io을 만듭니다.

    sudo nano /var/named/db.hwdomain.io

    파일에 다음 줄을 추가합니다.

    ;
    ; BIND data file for the local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                                  3         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;

    ; NS records for name servers
        IN      NS      ns1.hwdomain.io.
        IN      NS      ns2.hwdomain.io.

    ; A records for name servers
    ns1.hwdomain.io.          IN      A       192.168.5.100
    ns2.hwdomain.io.          IN      A       192.168.5.120

    ; Mail handler or MX record for the domain hwdomain.io
    hwdomain.io.    IN     MX   10   mail.hwdomain.io.

    ; A records for domain names
    hwdomain.io.            IN      A      192.168.5.50
    mail.hwdomain.io.       IN      A      192.168.5.15

    완료되면 파일을 저장하고 닫습니다.

    이 예에서는 다음 구성으로 영역을 설정합니다.

    • 이름 서버 레코드 ns1.hwdomain.io를 IP 주소 192.168.5.100으로 정의하고 ns2.hwdomain.io를 IP 주소 192.168.5.120으로 정의합니다.\n
    • 서버 IP 주소 192.168.5.50으로 확인될 두 개의 추가 도메인 hwdomain.io와 IP 주소 192.168.5.15로 도메인 mail.hwdomain.io를 정의합니다.\n
    • 또한 메일 서버 mail.hwdomain.io가 처리할 도메인 hwdomain.io에 대한 MX 레코드를 생성합니다.\n

    다음으로 도메인 hwdomain.io에 대한 역방향 DNS 구성을 시작합니다.

    아래 nano 편집기 명령을 사용하여 새 역방향 DNS 구성 /var/named/db.192.168.5을 만듭니다.

    sudo nano /var/named/db.192.168.5

    파일에 다음 줄을 추가합니다.

    ;
    ; BIND reverse data file for the local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                                  3         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;

    ; name servers - NS records
          IN      NS      ns1.hwdomain.io.
          IN      NS      ns2.hwdomain.io.

    ; PTR Records
    100   IN      PTR     ns1.hwdomain.io.    ; 192.168.5.100
    120   IN      PTR     ns2.hwdomain.io.    ; 192.168.5.120
    50    IN      PTR     hwdomain.io.        ; 192.168.5.50
    15    IN      PTR     mail.hwdomain.io.   ; 192.168.5.15

    완료되면 파일을 저장하고 닫습니다.

    이 구성을 사용하면 아래와 같이 역방향 DNS 또는 PTR 레코드를 설정합니다.

    • 역방향 DNS 구성에서는 이름 서버 ns1.hwdomain.io 및 ns2.hwdomain.io도 정의합니다.\n
    • 각 역방향 DNS 구성은 각 도메인으로 확인된 IP 주소의 마지막 번호를 사용합니다. 이 예에서 IP 주소가 192.168.5.100인 이름 서버 ns1.hwdomain.io와 PTR 레코드는 100이어야 합니다.\n
    • 나머지 PTR 레코드는 위에서 설명한 것과 동일합니다.\n

    이 시점에서 도메인 hwdomain.io에 대한 두 개의 영역 구성을 만들고 이름 서버 ns1.hwdomain.io 및 ns2.hwdomain.io를 만들었습니다.

    이제 아래 chmod 명령을 실행하여 두 영역 구성의 소유권을 변경합니다.

    sudo chown -R named: /var/named/{db.hwdomain.io,db.192.168.5}

    그런 다음 아래의 named-checkconf 명령 유틸리티를 통해 영역 구성 파일을 확인합니다.

    sudo named-checkconf
    sudo named-checkzone hwdomain.io /var/named/db.hwdomain.io
    sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

    적절한 BIND 구성이 있는 경우 다음 스크린샷과 같은 출력을 받게 됩니다.

    마지막으로 아래 systemctl 명령을 실행하여 BIND 명명된 서비스를 다시 시작하고 변경 사항을 적용합니다. 그런 다음 BIND 서비스 상태를 확인하여 서비스가 실행 중인지 확인하십시오.

    sudo systemctl restart named
    sudo systemctl status named

    다음과 유사한 출력이 표시됩니다. BIND named 서비스가 실행 중이고 BIND 마스터 구성이 완료되었습니다.

    다음 단계에서는 BIND 슬레이브 서버를 설정합니다.

    슬레이브 BIND DNS 서버 설정

    DNS 마스터 서버를 구성한 후 IP 주소가 192.168.5.120인 서버 ns2.hwdomain.io에서 BIND 슬레이브 서버 구성을 시작합니다.

    named.conf의 기본 구성은 BIND Master와 유사하며 zone 파일의 경우 BIND Slave 서버에 실제 파일을 생성하지 않고 파일명을 정의할 수 있다.

    시작하기 전에 BIND 슬레이브 서버에서 다음 명령을 실행했는지 확인하십시오.

    이제 아래 nano 편집기 명령을 통해 슬레이브 서버에서 BIND 구성 /etc/named.conf를 엽니다.

    sudo nano /etc/named.conf

    다음 줄을 사용하여 기본 구성을 변경합니다.

    acl "trusted" {
            192.168.5.100;    # ns1 - or you can use localhost for ns1
            192.168.5.120;    # ns2
            192.168.5.0/24;  # trusted networks
    };

    options {
            listen-on port 53 { 192.168.5.120; };

            //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";
            secroots-file   "/var/named/data/named.secroots";
            recursing-file  "/var/named/data/named.recursing";

            allow-query     { any; };

            recursion yes;
            allow-recursion { trusted; };
            allow-transfer { none; };

            forwarders {
                    8.8.8.8;
                    1.1.1.1;
            };

    };

    설정은 BIND 마스터 서버와 유사하며 아래는 설정의 일부 차이점입니다.

    • BIND 서비스는 슬레이브 서버의 IP 주소 192.168.5.120에서 실행됩니다.\n
    • 재귀가 활성화되었지만 전송 허용이 없음으로 구성되었습니다.\n

    이제 영역을 정의하기 위해 named.conf 파일의 맨 아래에 다음 행을 추가하십시오.

    include "/etc/named/zones.conf.local";

    완료되면 파일을 저장하고 편집기를 종료하십시오.

    그런 다음 다음 nano 편집기 명령을 사용하여 새 구성 /etc/named/zones.conf.local을 만듭니다.

    sudo nano /etc/named/zones.conf.local

    파일에 다음 줄을 추가합니다.

    zone "hwdomain.io" {
        type slave;
        file "slaves/db.hwdomain.io";
        masters { 192.168.5.100; };           # ns1 IP address - master DNS
    };


    zone "5.168.192.in-addr.arpa" {
        type slave;
        file "slaves/db.192.168.5";
        masters { 192.168.5.100; };  # ns1 IP address - master DNS
    };

    완료되면 파일을 저장하고 닫습니다.

    이를 통해 BIND 슬레이브 서버에서 아래의 일부 구성을 정의합니다.

    • 도메인 hwdomain.io 및 해당 역방향 DNS에 대해 두 개의 영역을 정의합니다.\n
    • 두 영역 유형 모두 슬레이브입니다.\n
    • 각각에 대한 영역 파일은 BIND 마스터 서버에서 전송된 /var/named/slaves 디렉토리에서 가져옵니다.\n

    그런 다음 다음 named-checkconf 명령 유틸리티를 실행하여 BIND 구성을 확인하십시오. 그런 다음 아래와 같이 systemctl 명령을 통해 슬레이브 서버에서 BIND 명명된 서비스를 다시 시작합니다.

    sudo named-checkconf
    sudo systemctl restart named

    적절한 BIND 구성이 있는 경우 오류 메시지가 표시되지 않습니다.

    마지막으로 다음 systemctl 명령을 실행하여 슬레이브 서버에서 BIND named 서비스가 실행 중인지 확인합니다.

    sudo systemctl status named

    이제 다음과 유사한 출력이 표시됩니다. BIND 명명된 서비스가 BIND 슬레이브 서버에서 실행 중입니다.

    이 시점에서 마스터-슬레이브 아키텍처로 BIND DNS 설치를 완료했습니다. 이제 클라이언트 컴퓨터에서 테스트를 시작할 준비가 되었습니다.

    클라이언트에서 테스트

    이 예제는 Debian 시스템을 클라이언트 시스템으로 사용하므로 시작하기 전에 APT를 통해 아래의 일부 패키지를 설치하십시오.

    sudo apt install dnsutils bind9-utils

    확인 메시지가 표시되면 y를 입력하고 ENTER를 눌러 계속 진행합니다.

    그런 다음 다음 명령을 실행하여 기본 링크 파일 "/etc/resolv.conf"을 제거하고 nano 편집기를 사용하여 새 파일을 만듭니다.

    sudo unlink /etc/resolv.conf
    sudo nano /etc/resolv.conf

    파일에 다음 구성을 추가합니다. 다음 구성에서는 BIND DNS 마스터, 보조 BIND DNS 서버 및 공용 Cloudflare DNS 확인자라는 세 가지 확인자를 정의합니다. 클라이언트 시스템이 도메인 이름에 대한 정보를 요청하면 DNS 해석기에서 위에서 아래로 정보를 가져옵니다.

    nameserver 192.168.5.100
    nameserver 192.168.5.120
    nameserver 1.1.1.1
    search hwdomain.io

    완료되면 파일을 저장하고 닫습니다.

    이제 클라이언트 시스템에서 DNS 서버를 확인할 준비가 되었습니다.

    아래의 dig 명령을 실행하여 도메인 이름 "hwdomain.io" 및 "mail.hwdomain.io"를 확인합니다. 그리고 "hwdomain.io"는 서버 IP 주소 "192.168.5.50"로 확인되고 하위 도메인 "mail.hwdomain.io"는 서버 IP 주소 "에서 처리됩니다. 192.168.5.15\.

    dig hwdomain.io +short
    dig hwdomain.io
    dig mail.hwdomain.io +short
    dig mail.hwdomain.io

    도메인 이름 hwdomain.io를 확인합니다.

    하위 도메인 mail.hwdomain.io를 확인합니다.

    다음으로, 아래의 dig 명령을 실행하여 도메인 이름 "hwdomain.io"에 대한 메일 처리기를 확인합니다. 그리고 "mail.hwdomain.io"가 기본 도메인 "hwdomain.io에 대한 메일을 처리한다는 출력을 얻어야 합니다.

    dig hwdomain.io MX +short
    dig hwdomain.io MX

    nslookup 명령을 사용하여 도메인 이름에 대한 역방향 영역 구성을 확인할 수 있습니다.

    아래의 nslookup 명령을 실행하여 일부 IP 주소에 대한 역방향 DNS를 확인하고 확인하십시오.

    이제 IP 주소 \192.168.5.100\이 이름 서버 \ns1.hwdomain.io\, IP 주소\192.168.5.120\은 이름 서버 \ns2.hwdomain.io\로 바뀌고 IP 주소는 \192.168.5.50 "는 기본 도메인 이름 "hwdomain.io"로 역전되고 마지막으로 IP 주소 "192.168.5.15"는 하위 도메인 이름으로 역전됩니다. 도메인 \mail.hwdomain.io.

    nslookup 192.168.5.100
    nslookup 192.168.5.120
    nslookup 192.168.5.50
    nslookup 192.168.5.15

    이 시점에서 Rocky Linux에서 Master-Slave 아키텍처로 BIND DNS 서버 설치를 완료했습니다. 또한 dig 및 nslookup과 같은 다양한 명령 유틸리티를 통해 DNS 서버를 테스트하는 방법도 배웠습니다.

    결론

    축하합니다! 이 자습서를 통해 Rocky Linux 9 서버에 BIND DNS 서버를 설치하고 구성하는 방법을 배웠습니다. 두 개의 서로 다른 Rocky Linux 서버를 사용하여 Master-Slave BIND DNS 서버를 성공적으로 구성했습니다. 또한 DNS 레코드 및 구성을 확인하고 확인하기 위한 Dig 및 Nslookup의 기본 명령을 배웠습니다.