DNS 시스템 · 2 min read · Oct 02, 2025

Debian DNS 시스템 구축

Debian DNS 시스템 구축

버전 1.0
저자: Joe Topjian

좋습니다, 이번이 마지막 DNS 기사입니다… 적어도 잠시 동안은요.

이 기사는 Debian으로 완전한 DNS 시스템을 구축하는 방법을 보여줍니다. 여기에는 마스터 서버, 슬레이브 서버, DDNS 및 여러 가지 DNSSEC가 포함됩니다. 서버에는 BIND 9를 사용할 것입니다.

마스터 서버

먼저 마스터 서버를 설정하고 실행해 보겠습니다. BIND는 여러 가지 취약점이 알려져 있으므로, chroot 감옥에 넣을 것입니다. 이 부분은 Falko가 훌륭한 가이드를 작성했으므로 여기서는 다루지 않겠습니다.

모든 것이 감옥에 갇힌 후, RNDC를 작동시킵니다. RNDC는 BIND를 제어하는 작은 명령줄 유틸리티입니다. 사용하려면 /etc/bind/rndc.key의 내용을 /etc/bind/named.conf에 복사합니다. BIND를 재시작하면 준비 완료입니다. 이제 BIND와 직접 작업하는 대신 RNDC를 사용하여 BIND와 인터페이스할 수 있습니다. RNDC 명령에 대한 자세한 정보는 여기에서 확인하세요.

다음은 존 파일을 생성할 시간입니다. 이 예제에서는 허구의 TLD인 hemingway를 사용할 것입니다. 특별한 이유는 없습니다 – 그냥 할 수 있고 실제 도메인 이름과 충돌하지 않을 것이라는 것을 알고 있기 때문입니다.

조직을 위해 존 파일을 저장할 두 개의 디렉토리를 만들었습니다. 마스터와 슬레이브 – 각각 마스터 및 슬레이브 존 파일을 저장합니다.

/etc/bind/zones/master
/etc/bind/zones/slave

/etc/bind/named.conf.options를 편집하고 디렉토리 옵션을 “/etc/bind”로 변경하는 것을 잊지 마세요.

존 파일은 다음과 같이 보일 것입니다 ( /etc/bind/zones/master/master.hemingway):

| $ORIGIN hemingway $TTL 1d @ IN SOA ns1 hostmaster ( 2005103008 ; serial 43200 900 604800 10800 ) NS hemingway. A 127.0.0.1 |

192.168.1.0/24에 대한 역방향 존 ( /etc/bind/zones/192.168.1.rev)는 다음과 같이 보일 것입니다:

| $TTL 1d ; $ORIGIN 1.168.192.IN-ADDR.ARPA. @ IN SOA ns1.hemingway. hostmaster.hemingway. ( 2005103001 2h 15m 2w 3h ) IN NS ns1.hemingway. IN NS ns2.hemingway. |

이제 /etc/bind/named.conf.local를 새 존으로 편집합니다:

| zone "hemingway" { type master; file "zones/master/master.hemingway"; }; |

| zone "1.168.192.IN-ADDR.ARPA" { type master; file "zones/192.168.1.rev"; }; |

DNS를 다시 로드하고 로그를 확인하세요. 오류가 없어야 하지만, 알 수는 없습니다…

rndc reload

이제 BIND가 호스팅할 도메인을 알았으므로, 호스트 이름을 추가할 시간입니다. 이를 위해 DDNS를 사용할 것입니다. DDNS를 설정하려면 제 DDNS 기사를 여기에서 따라 하세요.

실제로 DDNS로 호스트를 추가하기 위해, ddns.py 스크립트를 사용할 것입니다.

ddns.py add jake.hemingway A 192.168.1.11
ddns.py add bill.hemingway A 192.168.1.12
ddns.py add robert.hemingway A 192.168.1.13
ddns.py add brett.hemingway A 192.168.1.14

상응하는 PTR 파일도 추가되었지만, 공간을 절약하기 위해 이 부분은 생략하겠습니다.

이제 우리는 주어진 호스트 이름을 해결하는 완전한 기능의 마스터 DNS 서버를 갖추게 되었습니다.

슬레이브 서버

마스터 서버가 설정되었으므로, 이제 슬레이브로 넘어갈 시간입니다. 다른 박스에서 마스터와 동일한 방식으로 감옥에 갇힌 BIND 설치를 설정합니다.

슬레이브는 마스터로부터 존 전송을 가져옵니다. 이러한 존 전송은 평문으로 네트워크를 통해 전송되므로, 이를 보호하고자 합니다.

마스터와 슬레이브의 /etc/bind/named.conf.options 파일 모두에 다음을 추가합니다:

| dnssec-enable yes; |

여기에서 설명된 dnssec-keygen 명령을 사용하여 키를 생성합니다. MD5 해시를 두 개의 /etc/bind/named.conf 파일에 있는 새로운 키 문에 추가합니다:

| key "TRANSFER" { algorithm hmac-md5; secret "jXc2Lreaw4QHHTb/MjiHAw=="; }; |

마스터에서 /etc/bind/named.conf에 다음 서버 문을 추가합니다:

| server IP-OF-SLAVE { keys { TRANSFER; }; }; |

슬레이브에서는 반대로 합니다:

| server IP-OF-MASTER { keys { TRANSFER; }; }; |

마스터에서 /etc/bind/named.conf.local의 존 블록에 다음을 추가합니다:

| allow-transfer { key TRANSFER; }; |

슬레이브의 존 블록은 다음과 같아야 합니다:

| zone hemingway { type slave; file "zones/slave/slave.hemingway"; masters { IP-OF-MASTER; }; allow-notify { IP-OF-MASTER; }; }; |

마지막으로, 두 서버의 시계가 동기화되어 있는지 확인하세요. 동기화되지 않으면 존 전송이 이루어지지 않습니다.

작업이 완료되면 슬레이브 서버를 시작하세요. 이제 존 전송으로 인해 /etc/bind/zones/slave/에 새로운 파일이 있어야 합니다. 그렇지 않다면 로그를 확인하세요 – 오류에 대한 정보가 매우 자세합니다.

이게 전부입니다! 많은 작업이 필요하고 제가 정말 빠르게 진행했지만, 이로써 여러분은 설정을 완료할 수 있을 것입니다. 참고 및 추가 정보는 제 DDNS 기사를 여기에서 읽고, 훌륭한 책인 Pro DNS and BIND를 참조하세요 (마케팅 홍보가 아닙니다 – 정말 좋은 책입니다!).

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.