SERVER

나비 DNS 서버

프로덕션급 DNS 서버, Rust로 다시 쓰다

C/C++ DNS 서버의 메모리 취약점을 원천 차단하는 차세대 DNS 솔루션입니다. CDB 및 MySQL 듀얼 백엔드, DNSSEC 서명 검증, DNS-over-TLS, 웹 관리 패널과 REST API를 제공합니다.

23종

레코드 타입

13개

RFC 준수

18종

실행 도구

0.065ms

응답 지연

dns
resolve A nabisori.kr → 0.065ms

왜 나비 DNS 서버인가요?

20년간 검증된 DNS 아키텍처를 Rust로 완전히 재구현했습니다. C/C++ 기반 DNS 서버의 보안 취약점을 원천 차단하면서도 기존 인프라와의 완벽한 호환성을 유지합니다.

shield

메모리 안전

Rust의 소유권 시스템으로 버퍼 오버플로우, Use-After-Free, 데이터 레이스를 컴파일 타임에 차단합니다. BIND9에서 매년 보고되는 CVE 취약점의 70% 이상이 메모리 관련입니다.

bolt

고성능 비동기 엔진

SO_REUSEPORT 기반 멀티소켓 아키텍처로 커널 수준에서 패킷을 분산합니다. CPU 코어 x2 워커 스레드가 독립 소켓으로 동작하여 단일 소켓 병목이 없습니다.

database

듀얼 백엔드

읽기 최적화 CDB(O(1) 조회)와 실시간 동적 관리용 MySQL을 동시 지원합니다. 런타임에 BACKEND 환경변수로 전환 가능하며, 하이브리드 구성도 가능합니다.

check_circle

13개 RFC 표준 준수

RFC 1034/1035 코어 프로토콜부터 RFC 9156 QNAME Minimization까지, DNS Flag Day 2019/2020을 포함한 최신 권고안을 모두 준수합니다.

lock

DNSSEC + DNS Cookies

RSA-SHA256/512, ECDSA-P256/P384, Ed25519 서명 검증과 HMAC-SHA256 기반 DNS Cookies(RFC 7873)로 스푸핑과 캐시 포이즈닝을 차단합니다.

monitoring

Lock-Free 메트릭

AtomicU64 기반 17개 메트릭 카운터가 핫패스에서 잠금 없이 동작합니다. Unix 소켓으로 실시간 모니터링이 가능하며, 쿼리 처리 성능에 영향을 주지 않습니다.

api

REST API + 웹 관리

API 키 인증 기반 REST API로 프로그래밍 방식의 레코드 관리가 가능합니다. CSRF 보호가 적용된 웹 패널과 함께 관리자 승인 워크플로우를 제공합니다.

sync

무중단 리로드

CDB 파일 감시를 통한 핫 리로드와 POSIX atomic rename으로 데이터 일관성을 보장합니다. 서비스 재시작 없이 DNS 레코드 변경이 즉시 반영됩니다.

구성 요소

전체 DNS 생태계를 아우르는 18종의 특화 바이너리를 제공합니다. 모놀리식 구조 대신 역할별 분리 아키텍처로 최소 메모리와 최대 보안을 달성합니다.

Authoritative Server

nabidns-auth

자사 도메인을 외부망에 게시하기 위한 권한 네임서버입니다. SO_REUSEPORT 멀티소켓 아키텍처로 커널 수준의 패킷 분산을 수행하며, CDB와 MySQL 듀얼 백엔드를 지원합니다.

hub

Recursive Resolver

nabidns-cache

QNAME Minimization(RFC 9156)과 0x20 Case Randomization으로 프라이버시를 보호하면서 재귀 질의를 수행합니다. BTreeMap 기반 캐시와 네거티브 캐싱(RFC 2308)으로 응답 속도를 최적화합니다.

search_check

DNS-over-TLS Server

nabidns-tls

