APP & Server/DNS

[DNS] 리눅스 DNS 서버 구축 (1) (/etc/named.conf 상세 설명, CentOS7.7)

Nirsa 2020. 2. 4. 00:29
반응형

 

DNS(Domain Name Server) 란? : https://nirsa.tistory.com/92?category=872350

[DNS] 리눅스 DNS 서버 구축 (2) : https://nirsa.tistory.com/108?category=872350

 

  • DNS 서버 설치

DNS 서버는 bind 패키지를 사용하며 패키지만 다운로드 받으면 되기에 DNS 서버 설치는 굉장히 간단 합니다. 아래 코드를 입력하여 패키지를 다운로드 받아 주세요.

yum -y install bind bind-utils

 

  • DNS 설정 파일 개념 및 위치

DNS의 핵심적인 파일은 크게 4가지로 나눠 집니다. 하지만 /etc/named.conf 설정에 대한 설명이 생각보다 길어지게 되어 이번 글에서는 /etc/named.conf 설정에 대한 설명만 다루고, 나머지는 추후 2편으로 업로드 하겠습니다.

빠르게 설정 내용만 보실 분들은 아래 중 빨간색으로 표시된 부분처럼만 설정 하시면 됩니다.

 

  • 1. /etc/named.conf

네임 서버 데이터 베이스, root 존파일 위치, root 파일, 키파일, 접근제어 등 가장 핵심적인 설정 파일이라고 볼 수 있습니다. 이후 DNS-SEC 구성을 하거나 여러가지 보안 설정을 할때에 대부분의 설정이 이 파일을 사용 합니다.

아래 내용은 DNS-SEC 구성을 하지 않는다는 전제하에 작성하며 DNS-SEC 구성은 이후에 업로드 하겠습니다.

listen-on port 53 { 127.0.0.1; };

→ DNS port 53에 어떤 IP가 접근할 수 있는지 설정 합니다. 불특정 다수의 유저에게 서비스 할땐 listen-on port 53 { any; }; 으로 설정 하고, 사설 DNS 서버로 사용할때엔 서비스할 사설 IP 대역만을 고정시켜주어 설정해줘야 보안이 상승 합니다.

 

listen-on-v6 port 53 { ::1; };

→ IPv6를 사용하지 않는다면 주석처리하여 없애 버리셔도 좋습니다. 위의 옵션이 IPv4의 DNS port 53번에 대한 설정 이였다면, 이 옵션은 IPv6의 DNS port 53번에 대한 설정 입니다. 기능은 IPv4와 동일하게 DNS port 53 any 입니다.

 

directory        "/var/named";

→ 실제로 서비스할 DNS의 zone파일 디렉토리 경로를 설정 합니다.

 

dump-file        "/var/named/data/cache_dump.db";

→ DNS cache dump 파일 생성 디렉토리 경로 입니다. 일반적으로 운영 할때에 자주 접하지는 않습니다.

 

statistics-file        "/var/named/data/named_mem_stats.txt";

→ 메모리 통계 파일 생성 디렉토리 경로 입니다. 일반적으로 운영 할때에 자주 접하지는 않습니다.

 

allow-query        { localhost; };

→ 재귀 질의가 올 때 응답할지에 대한 설정 입니다.  보안상의 문제가 있을 경우 재귀쿼리를 받을 IP 대역만을 허용하며, 일반적으로 allow-query { any; }; 를 사용 합니다.


recursion yes:

→ 반복 질의에 대한 요청을 할지(DNS Cache Server), 안할지를 설정 합니다. 외부로 도메인을 접근할 수 없는 사설 DNS로 사용하는 경우가 아니면 yes 로 설정 합니다. 

 

dnssec-enable yes;        /       dnssec-validation yes;

→ DNS-SEC에 관한 설정 입니다. 별도로 DNS-SEC 설정을 하지 않는다면 의미가 없습니다. 만약 DNS 보안 설정에 대한 에러가 발생한다면 no로 바꿔주셔도 됩니다.

 

  bindkeys-file "/etc/named.root.key";      /      managed-keys-directory "/var/named/dynamic";

→ 마찬가지로 DNS-SEC에 관한 설정 입니다. (DLV : DNS Lookaside Validation) 무시하셔도 좋습니다.

 

pid-file "/run/named/named.pid";

 DNS의 PID가 작성된 파일

 

session-keyfile "/run/named/session.key";

→ TSIG session key (Master ↔ Salve 보안 트랙잭션 설정) 마찬가지로 무시 합니다.

 

logggin { channel default_debug { file "data/named.run"; serverity dynamic; }; };

→ DNS Server가 실행될때에 디버그 수준의 로그 파일을 남깁니다. 상대 경로 부분은 상단 옵션 중 directory에 작성된 경로를 기준으로 합니다.

 

zone "." IN { type hint; file "named.ca"; };

→ 참조할 루트 힌트가 작성되어 있는 파일명을 가르킵니다. 이 파일에는 전세계 루트 도메인(최상위 도메인)에 대한 정보가 들어 있습니다. 만약 이 파일에 대한 설정이 잘못 되었거나 해당 파일 내용이 모두 손실될 경우 루트 도메인에 대한 정보가 없어지므로 반복 질의를 수행할 수 없게 됩니다.

 

include ~~~~

include 두줄은 해당 경로에 있는 파일의 내용을 불러 옵니다. rfc는 존파일 등록 대한 정보를, root key는 DNS-SEC에 관한 설정을 담고 있습니다. 각 파일의 위치를 별도로 변경 시 이 부분을 수정해야 하며, 그냥 사용한다면 변경할 필요는 없습니다. (처음 설치할땐 rfc파일 안에 존파일 등록 정보를 넣지만, 블로그 글마다 파일명이나 위치 등이 다른 이유가 이 부분의 수정/설정 때문 입니다)

 

 

[DNS] 리눅스 DNS 서버 구축 (2) : https://nirsa.tistory.com/108?category=872350

반응형