웹사이트 검색

Ubuntu 22.04에서 BIND로 DNS 서버를 설정하는 방법


이 페이지에서

  1. 전제 조건
  2. FQDN(정규화된 도메인 이름) 설정\n
  3. BIND 패키지 설치
  4. BIND 마스터 설정
  5. 영역 설정
  6. BIND 슬레이브 설정
  7. 클라이언트 시스템에서 DNS 서버 확인\n
  8. 결론

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

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

이 가이드는 Ubuntu 22.04 서버에 BIND를 사용하여 DNS 서버를 설치하는 방법을 알려줍니다. 이 튜토리얼은 두 개의 Ubuntu 서버를 사용하여 Master-Slave BIND DNS 서버 설치를 설정하는 방법을 보여줍니다.

전제 조건

이 가이드를 시작하기 전에 다음 요구 사항이 있어야 합니다.

  • 두 개의 Ubuntu 22.04 서버.
  • 루트/관리자 권한이 있는 루트가 아닌 사용자.\n

FQDN(정규화된 도메인 이름) 설정

BIND 패키지 설치를 시작하기 전에 서버의 호스트 이름과 FQDN이 올바른지 확인해야 합니다. 이 데모에서는 다음 세부 정보가 포함된 두 개의 Ubuntu 서버를 사용합니다.

Hostname    IP Address      FQDN                Used As
---------------------------------------------------------
ns1         192.168.5.21    ns1.hwdomain.io     BIND Master
ns2         192.168.5.22    ns2.hwdomain.io     BIND Slave

이제 각 서버에 로그인하고 다음 명령을 실행하여 FQDN(정규화된 도메인 이름)을 설정합니다.

"ns1" 서버에서 FQDN을 설정합니다.

sudo hostnamectl set-hostname ns1.hwdomain.io

"ns2" 서버에서 FQDN을 설정합니다.

sudo hostnamectl set-hostname ns2.hwdomain.io

그런 다음 다음 명령을 사용하여 "/etc/hosts" 파일을 편집합니다.

sudo nano /etc/hosts

각 서버에 다음 구성을 추가합니다.

192.168.5.21 ns1.hwdomain.io ns1
192.168.5.22 ns2.hwdomain.io ns2

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

마지막으로 다음 명령을 사용하여 각 서버의 FQDN을 확인하고 확인합니다. \ns1\ 서버에서 FQDN을 \ns1.hwdomain.io\로 가져오고 \ns2\ 서버에서 출력 \ns2.hwdomain.io\를 가져옵니다.

sudo hostname -f

BIND 패키지 설치

바인드 패키지는 기본적으로 Ubuntu 서버 저장소에서 사용할 수 있습니다. 이제 "ns1" 및 "ns2" 서버 모두에서 apt 명령을 사용하여 Bind를 쉽게 설치할 수 있습니다.

아래의 apt 명령을 실행하여 Ubuntu 리포지토리를 업데이트하고 새로 고칩니다.

sudo apt update

그런 다음 다음 명령을 사용하여 Bind 패키지를 설치합니다. 설치를 확인하려면 Y를 입력하고 계속하려면 ENTER를 누르십시오. 그리고 설치가 시작됩니다.

sudo apt install bind9 bind9utils bind9-doc dnsutils

Bind 설치가 완료되면 다음 명령을 사용하여 "/etc/default/named" 구성을 편집합니다.

sudo nano /etc/default/named

"OPTIONS=" 줄을 사용하면 BIND 서비스가 실행 중일 때 특정 옵션을 설정할 수 있습니다. 이 데모에서는 IPv4로만 Bind를 실행하므로 아래와 같이 "OPTIONS" 줄을 만들어야 합니다.

OPTIONS="-u bind -4"

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

이제 아래 명령을 실행하여 바인드 서비스 "named"를 다시 시작하십시오. 그런 다음 BIND 서비스의 상태를 확인하고 확인합니다. 바인드 서비스 "named"가 두 서버 모두에서 실행 중임을 확인할 수 있습니다.

sudo systemctl restart named
sudo systemctl status named

BIND 마스터 설정

