12.DNS 서버 구축하기, BIND9를 이용한 자체 DNS 서버 구축

DNS(Domain Name System)는 인터넷 인프라의 기본 구성 요소로, 도메인 이름을 IP 주소로 변환하는 역할을 합니다. 즉, 사용자가 웹사이트 주소를 입력할 때, 그에 해당하는 IP 주소를 찾아주는 시스템입니다. 이번 글에서는 BIND9를 이용해 우분투 서버에서 자체 DNS 서버를 구축하는 방법에 대해 자세히 설명하겠습니다.

1. BIND9란 무엇인가?

BIND(Berkley Internet Name Domain)는 가장 널리 사용되는 DNS 서버 소프트웨어 중 하나로, 전 세계적으로 수많은 DNS 서버에서 BIND를 사용하고 있습니다. BIND9는 BIND의 최신 버전으로, IPv6 지원, 보안 기능 향상 및 동적 DNS 업데이트 등의 기능이 추가되었습니다.

2. BIND9 설치하기

우분투에서 BIND9를 설치하는 방법은 매우 간단합니다. 다음 단계를 따르면 됩니다.

sudo apt update
sudo apt install bind9 bind9utils bind9-doc

설치가 완료되면 BIND9 서비스가 자동으로 시작됩니다. 아래 명령어로 상태를 확인할 수 있습니다.

sudo systemctl status bind9

3. BIND9 기본 설정

설치가 완료된 후에는 BIND9의 기본 설정 파일을 수정해야 합니다. 기본 설정 파일은 /etc/bind/named.conf.options입니다.

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

파일을 열어 아래와 같이 수정합니다. 이 설정은 DNS 요청을 수신하는 서버의 IP 주소를 지정합니다.

options {
    directory "/var/cache/bind";

    // DNS 요청을 수신할 IP 주소
    listen-on { any; };
    listen-on-v6 { any; };

    // Forwarding 설정
    forwarders {
        8.8.8.8; // Google DNS
        8.8.4.4; // Google DNS
    };
    
    // DNSSEC 설정
    dnssec-validation auto;

    // 기본적인 동작 설정
    auth-nxdomain no;    
    listening-on-v6 { any; };
};

4. 존 파일(Zone File) 설정

BIND는 존 파일을 통해 도메인 이름과 그에 해당하는 IP 주소를 관리합니다. 존 파일을 설정하려면 먼저 /etc/bind/named.conf.local 파일을 열어야 합니다.

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

존 파일을 추가하려면 아래와 같이 입력합니다.

zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
};

여기서 “example.com”은 관리할 도메인 이름으로 원하는 도메인으로 변경합니다. 얼마든지 자신이 관리하고 싶은 도메인을 추가할 수 있습니다.

5. 존 파일 생성하기

존 파일을 생성하려면 아래 명령어를 사용하셔야 합니다.

sudo cp /etc/bind/db.empty /etc/bind/db.example.com

그 다음, 생성한 파일을 열어 필요한 값을 편집합니다.

sudo nano /etc/bind/db.example.com

기본적인 존 파일은 아래와 같습니다.

$TTL    604800
@       IN      SOA     ns.example.com. admin.example.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.example.com.
@       IN      A       192.168.1.1
ns      IN      A       192.168.1.1

여기서 192.168.1.1는 서버의 실제 IP 주소로 변경해야 합니다. 또한, admin.example.com.은 관리자 이메일을 의미하며, 여기에선 “@”가 “.”으로 대체되어야 합니다.

6. DNS 서버 재시작 및 테스트

모든 설정을 마친 후에는 BIND 서비스를 재시작해야 합니다. 다음 명령어를 통해 수행할 수 있습니다.

sudo systemctl restart bind9

DNS 서버가 정상적으로 작동하는지 확인하려면 dig 명령어를 사용하여 확인할 수 있습니다.

dig @localhost example.com

정상적으로 작동하고 있다면, 응답으로 A 레코드가 반환됩니다.

7. 방화벽 설정

DNS 서버가 외부에서 접근할 수 있도록 하기 위해 방화벽 설정을 확인해야 합니다. UFW를 사용하는 경우, 다음 명령어로 DNS 포트를 열 수 있습니다.

sudo ufw allow 53

8. 정리 및 요약

이제 우분투 서버에서 BIND9를 이용하여 자체 DNS 서버를 성공적으로 구축하였습니다. 자체 DNS 서버는 빠르고 안전하게 도메인 이름을 관리할 수 있는 훌륭한 방법입니다. BIND의 강력한 기능을 활용하여 복잡한 환경에서도 효율적인 DNS 서비스를 제공할 수 있습니다.

이 문서를 통해 BIND9의 설치, 기본 설정, 존 파일의 생성 및 DNS 서버의 테스트까지 모든 과정을 안내하였습니다. 이를 바탕으로 보다 심화된 DNS 서버 관리 및 보안 설정 등을 고려해 보시기 바랍니다.

© 2023 우분투 서버 구축 및 관리