rustls 기반의 메모리 안전한 TLS 1.3 암호화 DNS 서버입니다. 포트 853에서 최대 64개 동시 TLS 연결을 처리하며, OpenSSL의 C 기반 취약점 위험 없이 안전한 DNS 통신을 보장합니다.

encrypted

Zone Tools & Utilities

nabidns-data, nabidns-edit, nabidns-import 외 12종

CDB 컴파일러, 존 편집기, MySQL 임포터, 존 전송(AXFR) 서버, RBL 서버, 리버스 DNS 월, 라운드 로빈 로드밸런서 등 특화된 도구 모음입니다. 각 도구가 단일 책임 원칙을 따릅니다.

handyman
architecture

왜 분리 아키텍처인가?

BIND9와 같은 모놀리식 DNS 서버는 사용하지 않는 기능의 코드도 메모리에 상주합니다. 나비 DNS는 역할별로 분리된 경량 바이너리를 제공하여 공격 표면을 최소화하고, 각 서버가 필요한 권한만 가지도록 최소 권한 원칙을 구현합니다. 권한 DNS만 필요하면 nabidns-auth만, 캐싱만 필요하면 nabidns-cache만 배포하면 됩니다.

주요 기능

23종의 DNS 레코드 타입, 13개 RFC 표준, 7계층 보안 아키텍처 — 엔터프라이즈급 DNS 인프라를 위한 모든 기능을 제공합니다.

레코드 타입 (23종)

  • A, AAAA, MX, CNAME, TXT, NS, PTR
  • SRV, SOA, CAA, HINFO, RP, NAPTR
  • SSHFP, TLSA, DS, DNSKEY, RRSIG
  • NSEC, NSEC3, NSEC3PARAM
  • HTTPS, SVCB 최신 레코드 지원

듀얼 백엔드

  • CDB: O(1) 해시 조회, 원자적 교체
  • MySQL: 커넥션 풀링 (2~10개)
  • MySQL: 5초 로컬 캐시로 DB 부하 감소
  • 런타임 백엔드 전환 (환경변수)
  • InnoDB + UTF8MB4 자동 스키마 생성

보안 (7계층)

  • Rust 메모리 안전 (CVE 원천 차단)
  • DNSSEC: 5종 알고리즘 서명 검증
  • DNS Cookies: HMAC-SHA256 인증
  • RRL: IP당 응답 속도 제한
  • ACL: IPv4/IPv6 CIDR 접근 제어
  • chroot + setuid 권한 분리
  • 0x20 Case Randomization

프로토콜

  • EDNS0: 1232바이트 (Flag Day 2020)
  • UDP: SO_REUSEPORT 멀티소켓
  • TCP: 멀티스레드 연결 풀링
  • DNS-over-TLS: rustls 포트 853
  • AXFR: 존 전송 지원
  • EDE: 확장 DNS 오류 코드 (RFC 8914)

운영 도구 (18종)

  • nabidns-auth: 권한 DNS 서버
  • nabidns-cache: 캐싱 리졸버
  • nabidns-tls: DNS-over-TLS 서버
  • nabidns-xfr: 존 전송 (AXFR)
  • nabidns-rbl: 실시간 블랙홀 리스트
  • nabidns-data: 존 데이터 컴파일러
  • nabidns-ip/txt/mx/name: 쿼리 도구

관리 및 모니터링

  • 웹 관리 패널 (PHP, Bootstrap)
  • REST API (JSON, API 키 인증)
  • 17개 실시간 메트릭 (Lock-Free)
  • TAI64N 구조화 로그
  • 사용자 관리 + 승인 워크플로우
  • CSRF 보호, bcrypt 비밀번호 해싱

7,851

Rust 코드 라인

87

자동화 테스트

18

실행 바이너리

0.065ms

평균 응답 지연

SECURITY

보안 아키텍처 심층 분석

DNS 서버는 인터넷 인프라의 최전선입니다. 나비 DNS는 7개 계층의 방어 체계로 기존 C/C++ DNS 서버에서 발생하는 보안 취약점을 구조적으로 차단합니다.

