BIND DNS 서버 시작하기

도메인 네임 서버(DNS)는 인터넷 인프라의 중요한 구성 요소이며, DNS 서버를 구축하는 것은 도전적일 수 있습니다. 그러나 BIND를 사용하면 BIND DNS 서버를 신속하게 생성할 수 있습니다. BIND는 유연성과 고 가용성 지원으로 관리자들 사이에서 우수한 평판을 가지고 있습니다.

이 글에서는 안전한 BIND DNS 서버를 설치하고 구성하는 방법을 배우고 하위 도메인이 올바른 IP 주소로 해석되는지 확인할 수 있습니다.

계속 읽어보고 수월하게 DNS 서버를 생성하세요!

전제 조건

이 튜토리얼은 실습을 통해 진행됩니다. 따라오려면 다음 사항이 있는지 확인하세요.

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

BIND 패키지 설치

기본 Ubuntu 저장소는 BIND 패키지를 제공하지만 시스템에 기본 설치되어 있지 않습니다. BIND를 메인 DNS 서버 또는 권한 부여만으로 설치할 수 있습니다. BIND를 사용하면 마스터-슬레이브 설치 지원, DNSSEC 지원, 내장된 액세스 제어 목록(ACL)과 같은 강력한 기능을 제공합니다.

BIND DNS를 시작하려면 먼저 apt 패키지 관리자를 사용하여 머신에 BIND 패키지를 설치해야 합니다.

1. 터미널을 열고 서버에 로그인합니다.

2. 다음으로, 아래의 apt update 명령을 실행하여 리포지토리 패키지 인덱스를 업데이트하고 새로 고침합니다. 이 명령은 최신 버전의 패키지를 설치하는 것을 보장합니다.

sudo apt update
Refreshing Package Index

3. 업데이트가 완료되면 아래의 apt install 명령을 실행하여 Ubuntu 서버에 BIND 패키지를 설치하십시오.

bind9-utils와 bind9-dnsutils 패키지는 BIND를 위한 추가 명령 줄 도구를 제공합니다. 이러한 패키지는 BIND DNS 서버를 테스트하고 관리하는 데 유용합니다.

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. 마지막으로, 아래의 systemctl 명령을 실행하여 BIND 서비스를 확인하십시오.

BIND 패키지에는 서비스 named가 함께 제공되며 BIND 패키지 설치 중에 자동으로 시작되고 활성화됩니다.

# named 서비스가 활성화되었는지 확인
sudo systemctl is-enabled named

# named 서비스 상태 확인
sudo systemctl status named

이제 BIND named 서비스가 활성화되어 있고 상태가 활성(실행 중)인 것을 확인할 수 있어야 합니다. 이 시점에서 BIND 서비스는 시스템 부팅 시 자동으로 실행됩니다.

Checking BIND named service

BIND DNS 서버 구성

이제 Ubuntu 서버에 BIND 패키지를 설치했으므로 Ubuntu 서버에 BIND 설치를 설정할 시간입니다. 어떻게? BIND 및 named 서비스의 구성을 편집하여.

BIND에 대한 모든 구성은 /etc/bind/ 디렉토리에서 사용할 수 있으며, named 서비스의 구성은 /etc/default/named에 있습니다.

1. 원하는 편집기를 사용하여 /etc/default/named 구성을 편집하고 아래와 같이 OPTIONS 줄에 -4 옵션을 추가하십시오. 이 옵션은 named 서비스를 IPv4에서만 실행합니다.

OPTIONS="-4 -u bind"

수정한 내용을 저장하고 파일을 닫으십시오.

Configuring BIND to Run on IPv4 Only

2. 다음으로 /etc/bind/named.conf.options 파일을 편집하고 다음 구성을 directory "/var/cache/bind"; 줄 아래에 추가하십시오.

이 구성은 서버의 localhost 및 공용 IP 주소(172.16.1.10)에서 기본 UDP 포트 53에서 BIND 서비스를 실행하도록 설정합니다. 동시에 Cloudflare DNS 1.1.1.1을 전달자로 사용하여 BIND DNS 서버로부터 모든 호스트에 대한 쿼리를 허용합니다.

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

아래에서 listen-on-v6 { any; }; 줄을 주석 처리하여 아래와 같이 IPv6에서 named 서비스의 실행을 비활성화하십시오.

Editing the BIND Configuration Options

3. 마지막으로 다음 명령을 실행하여 BIND 구성을 확인하십시오.

sudo named-checkconf

만약 출력이 없으면 BIND 구성이 어떤 오류도 없이 올바르게 되어 있습니다.

