Ubuntu 22.04 에서 NSD 4.8.0 설치하기
NLnet Labs 에서 제작한 NSD (Name Server Daemon) 은 BSD 라이센스를 가지고 있는 오픈소스 DNS 로써 속도, 신뢰성, 안정성 및 높은 보안성이 특징입니다. NSD 는 타 DNS 에 비해 월등히 빠른 속도를 보입니다. 몇 십만개 또는 몇 백만개의 쿼리를 요청하는 경우에도 쉽게 처리가 가능한 성능을 발휘하기 때문에 최상위 루트 네임서버중 몇 대는 NSD 로 사용되고 있다고 알려져 있습니다.
여기에서는 간단히 NSD 를 소스로 설치하고 sysdocu.kr 도메인을 등록해 질의 테스트하는 부분까지 안내합니다.
* 참고 : 패키지 설치 방법
# apt -y update
# apt -y install nsd
1. 설치
NSD 소스 파일을 다운로드 합니다.
공식 홈페이지에서는 현재 4.8.0 버전을 배포하고 있습니다.
- 공식 홈페이지 : https://nlnetlabs.nl/projects/nsd/about/
# wget https://nlnetlabs.nl/downloads/nsd/nsd-4.8.0.tar.gz
압축을 해제하고 설치 디렉토리로 이동합니다.
# tar xvzf nsd-4.8.0.tar.gz
# cd nsd-4.8.0
NSD 설치에 필요한 패키지를 사전 설치합니다.
# apt -y update
# apt -y install build-essential libssl-dev libevent-dev bison flex
NSD 설치를 계속 진행합니다.
# ./configure
# make
# make install
설치가 완료되었으면 명령어를 통해 설치 버전을 확인합니다.
# nsd -v
NSD version 4.8.0
Written by NLnet Labs.
Configure line:
Event loop: libevent 2.1.12-stable (uses epoll)
Linked with OpenSSL 3.0.2 15 Mar 2022
Copyright (C) 2001-2020 NLnet Labs. This is free software.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
2. 설정
기본 설정 파일을 생성합니다.
# cp -arp /etc/nsd/nsd.conf.sample /etc/nsd/nsd.conf
기본 파일에 옵션이 많이 있는것을 확인할 수 있습니다.
하지만 모든 옵션에 대한 설명을 다루지 않을 예정이므로 아래와 같이 몇가지 옵션만으로 구성해 보겠습니다.
아래 내용에 없는 옵션을 사용하고자 할 경우 공식 Ducoment 를 참고하시기 바랍니다.
https://nsd.docs.nlnetlabs.nl/en/latest/manpages/nsd.conf.html
설정파일에 사용할 key 파일과 pem 파일은 생성 명령이 준비되어 있으므로, 우선 테스트를 위해 아래 도메인 부분만 보유한 도메인으로 변경하고, 나머지는 같은 내용으로 작성합니다.
# vi /etc/nsd/nsd.conf
server: server-count: 1 ip-address: 0.0.0.0 do-ip4: yes port: 53 username: nsd zonesdir: "/etc/nsd" zonelistfile: "/var/db/nsd/zone.list" logfile: "/var/log/nsd.log" pidfile: "/var/run/nsd.pid" xfrdfile: "" tcp-count: 1000 tcp-query-count: 0 tcp-timeout: 120 remote-control: control-enable: yes control-interface: 127.0.0.1 control-port: 8952 server-key-file: /etc/nsd/nsd_server.key server-cert-file: /etc/nsd/nsd_server.pem control-key-file: "/etc/nsd/nsd_control.key" control-cert-file: "/etc/nsd/nsd_control.pem" zone: name: "sysdocu.kr" zonefile: "sysdocu.kr.zone" |
도메인을 여러개 등록하려는 경우 nsd.conf 파일 하단 3줄 (zone 부분) 을 복사하여 아래로 붙여넣고 도메인과 zone 파일명을 적절히 수정하면 됩니다.
설정이 제대로 되었는지 명령을 통해 확인합니다.
출력되는 내용은 고쳐야 하는 내용이며, 아무런 결과가 나오지 않으면 정상입니다.
# nsd-checkconf /etc/nsd/nsd.conf
설정파일에 사용했던 key 파일과 pem 파일을 생성합니다.
# nsd-control-setup
setup in directory /etc/nsd
Certificate request self-signature ok
subject=CN = nsd-control
removing artifacts
Setup success. Certificates created. Enable in nsd.conf file to use
생성된 key 파일과 pem 파일을 확인합니다.
# ll /etc/nsd
total 52
drwxr-xr-x 2 root root 4096 12월 21 10:56 ./
drwxr-xr-x 108 root root 4096 12월 20 22:38 ../
-rw-r--r-- 1 root root 666 12월 21 10:56 nsd.conf
-rw-r--r-- 1 root root 16685 12월 20 21:50 nsd.conf.sample
-rw------- 1 root root 2484 12월 21 10:56 nsd_control.key
-rw-r----- 1 root root 1484 12월 21 10:56 nsd_control.pem
-rw------- 1 root root 2484 12월 21 10:56 nsd_server.key
-rw-r----- 1 root root 1529 12월 21 10:56 nsd_server.pem
zone 파일을 생성합니다.
# vi /etc/nsd/sysdocu.kr.zone
$ORIGIN sysdocu.kr. $TTL 86400 @ IN SOA ns1.sysdocu.kr. admin.sysdocu.kr. ( 2023121901 ;Serial 7200 ;Refresh 3600 ;Retry 1209600 ;Expire 3600 ;Negative response caching TTL ) @ NS ns1.sysdocu.kr. @ NS ns2.sysdocu.kr. @ MX 10 mail.sysdocu.kr. @ A 115.68.249.232 ns1 A 115.68.249.232 ns2 A 115.68.249.232 www A 115.68.249.232 mail A 115.68.249.232 * A 115.68.249.232 |
마찬가지로 zone 파일의 설정이 제대로 되었는지 체크해봅니다.
형식) nsd-checkzone {zone이름} {zone파일}
# nsd-checkzone sysdocu.kr /etc/nsd/sysdocu.kr.zone
zone sysdocu.kr is ok
NSD 사용자를 생성합니다.
# useradd -r nsd
* 참고
이제 데몬을 구동해야 하는데, 이전에 53번 포트를 systemd-resolved 데몬이 사용하고 있을 경우 nsd 가 시작되지 않으므로 해당 데몬을 중지하고, 서버에서 외부 DNS 를 사용하기 위해서 /etc/resolv.conf 파일 최상단에 nameserver 8.8.8.8 를 추가해 줍니다.
방법은 netstat -nltp 로 확인이 가능합니다.
예) systemctl stop systemd-resolved
nsd 데몬을 구동하고 상태를 확인합니다.
# nsd-control start
# nsd-control status
version: 4.8.0
verbosity: 0
3. 테스트
외부에서 도메인 질의를 합니다.
# nslookup sysdocu.kr 115.68.249.135
Server: 115.68.249.135
Address: 115.68.249.135#53
Name: sysdocu.kr
Address: 115.68.249.232
# nslookup -type=mx sysdocu.kr 115.68.249.135
Server: 115.68.249.135
Address: 115.68.249.135#53
sysdocu.kr mail exchanger = 10 mail.sysdocu.kr.
'리눅스 > DNS' 카테고리의 다른 글
Ubuntu 22.04 에서 MaraDNS 3.5.0036 설치하기 (0) | 2023.12.17 |
---|---|
PDNS (PowerDNS) 4.2 시스템 로그 및 쿼리 로그 설정 (0) | 2023.03.30 |
네임서버 DNS 퍼포먼스 테스트 (dnsperf) (0) | 2023.03.28 |
[TIP] Docker 룰이 포함된 iptables 룰 저장 및 복구 (0) | 2022.12.22 |
bind 9 설치 (Ubuntu 19.04) (0) | 2019.10.29 |