"ns1" 및 "ns2" 서버 모두에 BIND 패키지를 설치한 후 BIND DNS 서버를 설정하게 됩니다. "ns1" 서버를 BIND DNS 서버의 마스터로 설정하게 됩니다. 단일 서버에서 BIND를 실행할 수 있지만 고가용성 DNS 서버를 설정하려면 여러 서버를 사용하는 것이 좋습니다.

\ns1\ 서버의 터미널 세션으로 돌아갑니다.

아래 명령을 실행하여 "/etc/bind/named.conf.options" 구성 파일을 편집하십시오.

sudo nano /etc/bind/named.conf.options

"options {....};" 줄 앞의 줄 맨 위에 있는 파일에 다음 구성을 추가합니다.

이 구성을 사용하면 사용자 환경의 신뢰할 수 있는 모든 IP 주소와 네트워크를 포함하는 이름이 "신뢰됨"인 ACL(액세스 제어 목록)을 생성하게 됩니다. 또한 로컬 서버 IP 주소 "ns1" 및 "ns2" 보조 DNS 서버의 IP 주소를 추가해야 합니다.

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

이제 아래와 같이 "options {..};" 섹션을 변경합니다.

다음 예에서는 "listen-on-v6" 옵션에 주석을 달고 "trusted" ACL에서 재귀를 활성화 및 허용하고 BIND 서비스를 실행하여 IPv6 지원을 비활성화했습니다. 특정 \ns1\ IP 주소 \192.168.5.21\. 또한 기본 영역 전송을 비활성화하고 Google Public DNS "8.8.8.8" 및 "8.8.4.4에 대한 BIND DNS 서버의 특정 전달자를 정의합니다. \.

options {

        directory "/var/cache/bind";

        //listen-on-v6 { any; };        # disable bind on IPv6

        recursion yes;                 # enables resursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" - referred to ACL
        listen-on { 192.168.5.21; };   # ns1 IP address
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                1.1.1.1;
        };
};

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

마지막으로 다음 명령을 실행하여 "/etc/bind/named.conf.options" 구성 파일을 확인하고 확인합니다. 출력 메시지가 없으면 구성이 올바른 것입니다.

sudo named-checkconf /etc/bind/named.conf.options

구역 설정

BIND 마스터의 기본 구성을 설정한 후 이제 도메인 이름에 대한 영역을 설정합니다. 다음 예에서는 이름 서버 "ns1.hwdomain.io" 및 "ns2.hwdomain.io"와 함께 도메인 이름 "hwdomain.io"를 사용합니다.

다음 명령을 사용하여 구성 파일 "/etc/bind/named.local"을 편집합니다.

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

이 구성에서는 도메인 이름에 대한 두 개의 영역 파일(정방향 및 역방향 영역)을 정의합니다. 정방향 영역에는 도메인 이름이 IP 주소로 확인되는 구성이 포함되며 역방향 영역은 IP 주소를 도메인 이름으로 변환합니다.

다음 예에서는 도메인 "hwdomain.io"에 대해 정방향 영역 "/etc/bind/zones/db.hwdomain.io"를 정의하고 역방향 영역 을 정의합니다. \/etc/bind/zones/db.192.168.5\.

zone "hwdomain.io" {
    type master;
    file "/etc/bind/zones/db.hwdomain.io"; # zone file path
    allow-transfer { 192.168.5.22; };           # ns2 IP address - secondary DNS
};


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

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

그런 다음 다음 명령을 실행하여 영역 구성 파일을 저장하는 데 사용할 새 디렉터리 "/etc/bind/zones"를 만듭니다.

sudo mkdir -p /etc/bind/zones/

그런 다음 기본 정방향 영역 구성 "/etc/bind/zones/db.hwdomain.io"를 복사하고 다음 명령을 사용하여 파일을 편집합니다.

sudo cp /etc/bind/db.local /etc/bind/zones/db.hwdomain.io
sudo nano /etc/bind/zones/db.hwdomain.io

도메인 이름으로 기본 SOA 레코드를 변경합니다. 또한 파일을 변경할 때마다 SOA 레코드 내의 "Serial" 번호를 변경해야 하며 이 번호는 보조/슬레이브 DNS 서버와 동일한 "Serial" 번호여야 합니다.