Verifying BIND Configurations

DNS 존 설정

이 시점에서 BIND DNS 서버의 기본 구성을 설정했습니다. 이제 도메인을 가진 DNS 서버를 만들고 응용 프로그램을 위한 다른 하위 도메인을 추가할 준비가 되었습니다. 이를 위해 새로운 DNS 존 구성을 정의하고 생성해야 합니다.

이 튜토리얼에서는 새로운 네임 서버 (ns1.atadomain.io)와 하위 도메인 (www.atadomain.iomail.atadomain.iovault.atadomain.io)을 생성합니다.

1. 선호하는 편집기를 사용하여 /etc/bind/named.conf.local 파일을 편집하고 다음 구성을 추가합니다.

이 구성은 atadomain.io 도메인의 전방 존 (/etc/bind/zones/forward.atadomain.io)과 역방 존 (/etc/bind/zones/reverse.atadomain.io)을 정의합니다.

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

변경 사항을 저장하고 파일을 닫습니다.

Defining Forward Zone and Reverse Zone BIND

2. 다음으로 아래 명령을 실행하여 문자열 DNS 존 구성을 위한 새 디렉터리 (/etc/bind/zones)를 생성합니다.

mkdir -p /etc/bind/zones/

3. 각 명령을 실행하여 기본 전방 및 역방 존 구성을 /etc/bind/zones 디렉터리로 복사합니다.

# 기본 전방 존 복사
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# 기본 역방 존 복사
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# /etc/bind/zones/ 디렉터리 내용 나열
ls /etc/bind/zones/
Copying Default Zones Configurations

4. 이제 선호하는 편집기를 사용하여 전방 존 구성 (/etc/bind/zones/forward.atadomain.io)을 편집하고 아래 구성을 입력하세요.

전방존 구성은 도메인 이름과 서버 IP 주소를 정의하는 곳입니다. 이 구성은 도메인 이름을 올바른 서버 IP 주소로 변환합니다.

아래 구성은 다음과 같은 이름 서버와 하위 도메인을 생성합니다:

  • ns1.atadomain.io – IP 주소가 172.16.1.10인 도메인의 주요 이름 서버입니다.
  • atadomain.io 도메인을 처리하는 mail.atadomain.io에 대한 MX 레코드입니다. MX 레코드는 메일 서버에 사용됩니다.
  • 애플리케이션을 위한 하위 도메인: www.atadomain.io, mail.atadomain.io, 및 vault.atadomain.io.
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

변경 사항을 저장하고 파일을 닫으세요.

Configuring Forward Zone BIND

5. 전방존과 마찬가지로, 역방향 존 구성 파일 (/etc/bind/zones/reverse.atadomain.io)을 편집하고 다음 구성을 추가하세요.

역방향 존은 서버 IP 주소를 도메인 이름으로 변환합니다. 역방향 존 또는 PTR 레코드는 메일 서버와 같은 서비스에 필요합니다. 이는 메일 서버의 신뢰도에 영향을 미칩니다.

PTR 레코드는 IP 주소의 마지막 블록을 사용합니다. 예를 들어 서버 IP 주소 172.16.1.10에 대한 번호 10의 PTR 레코드입니다.

이 구성은 다음 도메인에 대한 역방향 존 또는 PTR 레코드를 생성합니다:

  • 이름 서버 ns1.atadomain.io에 대한 역방향 존 또는 PTR 레코드 172.16.1.10.
  • 도메인 mail.atadomain.io의 PTR 레코드는 서버 IP 주소 172.16.1.20입니다.
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

파일을 저장하고 닫습니다.

Configuring Reverse Zone BIND

6. 이제 다음 명령을 실행하여 BIND 구성을 확인하고 확인하세요.

# BIND의 주 구성을 확인합니다.
sudo named-checkconf

# 전방존 forward.atadomain.io 확인
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# 역존 reverse.atadomain.io 확인
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

구성이 올바른 경우, 아래와 같은 출력이 표시됩니다.

Checking and Verifying BIND configurations

7. 마지막으로 아래의 systemctl 명령을 실행하여 named 서비스를 다시 시작하고 확인합니다. 이렇게 하면 새로운 변경 사항이 named 서비스에 적용됩니다.

# named 서비스 다시 시작
sudo systemctl restart named

# named 서비스 확인
sudo systemctl status named

아래에서 named 서비스 상태가 활성화(실행 중)되어 있는 것을 볼 수 있습니다.

Restarting Named Service and Verifying Named Service Status

UFW 방화벽으로 DNS 포트 열기