01

컴파일 타임 메모리 안전성

Rust Ownership System

Rust의 소유권·차용·수명 시스템이 컴파일 단계에서 메모리 취약점을 원천 차단합니다. 런타임 비용 없이 메모리 안전을 보장하는 유일한 시스템 프로그래밍 언어입니다.

나비 DNS가 차단하는 취약점 유형:

Buffer Overflow Use-After-Free Double Free Data Race Null Dereference Stack Overflow
02

DNSSEC 서명 검증

RFC 4033 / 4034 / 4035

5종의 암호화 알고리즘으로 DNS 응답의 무결성과 진위를 검증합니다. DS 레코드를 통한 신뢰 체인(Chain of Trust) 검증과 RRSIG 시간 유효성 검사를 수행합니다.

지원 알고리즘:

RSA-SHA256 / RSA-SHA512지원
ECDSA P-256 / P-384지원
Ed25519 (EdDSA)지원
DS Digest: SHA-256, SHA-384지원
03

DNS Cookies 인증

RFC 7873

HMAC-SHA256 기반 서버 쿠키로 각 클라이언트를 암호학적으로 인증합니다. IP 스푸핑 기반의 캐시 포이즈닝과 증폭 공격을 효과적으로 차단합니다.

쿠키 구조:

Client Cookie: 8바이트 (클라이언트 생성)

Server Cookie: 16바이트 (클라이언트 IP + 타임스탬프 + HMAC)

상수 시간 비교로 타이밍 공격 방어

04

DDoS 다중 방어

RRL + ACL + TCP 보호

응답 속도 제한(RRL), IP/CIDR 기반 접근 제어(ACL), TCP Slow Loris 방어를 통해 다양한 유형의 DDoS 공격을 동시에 방어합니다.

방어 수치:

RRL: IP당 QPS 임계값 기반 속도 제한

ACL: IPv4/IPv6 CIDR 프리픽스 매칭

TCP: IP당 최대 8 연결 / 전체 최대 256 연결

패킷: 섹션당 최대 256 레코드 제한

05

권한 분리 및 격리

chroot + setuid + setgid

시작 직후 3단계 권한 축소(chroot → setgid → setuid)를 수행합니다. 설정된 UID/GID가 실제 적용되었는지 검증하며, 실패 시 즉시 중단합니다. RLIMIT_DATA로 메모리 사용량도 제한합니다.

격리 순서:

1. chroot() — 파일시스템 접근 제한

2. setgid() — 그룹 권한 축소

3. setuid() — 사용자 권한 축소

4. 검증 — 실제 UID/GID 확인

06

암호학적 안티스푸핑

CSPRNG + 0x20 Randomization

OS의 getrandom(2) 시스콜을 직접 호출하여 트랜잭션 ID와 소스 포트를 암호학적으로 안전하게 생성합니다. 쿼리 이름의 대소문자를 무작위로 변환(0x20 Bit)하여 스푸핑을 추가로 방어합니다.

암호 라이브러리:

ring — Let's Encrypt가 사용하는 검증된 라이브러리

rustls — 메모리 안전한 TLS (OpenSSL 대체)

getrandom — 파일 디스크립터/뮤텍스 없는 CSPRNG

C/C++ DNS 서버의 현실

BIND9는 지난 5년간 100건 이상의 CVE가 보고되었으며, 이 중 대다수가 메모리 관련 취약점입니다. PowerDNS, Knot DNS 역시 C/C++ 특유의 메모리 취약점에서 자유롭지 않습니다. 나비 DNS는 Rust의 컴파일 타임 안전성으로 이러한 취약점 범주 자체를 제거합니다.

0

메모리 취약점
가능성

다른 DNS 서버와 상세 비교

주요 오픈소스 DNS 서버 4종과의 기술적 비교입니다. 나비 DNS는 최신 시스템 프로그래밍 언어 Rust의 장점을 활용하여 기존 솔루션이 해결하지 못한 보안·성능·운영 문제를 근본적으로 해결합니다.