그런 다음 DNS 서버에 대한 NS 레코드와 A 레코드를 정의할 수 있습니다. 이 예에서 이름 서버는 A 레코드 IP 주소가 \192.168.5.21\인 \ns1.hwdomain.io\이고 보조 DNS 서버의 A 레코드가 있는 \ns2.hwdomain.io\입니다. IP 주소 \192.168.5.22\.

마지막으로 다른 도메인 이름을 정의할 수 있습니다. 이 예에서는 메일 서버 "mail.hwdomain.io에서 처리할 도메인 "hwdomain.io"에 대한 MX 레코드(메일 처리기)를 정의합니다. 또한 도메인 이름 "을 정의합니다. IP 주소가 "192.168.5.100"인 서버로 확인되고 메일 서버 "mail.hwdomain.io"의 하위 도메인이 서버 IP 주소 "192.168.5.120으로 확인될 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.21
ns2.hwdomain.io.          IN      A       192.168.5.22

; 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.100
mail.hwdomain.io.       IN      A      192.168.5.120

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

그런 다음 기본 역방향 영역 구성 파일을 "/etc/bind/zones/db.192.168.5"에 복사하고 다음 명령을 사용하여 새 파일을 편집합니다.

sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5
sudo nano /etc/bind/zones/db.192.168.5

도메인 이름을 사용하여 기본 SOA 레코드를 변경합니다. 또한 SOA 레코드 내의 "Serial" 번호를 변경하는 것을 잊지 마십시오.

DNS 서버에 대한 NS 레코드를 정의합니다. 이들은 정방향 영역에서 사용한 것과 동일한 이름 서버입니다.

마지막으로 도메인 이름에 대한 PTR 레코드를 정의합니다. PTR 레코드의 숫자는 IP 주소의 마지막 숫자입니다. 이 예에서 이름 서버 "ns1.hwdomain.io"는 IP 주소 "192.168.5.21"로 확인되므로 이제 PTR 레코드는 "21"이 되고 다른 도메인 이름도 마찬가지입니다.

;
; 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
21   IN      PTR     ns1.hwdomain.io.    ; 192.168.5.21
22   IN      PTR     ns2.hwdomain.io.    ; 192.168.5.22
100  IN      PTR     hwdomain.io.  ; 192.168.5.100
120  IN      PTR     mail.hwdomain.io.  ; 192.168.5.120

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

이제 다음 명령을 실행하여 BIND 구성을 확인하고 오류 메시지가 표시되지 않는지 확인하십시오.

sudo named-checkconf

그런 다음 다음 명령을 실행하여 방금 생성한 각 영역 파일인 정방향 영역 및 역방향 영역 구성 파일을 확인하고 확인합니다. 영역 파일에 오류가 없으면 "OK"와 같은 출력 메시지가 표시되어야 합니다. 오류가 없는 경우 명령은 오류를 일으킨 파일 행을 표시합니다.

sudo named-checkzone hwdomain.io /etc/bind/zones/db.hwdomain.io
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5

BIND 마스터 구성을 완료하려면 아래 명령을 실행하여 BIND 서비스를 다시 시작하고 구성에 새로운 변경 사항을 적용하십시오.

sudo systemctl restart named

BIND 슬레이브 설정

이제 마스터 BIND DNS 서버 구성을 완료했습니다. "ns2" 서버를 BIND DNS 서버의 보조 또는 슬레이브로 설정할 시간입니다.

마스터 서버는 도메인의 DNS 구성을 포함하고 재귀 또는 반복 쿼리를 처리하는 영역 파일을 저장합니다. 보조/슬레이브 DNS 서버는 DNS 레코드를 일정 기간 임시로 저장하며, 이러한 DNS 레코드는 마스터 BIND 서버에서 자동으로 전송됩니다.

이제 "ns2" 터미널 세션으로 이동하고 "ns2" 서버를 BIND DNS 서버의 보조/슬레이브로 구성하기 시작합니다.

다음 명령을 실행하여 "/etc/bind/named.conf.options" 구성 파일을 편집합니다.

sudo nano /etc/bind/named.conf.options

