PowerDNS

PowerDNS
원저자PowerDNS.com B.V.
개발자PowerDNS 커뮤니티, 베르트 휘베르트(Bert Hubert)
저장소
프로그래밍 언어C++
운영 체제유닉스 계열
종류DNS 서버
라이선스GNU 일반 공중 사용 허가서 v2
웹사이트www.powerdns.com 위키데이터에서 편집하기

PowerDNS는 DNS 권한 있는 서버(Authoritative Server), 리커서(Recursor), 프록시를 제공하는 소프트웨어 프로젝트이다. C++로 작성되었으며 GPL 하에 배포된다. 대부분의 유닉스 계열 운영체제에서 실행된다. PowerDNS는 단순한 BIND 형식의 존 파일(zonefile)부터 관계형 데이터베이스 및 부하분산/장애 조치(failover) 알고리즘에 이르기까지 다양한 백엔드를 지원하는 것이 특징이다.

역사

PowerDNS 개발은 1999년에 시작되었으며 원래는 상용 독점 제품이었다. 2002년 11월, 소스 코드가 오픈 소스 GPL v2 라이선스로 공개되었다.

구성 요소

권한 있는 서버 (Authoritative server)

PowerDNS 권한 있는 서버(pdns_server)는 범용 권한 서버와 다중 스레드로 실행되는 여러 동적 로드 가능 백엔드로 구성된다. 핵심 엔진은 모든 패킷 처리와 DNS 지능형 기능을 담당하며, 하나 이상의 백엔드가 임의의 저장 방식을 사용하여 DNS 레코드를 전달한다.

존 전송 및 업데이트 알림이 지원되며, 프로세스는 비특권 모드 및 chroot 환경에서 실행될 수 있다. 쿼리 처리를 가속화하기 위해 다양한 캐시가 유지된다. 런타임 제어는 pdns_control 명령을 통해 가능하며, 이를 통해 개별 존을 다시 로드하거나, 캐시를 삭제하고, 존 알림을 보내거나, MRTG / rrdtool 형식으로 통계를 덤프할 수 있다. 실시간 정보는 선택적인 내장 웹 서버를 통해서도 얻을 수 있다.

PowerDNS를 위한 관리 인터페이스를 만드는 독립적인 프로젝트도 많이 존재한다.

PowerDNS 권한 있는 서버는 3.0 버전부터 DNSSEC을 지원한다. 미리 서명된 존을 제공할 수도 있지만, 온라인 서명 및 키 관리도 가능하다. 이는 구현이 상대적으로 쉽다는 장점이 있지만, 암호화 키 자료가 서버 자체에 존재하게 된다는 단점이 있다(이는 HSM 등을 사용하지 않는 모든 HTTPS 서버의 공통된 특징이기도 하다).

리커서 (Recursor)

PowerDNS 리커서(pdns_recursor)는 별도의 프로세스로 실행되는 DNS 확인 서버이다.

이 부분은 Boost와 단순한 협력적 멀티태스킹 라이브러리인 MTasker 라이브러리를 사용하여 네이티브 스레드와 사용자 공간 스레드를 조합해 구현되었다. 단독 패키지로도 제공된다.

단순히 캐싱/재귀/이름 확인 서비스를 제공하는 것이 목적이라면 pdns_recursor를 단독으로 실행하는 것이 권한 있는 서버 구성요소 뒤에서 실행하는 것보다 효율적이므로, pdns_recursor를 위해 pdns_server 프로세스를 게이트키퍼로 실행할 필요는 없다.

DNSSEC 검증에 대한 지원은 4.0 버전에서 pdns_recursor에 추가되었다.

DNSdist

PowerDNS DNSdist(dnsdist)는 다음과 같은 기능을 포함하는 캐싱 DNS 프록시이다.

  • DNS 쿼리 부하 분산
  • DNS 암호화 지원 - DNS over HTTPS, DNS over TLS (업스트림 및 다운스트림 모두 지원)
  • Lua 정책 엔진 - DNS 패킷 처리를 위한 규칙 생성, 응답 변경, 쿼리 재라우팅, 특정 서브넷의 최대 QPS를 초과하는 트래픽 차단 등 광범위한 기능 제공
  • 동적 규칙 생성 - 설정 가능한 임계값과 최근 수신된 트래픽 분석을 기반으로 자동으로 삽입되는 단기 규칙인 동적 차단(Dynamic Blocks) 생성에 사용. DoS 공격 대응에 사용됨

DNSdist는 독립형 패키지로 제공되며, PowerDNS 권한 있는 서버나 리커서, 또는 기타 타사 DNS 서버와 함께 배포할 수 있다.

각주

  1. ↑ Jeannerot, Christophe (21 October 2016). “POWERDNS [sic]” (프랑스어). 《Azylis dot net》. 27 July 2019에 원본 문서에서 보존된 문서. 27 July 2019에 확인함. Nous allons utiliser POWERDNS avec un stockage des tables DNS dans une base de données MARIADB.
  2. ↑ Mens, Jan-Piet (2008). 《Alternative DNS Servers: Choice and Deployment, and Optional SQL/LDAP Back-Ends (Paperback)》. UIT Cambridge Ltd. 114쪽. ISBN 978-0-9544529-9-5.
  3. ↑ “About”. 《PowerDNS》. PowerDNS.COM BV. n.d. 2019년 1월 24일에 확인함. PowerDNS was launched in 1999"; "Originally closed source"; "In 2002, all PowerDNS software was released as open source
  4. ↑ “PowerDNS Recursor”. Doc.powerdns.com. 2014년 5월 11일에 확인함.
  5. ↑ MTasker
  6. ↑ “PowerDNS DNSdist”. dnsdist.org. 2023년 5월 11일에 확인함.

외부 링크