이 시점에서 BIND DNS 서버 설치가 완료되었습니다. 그러나 여전히 DNS 서버를 보안해야 합니다. UFW 방화벽을 설정하고 서버로의 쿼리를 위해 DNS 포트를 엽니다. 이렇게 하면 클라이언트가 BIND DNS 서버에 쿼리를 할 수 있습니다.

보안상의 이유로 Ubuntu 서버에서 UFW 방화벽을 실행 및 활성화하는 것이 좋습니다.

1. 아래의 ufw 명령을 실행하여 UFW 방화벽에서 사용 가능한 응용 프로그램을 확인합니다.

sudo ufw app list

당신은 아래의 UFW 응용 프로그램 목록에서 Bind9를 볼 수 있어야합니다.

Listing Available Applications on the UFW Firewall

2. 이제 아래 명령을 실행하여 Bind9를 UFW 방화벽에 허용하십시오.

sudo ufw allow Bind9
Adding UW Rule

3. 마지막으로, UFW 방화벽에서 활성화된 규칙을 확인하려면 다음 명령을 실행하십시오.

sudo ufw status

스크린샷 아래와 같이 목록에서 Bind9 응용 프로그램을 확인해야합니다.

Verifying List of Rules

BIND DNS 서버 설치 확인

BIND DNS 설치를 완료하고 UFW 방화벽을 구성했습니다. 그러나 DNS 서버 설치를 확인하는 방법은 무엇입니까? dig 명령을 사용하면 됩니다.

Dig는 DNS 서버 설치 문제 해결을 위한 명령줄 유틸리티입니다. dig는 주어진 도메인 이름에 대한 DNS 조회를 수행하고 도메인 이름 대상에 대한 자세한 답변을 표시합니다. Ubuntu 시스템에서 dig는 bind9-dnsutil 패키지의 일부입니다.

BIND DNS 서버 설치를 확인하려면 다음을 실행하십시오:

1. 각각의 dig 명령을 실행하여 하위 도메인 www.atadomain.iomail.atadomain.io, 및 vault.atadomain.io를 확인하십시오.

만약 DNS 서버 설치가 성공적이라면, 각 서브 도메인은 전방.atadomain.io 구성에 따라 올바른 IP 주소로 해결됩니다.

# 도메인 이름 확인
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

아래는 서브 도메인 www.atadomain.io 가 서버 IP 주소 172.16.1.10으로 해결된 출력입니다.

Checking sub-domain www.atadomain.io

아래는 서브 도메인 mail.atadomain.io 가 서버 IP 주소 172.16.1.20으로 해결된 것입니다.

Checking sub-domain mail.atadomain.io

그리고 아래는 서브 도메인 vault.atadomain.io 가 서버 IP 주소 172.16.1.50으로 해결된 것입니다.

Checking sub-domain vault.atadomain.io

2. 다음으로, 아래의 dig 명령을 실행하여 atadomain.io 도메인의 MX 레코드를 확인하십시오.

dig @172.16.1.10 atadomain.io MX

당신은 atadomain.io 도메인이 MX 레코드 mail.atadomain.io를 가지고 있는 것을 볼 수 있어야 합니다.

Checking MX record for atadomain.io

3. 마지막으로, 서버 IP 주소 172.16.1.10172.16.1.20에 대한 PTR 레코드 또는 역존을 확인하기 위해 다음 명령을 실행하십시오.

만약 BIND 설치가 성공적이라면, 각 IP 주소는 reverse.atadomain.io 구성에 정의된 도메인 이름으로 해결될 것입니다.

# PTR 레코드 또는 역 DNS 확인
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

아래에서 볼 수 있듯이, 서버 IP 주소 172.16.1.10은 도메인 이름 ns1.atadomain.io로 해결됩니다.

Checking PTR record for IP address 172.16.1.10

아래에서 보듯이, 서버 IP 주소 172.16.1.20은 도메인 이름 mail.atadomain.io로 해결됩니다.

Checking PTR record for IP address 172.16.1.20

결론

이 자습서를 통해 Ubuntu 서버에서 안전한 BIND DNS 서버를 만들고 설정하는 방법을 배웠습니다. 또한 도메인을 추가하기 위해 전방 및 역방 영역을 생성하고 dig 명령을 실행하여 DNS 서버를 확인했습니다.

이제 환경에서 BIND DNS 서버를 어떻게 구현할 수 있을까요? 아마도 BIND를 권한 부여 서버로 구현하거나 마스터-슬레이브 BIND 설치로 고가용성을 설정할 수 있을 것입니다.

Source:
https://adamtheautomator.com/bind-dns-server/