맨 위에 다음 구성을 추가합니다. 이렇게 하면 마스터 서버와 동일한 ACL(액세스 제어 목록)이 생성됩니다.

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

"options {...};" 줄 내에서 아래와 같이 구성을 변경할 수 있습니다. 이 구성은 여전히 마스터 BIND DNS 서버와 동일하며 유일한 차이점은 "ns2" 서버 IP 주소에 지정된 "listen-on" 옵션입니다.

options {

        directory "/var/cache/bind";

        //listen-on-v6 { any; };        # disable bind on IPv6

        recursion yes;                 # enables resursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" - referred to ACL
        listen-on { 192.168.5.22; };   # ns2 IP address
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                1.1.1.1;
        };
};

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

그런 다음 다음 명령을 사용하여 구성 파일 "/etc/bind/named.conf.local"을 편집하여 "ns2" 서버를 보조/슬레이브 DNS 서버로 설정합니다.

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

파일에 다음 구성을 추가합니다. 보시다시피 정방향 및 역방향 영역을 정의했지만 "유형 슬레이브"를 사용하고 DNS 마스터 서버 "192.168.5.21"을 정의했습니다. DNS 레코드와 데이터는 DNS 마스터 서버에서 자동으로 전송되고 보조/슬레이브 DNS 서버에 일정 기간 동안 임시로 저장되기 때문에 영역 파일을 생성할 필요가 없습니다.

zone "hwdomain.io" {
    type slave;
    file "/etc/bind/zones/db.hwdomain.io";
    masters { 192.168.5.21; };           # ns1 IP address - master DNS
};


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

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

이제 다음 명령을 실행하여 BIND 구성을 확인 및 확인하고 모든 구성이 올바른지 확인하십시오. 그런 다음 "ns2" 서버에서 "named" BIND 서비스를 다시 시작하여 새 변경 사항을 적용할 수 있습니다. 이제 \ns2\ 서버에서 BIND DNS 서버의 보조/슬레이브로 구성을 마쳤습니다.

sudo named-checkconf
sudo systemctl restart named

마지막으로 다음 명령을 실행하여 "ns2" 서버에서 BIND 서비스 "named"를 확인하고 확인하십시오. 그리고 "named" 서비스가 실행 중인지 확인하십시오.

sudo systemctl status named

클라이언트 시스템에서 DNS 서버 확인

클라이언트 시스템에서 DNS 확인자를 설정하는 방법에는 여러 가지가 있습니다. NetworkManager 또는 netplan 구성에서 DNS 확인자를 설정할 수 있습니다. 그러나 가장 쉬운 방법은 "/etc/resolv.conf" 파일을 통해 수동으로 DNS 확인자를 설정하는 것입니다. 이를 통해 클라이언트 시스템에 대한 정적 DNS 확인자를 설정할 수 있습니다.

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

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

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

nameserver 192.168.5.21
nameserver 192.168.5.22
nameserver 8.8.8.8
search hwdomain.io

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

그런 다음 아래 명령을 실행하여 클라이언트 시스템에 일부 DNS 유틸리티를 설치합니다. 이 예에서 클라이언트 시스템은 Ubuntu 시스템이므로 아래와 같이 apt 명령을 사용하여 DNS 유틸리티를 설치합니다.

sudo apt install dnsutils bind9-utils

시스템에 DNS 유틸리티를 설치한 후 클라이언트 시스템에서 모든 DNS 레코드 확인을 시작할 수 있습니다.

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

dig hwdomain.io +short
dig hwdomain.io
dig mail.hwdomain.io +short
dig 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.21\이 이름 서버 \ns1.hwdomain.io\로 바뀌고 IP 주소 \192.168.5.22\가 이름 서버 \ns2\로 바뀐 것을 볼 수 있습니다. .hwdomain.io", IP 주소 "192.168.5.100"은 주 도메인 이름 "hwdomain.io"로, 마지막으로 IP 주소 "192.168.5.120"은 하위 도메인으로 역전됩니다. -도메인 \mail.hwdomain.io.

nslookup 192.168.5.21
nslookup 192.168.5.22
nslookup 192.168.5.100
nslookup 192.168.5.120

결론

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