기능 및 특징
나비 DNS
BIND 9 PowerDNS Knot DNS CoreDNS
기본 정보
구현 언어 Rust C C++ C Go
코드 규모 ~8,000 라인 ~500,000 라인 ~200,000 라인 ~100,000 라인 ~50,000 라인
라이선스 Commercial MPL 2.0 GPL v2 GPL v3 Apache 2.0
보안
메모리 안전성 verified 컴파일 타임 보장 없음 (C 언어) 없음 (C++) 없음 (C 언어) GC 기반 (Go)
DNSSEC check_circle 5종 알고리즘 지원 지원 지원 플러그인
DNS Cookies (RFC 7873) check_circle HMAC-SHA256 지원 미지원 지원 미지원
응답 속도 제한 (RRL) check_circle 내장 내장 Lua 스크립트 내장 플러그인
ACL (IP/CIDR) check_circle IPv4+IPv6 지원 지원 지원 플러그인
권한 분리 (chroot) check_circle 3단계 격리 수동 설정 수동 설정 수동 설정 미지원
TLS 라이브러리 verified rustls (안전) OpenSSL OpenSSL / GnuTLS GnuTLS Go TLS
CVE 발생 빈도 verified 구조적 차단 연간 10~20건 연간 3~5건 연간 2~4건 연간 1~3건
성능
비동기 I/O check_circle SO_REUSEPORT 스레드 풀 스레드 풀 epoll 기반 고루틴
메트릭 수집 오버헤드 verified Lock-Free Mutex 기반 Mutex 기반 Mutex 기반 Mutex 기반
캐시 아키텍처 check_circle Arc + BTreeMap RBT 기반 패킷 캐시 슬랩 할당 플러그인
GC 없는 실행 verified 제로 GC GC 없음 GC 없음 GC 없음 GC 일시정지 발생
DNS-over-TLS check_circle 내장 (853) 내장 dnsdist 내장 플러그인
백엔드 & 데이터
CDB (Constant DB) check_circle 네이티브 미지원 미지원 미지원 미지원
MySQL / MariaDB check_circle 커넥션 풀 미지원 네이티브 미지원 플러그인
원자적 데이터 갱신 verified POSIX rename rndc reload API knotc reload 재시작
존 전송 (AXFR) check_circle 지원 AXFR/IXFR AXFR/IXFR AXFR/IXFR 플러그인
운영 & 관리
웹 관리 패널 verified 내장 없음 별도 설치 없음 없음
REST API check_circle JSON + API Key 없음 내장 없음 없음
사용자 관리 verified 역할 기반 없음 없음 없음 없음
실시간 메트릭 check_circle 17개 카운터 통계 채널 내장 내장 Prometheus
최소 메모리 512MB 2GB 1GB 512MB 512MB
security

vs BIND9

BIND9는 50만 라인의 C 코드로 연간 10~20건의 CVE가 보고됩니다. 나비 DNS는 8천 라인의 Rust 코드로 메모리 취약점 범주 자체를 제거하며, BIND9에 없는 웹 관리 패널과 REST API를 기본 제공합니다. 코드 규모가 1/60 수준이라 보안 감사와 유지보수가 훨씬 용이합니다.

speed

vs PowerDNS

PowerDNS는 풍부한 백엔드를 지원하지만 C++의 메모리 위험성을 가지고 있고 DNS Cookies를 지원하지 않습니다. 나비 DNS는 CDB+MySQL 듀얼 백엔드로 PowerDNS의 유연성을 확보하면서, Rust의 메모리 안전성과 Lock-Free 메트릭으로 더 높은 성능을 달성합니다.

memory

vs CoreDNS

CoreDNS는 Go 언어의 GC(가비지 컬렉터)로 인해 예측할 수 없는 지연 시간이 발생합니다. 나비 DNS는 GC가 없는 Rust로 일관된 응답 지연을 보장합니다. 또한 CoreDNS에 없는 CDB 백엔드, 내장 웹 관리 패널, 사용자 관리, chroot 권한 분리를 기본 제공합니다.

