NSD〜高速に動作するDNSサーバ〜
NSDとは、権威DNSサーバの機能を提供するオープンソースソフトウェアです。他のDNSサーバソフトウェアに比べて、設定がシンプルで高速に動作するDNSサーバです。DNSサーバの一部機能を実装していないなどの弱点はありますが、用途によっては十分な性能・実績を持っています。この記事では、NSDの特徴や他のソフトウェアとの比較について紹介します。
NSDとは
NSDとは、"Name Server Daemon"の略で、NLnet LabsとPIPE NCCが共同で開発し、保守を行っているDNSサーバです。BSD Licenseの下で、オープンソースソフトウェアとして公開されています。DNSルートサーバの一部を担っており、十分な動作実績があるDNSサーバです。
NSDの特徴
NSDは以下のような特徴があります。
権威DNSサーバの機能のみを提供する
DNSサーバは、権威DNSサーバとキャッシュDNSサーバの2種類に分けられます。権威DNSサーバは、コンテンツDNSサーバとも呼ばれ、自分の組織で管理しているWWWサーバやメールサーバなどのIPアドレスを外部に知らせるためのDNSサーバです。一方、キャッシュDNSサーバは、利用者から名前解決のリクエストを受け結果を返す役割のDNSサーバです。依頼のあった名前解決の処理を行うために、複数の権威DNSサーバに検索を行い、利用者に結果を返します。
NSDは、権威DNSサーバの機能のみを備えています。キャッシュDNSサーバの機能は利用できません。キャッシュDNSサーバとしては、NSDと同じ開発元のunboundというソフトウェアを利用することができます。
設定ファイルがシンプルで高速に動作する
NSDの設定ファイルはとてもシンプルで使いやすく、インストールや運用がしやすいといったメリットがあります。また、他のDNSサーバのソフトウェアと比べるとクエリの処理速度が速く、高速に動作します。
静的なメモリデータベースを利用する
NSDは、あらかじめゾーンファイルから読み込んだゾーン情報を、メモリ内にデータベースとして保持します。NSDのプロセスが起動する際、データベースからメモリに読み込みます。
DNSSECに対応している
NSDは、DNSの拡張仕様であるDNSSECに対応しています。DNSSECとは、DNSの情報に電子署名を付けることで、DNSのデータが正式な発行元のデータであることを検証することができるようにする機能です。DNSSECは、日本ではまだあまり導入が進んでいませんが、米国などでは既に自律的に普及が進んでおり、セキュリティ攻撃を防ぐためには今後欠かせない機能となっています。ただし、NSDではDNSSECの署名機能には対応していないため、外部ツールを利用する必要があります。
権威DNSサーバソフトウェアとの比較
デージーネットでは、BIND、PowerDNS、Knot DNS、NSDの4つの権威DNSサーバのソフトウェアで、それぞれの性能を比較しました。特にBINDは、近年多くの脆弱性が見つかりセキュリティ的に問題があるとされているため、代替ソフトウェアを検討する必要があります。なお、以下の調査結果の検証方法や環境設定については、「NSD調査報告書」「DNS権威サーバベンチマーク調査報告書」を参照してください。
処理能力
各サーバのQPS(queries per second;1秒あたりに処理したクエリ数)を比較したところ、NSDは、4つのソフトウェアの中で最もQPSの値が高くなっています。最も処理能力が低いBINDと比較すると、NSDは約1.8倍となる高い処理能力を持っています。
脆弱性の数
NSDは、BINDと比較すると非常に脆弱性が少なく、安心して利用することができます。またその分、セキュリティアップデートの頻度も少なく、BINDに比べてアップデート作業のコストを抑えることができます。NSDの脆弱性が初めて発見された2009年からの件数で比較したところ、NSDの脆弱性の数はBINDの約20分の1でした。
管理性
NSDの管理には、コマンドラインによる操作が必要です。一方、PowerDNSには、管理用GUIであるPoweradminというソフトウェアがあり、Webインターフェースから簡単にDNSリソースを管理することができます。NSDの管理性はPowerDNSと比べると劣りますが、PowerDNSをマスターサーバ、NSDをスレーブサーバとしてゾーン転送をすることで、管理面の複雑さを解消できる場合があります。
NSDの問題点
動作が高速で使いやすいNSDですが、以下のような問題もあります。
Dynamic DNS、viewなどの機能に対応していない
NSDには、一般的に権威DNSサーバで利用されている以下の機能が実装されていません。
- IXFR(差分ゾーン転送) のマスター側の機能
- クエリログ
- Dynamic DNS
- BINDのView/Generate相当の機能
特に、BINDからNSDへ移行する際、BIND特有のViewの機能やGenerateの機能を使用している場合は注意が必要です。なお、NSDはBINDとゾーンファイルの互換性があるため、上記のような機能を利用していなければ比較的容易に導入することができます。また、デージーネットでは、既にPowerDNS + dnsdistの構成でBINDのView相当の機能を実装した実績があります。そのため、NSDでも同じ構成が取れると考えています。
コマンド操作が必要
NSDにはGUIが存在しないため、コマンドラインで管理を行う必要があります。そのため、コマンド操作の知識や技術が無い人にとっては管理が難しい場合があります。また、DNSSECなどの設定を行う場合は外部ツールを用いるため、比較的操作が複雑になります。
サポートが十分でない
NSDは、ディストリビューションからパッケージ提供されていないため、アップデートを自分で行う必要があります。また、日本国内ではアップデートやQ&Aサービス等のサポートが提供されていません。
NSDには以上のような問題点があるものの、権威DNSサーバとしては十分に実用性があり、性能が高いソフトウェアです。例えば、単純にクエリを処理する権威DNSサーバであれば、シンプルで高速に動作するNSDを利用する方が良い場合もあります。また、管理用のマスターサーバをPowerDNSで、公開用のスレーブサーバをNSDで構成すれば、管理性・処理速度の両方を維持したシステムを構築できます。各ソフトウェアの特徴に合った配置をすることで、より高速かつ安全なDNS環境を構築することができます。
デージーネットの取り組み
デージーネットでは、NSDの調査報告書を公開しています。調査報告書には、NSDの詳しいインストール方法や設定方法を記載しています。また、BIND、NSD、Knot DNS、PowerDNSの4つのDNSサーバソフトウェアを対象に、権威DNSサーバ機能のベンチマークを行い、「DNS権威サーバベンチマーク調査報告書」で性能を比較しています。これらの調査報告書は、無料でダウンロードが可能です。
また、デージーネットでは、NSDなどのDNSサーバを活用したシステム構築サービスを行っています。デージーネットでDNSサーバを構築した場合には、導入後支援サービス(Open Smart Assistance)でのサポートを受けることができます。
情報の一覧
NSD調査報告書
NSDは、"Name Server Daemon"の略で、DNSサーバのオープンソースソフトウェアです。NSDのインストールや設定方法、BINDと比較した性能や脆弱性の数をまとめています。
DNS権威サーバベンチマーク調査報告書
本書は、BIND、NSD、Knot DNS、PowerDNSの4つのDNSサーバソフトウェアを対象とし、権威DNSサーバ機能のベンチマークを行い、結果をまとめたものです。
unbound〜攻撃に強いDNSキャッシュサーバ〜
unboundとは、DNSのキャッシュサーバに特化したオープンソースソフトウェアです。IPv6対応(デュアルスタック)、DNSSECにも対応しており、今後、DNSキャッシュサーバに求められる機能は実装済です。
BIND〜DNSサーバの特徴と弱点〜
BINDとは、権威DNSサーバとキャッシュDNSサーバの両方の機能を持ったオープンソースソフトウェアです。BINDの特徴を解説しながら、BINDに代わるDNSサーバのソフトウェアについてもご紹介します。
BINDに替わるDNSサーバ〜PowerDNS〜
PowerDNSは、管理ウェブインタフェースが利用できる便利なオープンソースソフトウェアのDNSシステムです。ここでは、PowerDNSの特徴、脆弱性の数、パフォーマンスについてご紹介します。
DNSサーバのおすすめOSS比較9選!選定ポイントも解説
DNSサーバとは、インターネットの名前解決を行うサーバーのことを言います。ここでは、おすすめの各DNSサーバのOSSの特徴を比較し、DNSサーバソフトウェアを選定する際に重視すべきポイントをまとめました。
NSDを利用した権威DNSサーバ構築事例
今回は、広告、マスコミ関係のお客様へDNSサーバを導入した事例です。お客様は、利用しているDNSサーバのOSサポート終了に伴い更改を検討していました。BINDの脆弱性も気にされていたため、NSDを使った権威DNSサーバを構築しました。
マルチDNS環境構築事例
BINDに脆弱性が多く発見され、DNSサーバのバージョンアップなどの対策が頻繁に必要になっています。マルチDNS環境は、複数のDNSサーバソフトウェアを使ってDNSサーバを構成することで、特定のソフトウェアの脆弱性によって外部から攻撃を受けてDNSサービスが停止することがないようにするのが目的です。本事例は、このようなマルチDNS環境を構築したものです。