12.DNS 서버 구축하기, 도메인 이름과 IP 주소의 매핑 설정

DNS(도메인 네임 시스템)는 인터넷의 전화번호부와 같은 역할을 합니다. 사용자가 웹사이트에 접속할 때 도메인 이름을 입력하면, DNS 서버가 해당 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 변환해줍니다. 이 글에서는 우분투 서버에서 DNS 서버를 구축하고, 도메인 이름과 IP 주소의 매핑을 설정하는 방법에 대해 자세히 설명하겠습니다.

1. DNS 서버의 필요성

현대의 인터넷에서는 도메인 이름이 사용자에게 더 익숙하고 사용하기 편리합니다. 그러나 컴퓨터는 숫자로 구성된 IP 주소를 사용합니다. 따라서 DNS 서버는 도메인 이름과 IP 주소 간의 매핑을 관리하여 사용자의 편의를 돕습니다. DNS의 주요 기능은 다음과 같습니다:

  • 도메인 이름을 IP 주소로 변환
  • IP 주소로 도메인 이름을 찾기
  • 서브도메인 관리
  • 부하 분산과 캐싱

2. 우분투에서 DNS 서버 구축하기

우분투에서 DNS 서버를 구축하기 위해 BIND9(Berkeley Internet Name Domain)를 사용할 것입니다. BIND는 가장 널리 사용되는 DNS 서버 소프트웨어 중 하나로, 다양한 기능과 높은 안정성을 제공합니다.

2.1 BIND9 설치

우분투 서버에서 BIND9를 설치하기 위해 다음 명령어를 실행합니다:

sudo apt update
sudo apt install bind9 bind9utils bind9-doc

설치가 완료되면 BIND 서비스가 자동으로 시작됩니다.

2.2 BIND9 구성 파일

BIND9의 주요 구성 파일은 /etc/bind/named.conf이며, 이 파일에서 다양한 설정을 관리합니다. BIND는 여러 개의 구성 파일을 포함할 수 있으며, 대부분의 설정은 다음 파일들에 위치합니다:

  • named.conf.options: 옵션 설정
  • named.conf.local: 개인 도메인 설정
  • db.local: 루프백 영역 파일
  • db.127: IPv4 루프백 주소에 대한 설정

2.3 예제 도메인 설정

예를 들어, example.com 도메인을 관리한다고 가정해 보겠습니다. 먼저, named.conf.local 파일에 도메인을 추가해야 합니다:

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

여기서 다음 내용을 추가합니다:

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

2.4 DNS 자료 파일 생성

이제 도메인에 대한 자료 파일을 생성합니다:

sudo cp /etc/bind/db.local /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.10  ; 이곳에 당신의 서버 IP 주소를 입력하세요
ns      IN      A       192.168.1.10  ; 네임서버의 IP 주소
www     IN      A       192.168.1.10  ; www 서브도메인에 대한 IP 주소

3. BIND9의 재시작

구성을 완료한 후에는 BIND 서비스를 재시작해야 합니다:

sudo systemctl restart bind9

이제 DNS 서버가 작동하고 있어야 하며, 다음 명령을 사용하여 DNS 동작을 확인할 수 있습니다:

dig @localhost example.com

4. DNS 클라이언트 설정

DNS 서버가 구축되면 클라이언트 컴퓨터에서 DNS 서버를 사용하도록 설정해야 합니다. Ubuntu의 경우 /etc/resolv.conf 파일을 편집하여 DNS 서버를 추가할 수 있습니다:

sudo nano /etc/resolv.conf

파일에 다음 내용을 추가합니다:

nameserver 192.168.1.10  ; 이곳에 DNS 서버의 IP를 입력하세요

5. DNS 서버 테스트

설정이 끝난 후 IP 주소가 올바르게 매핑되었는지 테스트할 수 있습니다. 다음 명령어를 사용하여 도메인이 올바른 IP 주소로 변환되는지 확인합니다:

ping example.com

응답이 돌아오면 DNS 서버가 정상적으로 작동하고 있는 것입니다.

6. 문제 해결

DNS 서버 구축 과정에서 발생할 수 있는 일반적인 문제와 해결 방법은 다음과 같습니다:

  • 서비스가 시작되지 않는 경우: 로그 파일을 확인하여 에러 메시지를 확인하세요. journalctl -xe 명령어로 로그를 확인할 수 있습니다.
  • 도메인이 구분되지 않는 경우: 각각의 구성 파일을 검토하고 문법적 오류가 없는지 확인하세요.
  • 호스트 이름이 반환되지 않는 경우: dig로 직접 쿼리해보며 문제를 추적할 수 있습니다.

7. 결론

이 글에서는 우분투 서버에서 DNS 서버를 구축하고 도메인 이름과 IP 주소 간의 매핑을 설정하는 방법에 대해 다루었습니다. DNS는 인터넷에서 필수적인 구성 요소이며, 올바르게 설정되면 안정적인 웹 서비스를 제공하는 기초가 됩니다. 이제 DNS 서버를 통해 도메인 이름을 손쉽게 관리할 수 있습니다.

8. 참고 자료