이런 환경에 적합합니다

금융, 공공, 통신, 호스팅 등 높은 보안과 안정성이 요구되는 환경에서 나비 DNS의 기술적 우위가 빛납니다.

cloud_done

도메인 호스팅 사업자

수천 개 도메인의 실시간 관리와 대량 쿼리 처리가 필요한 호스팅 인프라에 최적입니다.

  • MySQL 백엔드로 고객별 실시간 레코드 관리
  • REST API로 자동화 시스템 연동
  • 웹 패널로 고객 셀프서비스 제공
corporate_fare

보안 중시 기업

금융, 공공기관 등 보안 규정이 엄격한 환경에서 메모리 안전한 DNS를 운영할 수 있습니다.

  • Rust 메모리 안전으로 CVE 원천 차단
  • chroot + setuid 3단계 권한 분리
  • DNSSEC + DNS Cookies 완전 지원
swap_horiz

레거시 DNS 마이그레이션

기존 DNS 환경에서 데이터 변경 없이 고성능 Rust 엔진으로 즉시 전환할 수 있습니다.

  • Tinydns 호환 존 데이터 포맷
  • nabidns-import로 자동 데이터 이관
  • CDB 파일 형식 완벽 호환
dns

통신사 / ISP

대량의 재귀 쿼리를 처리하는 ISP 환경에서 캐싱 리졸버와 RBL을 활용할 수 있습니다.

  • Lock-Free 메트릭으로 성능 저하 없는 모니터링
  • RRL + ACL로 DDoS 증폭 공격 방어
  • DNS-over-TLS로 가입자 프라이버시 보호
developer_mode

DevOps / IaC 환경

API 기반 인프라 자동화 파이프라인에 DNS 관리를 통합할 수 있습니다.

  • REST API로 CI/CD 파이프라인 연동
  • systemd 네이티브 서비스 관리
  • 환경변수 기반 설정 (12-Factor)
school

교육 / 연구 기관

소규모 인프라에서도 최소 리소스로 엔터프라이즈급 DNS를 운영할 수 있습니다.

  • 싱글 코어 + 512MB RAM으로 동작
  • 8천 라인의 감사 가능한 코드베이스
  • 87개 자동화 테스트로 신뢰성 검증

Technical Specifications

개발 언어 Rust Edition 2021
코드 규모 7,851 라인 (Rust) + 1,750 라인 (PHP)
자동화 테스트 87개 (단위 + 통합, 9개 모듈)
지원 백엔드 CDB, MySQL, MariaDB
DNS 레코드 타입 23종 (A~SVCB)
RFC 준수 13개 (1034~9156)
DNSSEC 알고리즘 5종 (RSA, ECDSA, Ed25519)
TLS 라이브러리 rustls (메모리 안전, TLS 1.3)
암호 라이브러리 ring (Let's Encrypt 검증)
지원 OS Ubuntu, RHEL, Debian (Linux 64bit)
라이선스 Commercial (상용)

terminal 시스템 요구사항

극도의 효율성을 추구하여 최소한의 리소스로 동작합니다.

CPU Single Core 이상
Memory 512MB RAM 이상
Disk 100MB + DB Size
Network 1Gbps Recommended

speed 성능 사양

UDP 워커 스레드 CPU 코어 x2 (최대 32)
최대 TCP 연결 256개 (IP당 8개)
최대 TLS 연결 64개 동시
EDNS0 페이로드 1,232 바이트
캐시 최대 크기 1GB (구성 가능)
캐시 삭제 복잡도 O(log n)
메트릭 카운터 17개 (Lock-Free)

나비 DNS 서버 도입 상담

기업의 인프라 규모에 맞는 최적의 플랜을 제안해 드립니다. 전문 엔지니어와 상담하세요.

도입 문의하기