DNSサーバとは
DNSサーバとは、DNS(Domain Name System)に関するサービスを行うサーバの総称で、ネームサーバとも呼ばれる。DNSサーバでは、インターネット上のホストやサービス名(ドメイン名)とIPアドレスを紐づけることで、変換の処理を行う役割を担っている。
DNSサーバは大きく分けて、DNSキャッシュサーバ、権威DNSサーバの2つの機能がある。以前は、この2種類のサーバ機能を一台で行うことが多かったため、単純にDNSサーバと一括りで呼んでいた。しかし、DNSのキャッシュを不正に書き換えるキャッシュポイズニング攻撃が頻繁に行われるようになり、DNSキャッシュサーバと権威DNSサーバを同居させることはセキュリティ上危険であると考えられるようになった。そのため最近は、DNSキャッシュサーバ、権威DNSサーバと、2つの名称で明確に分離して呼ぶことが多い。
権威DNSサーバ
権威DNSサーバとは、組織で管理するホストやドメインの情報をインターネットに公開する役割を持つDNSサーバである。コンテンツDNSサーバともよばれる。権威DNSサーバが停止するとインターネットへの情報提供に支障があるため、通常は2台以上の権威DNSサーバを使って情報を提供する。
DNSサーバとドメイン
権威DNSサーバでは、ゾーン(zone)と呼ばれる単位でDNSのホストやドメイン(domain)を管理する。ドメイン(domain)とは、WebサイトのURLやメールアドレスの中で使われる組織に付けられた名前のことで、コンピューターがネットワーク上のどこに存在するかを示す住所のような役割がある。
ドメインは「.」で区切って表記される。例えば、上記の場合、一番右端の「jp」の部分はトップレベルドメイン(TLD)と呼ばれ、com、org、netなどで用途や国などを示している。次の「co」の部分は、第2レベルドメイン、「designet」の部分は第3レベルドメインと呼ぶ。また、一番左側の「www」はホスト名となる。
インターネットに接続する組織は、レジストラに申請することでドメインを取得することができる。ドメインを取得した組織は、ドメイン内のホストやIPアドレスの情報をインターネットに知らせるために権威DNSサーバを設置して情報を公開する。大きな組織の場合には、ドメインの中に、さらにサブドメインを作成して管理することもできる。例えば、サブドメイン「sub」を作成した場合には、sub.designet.co.jpのように表記する。
DNSサーバのゾーン管理
ゾーンとは、DNSの名前空間の中にあるノードや、ノードを含むそれ以下のノードの一部または全部のことを言う。つまり、designet.co.jpというドメインの場合、その配下にあるホストwww.designet.co.jpやサブドメインsub.designet.co.jpを含む全体をゾーンと呼ぶ。
権威DNSサーバは、ゾーンに対して配置され、ゾーンに含まれる下位ゾーンの管理を、必要に応じて別の権威DNSサーバに委託することもできる。DNSの名前空間の頂点は「.」で、これはルートと呼ばれる。そして、ルートを管理する権威DNSサーバを、ルートサーバと呼ぶ。ルートサーバは、.com、.net、.jpなどの自身のゾーンの一部を、別の権威DNSサーバに移譲している。そして、そのDNSサーバも、自身のゾーンの一部を別のDNSサーバに移譲する。このように、DNSの名前空間は、DNSサーバが委譲を繰り返すことで、階層化されて管理されている。
正引きゾーンと逆引きゾーン
権威DNSサーバでは、一般的に正引きゾーンと逆引きゾーンの情報を管理する。DNSによる名前解決で、ドメイン名から、コンピュータが通信時に利用するIPアドレスを調べる通常の使い方を「正引き」と呼ぶ。これとは反対に、IPアドレスからドメイン名を調べる使い方を「逆引き」と呼ぶ。
「正引き」ゾーンは、ルートサーバーを示す「.」を起点とする階層構造で管理され、「逆引き」のゾーンは、「in-addr.arpa.」を起点とする階層構造で管理される。192.168.1.1というIPアドレスの逆引きの情報は、1.1.168.192.in-addr.arpa.のように、「in-addr.arpa.」を起点としてIPアドレスを逆に並べた形式で表記される。通常、権威DNSサーバでは正引きゾーンと逆引きゾーンの両方を管理するのが一般的ある。
権威DNSサーバに登録される情報はレコードと呼ばれ、いくつかの種類が用意されている。ドメインを管理するDNSサーバの情報はNSレコード、管理するIPv4アドレスの正引きの情報はAレコード、IPv6アドレスの正引きの場合にはAAAAレコード、 逆引きの場合にはPTRレコードなどがある。
マスタサーバとスレーブサーバ
権威DNSサーバのサービスが利用できないと、インターネットからWebサイトへのアクセスができなくなったり、メールが届かなくなったりする。このように、権威DNSサーバはインターネットの利用を支える非常に重要な役割を持つサービスであるため、1つのゾーンに対して、2台以上の権威DNSサーバを配置するのが一般的である。この構成を実現するために、1台をマスタサーバ(プライマリサーバ)として配置し、残りの機器をスレーブサーバ(セカンダリサーバ)として配置する方法が使われる。
マスタサーバもスレーブサーバも、管理するIPアドレスやホスト名の情報を提供する点では、まったく同じ機能を提供する。そして、クエリはマスタサーバとスレーブサーバに分散される。ただし、マスタサーバは、ゾーンのデータベースを持っていて、登録、管理を行なうことができる。一方、スレーブサーバはマスタサーバと通信し、ゾーンの情報を受け取りコピーを保存し、その情報を提供する役割を持つ。データの登録や変更は、常にマスタサーバに対して行う。マスタサーバ側でデータを変更すると、自動的にスレーブサーバの情報が更新される。
DNSキャッシュサーバ
DNSキャッシュサーバとは、利用者の端末から直接名前解決のリクエストを受け、結果を回答する役割を持つサーバである。例えば、PCやスマートフォンなどのデバイスでブラウザにURLを入力したとき、URLのドメイン名から、通信先のIPアドレスを調べるような用途で使われる。
利用者は、一般的に1つのDNSキャッシュサーバに対して問い合わせる。DNSキャッシュサーバは、依頼のあった名前解決の処理を行うために、複数の権威DNSサーバに検索を行い、利用者に結果を応答する。
DNSキャッシュ
DNSキャッシュサーバは、DNSの名前解決をなるべく短い時間で完了するため、問い合わせの調査結果をキャッシュする。例えば、Googleのような多くの人が頻繁に利用するようなサイトの情報は、リクエストを受ける度に何度も調査するのは不経済である。そのため、DNSキャッシュサーバは、調査した結果をキャッシュとして保持する。DNSのデータには有効期限(TTL)が設定されていて、この時間が経過した古い情報を廃棄することで、常に新しいデータを管理することができる。
キャッシュポイズニング
インターネットでは、DNSを基礎として多様な情報が交換されている。そのため、DNSサーバのデータを改ざんすることでさまざまな不正が可能になる。例えば、メールサーバのアドレスを改ざんされると、別のメールサーバでメールを受け取ることができてしまう。そのため、DNSの情報を改ざんする目的で、DNSキャッシュサーバに攻撃が行われることがある。このような攻撃は、キャッシュポイズニング攻撃と呼ばれている。
オープンレゾルバ
インターネット上に公開され、どこからでもアクセスできるDNSキャッシュサーバをオープンレゾルバと呼ぶ。他のサイトを対象とした攻撃に使われてしまう危険性が高い。そのため、DNSキャッシュサーバにはアクセス制御を実施する必要がある。DNSサーバへの検索リクエストに対して応答を返すホストを限定し、それ以外のホストからの検索リクエストにはエラーが発生するように設定しておく。
DNSSEC
キャッシュポイズニング攻撃が原因でデータが改ざんされる問題を防ぐために、DNSSECと呼ばれる仕組みが用意されている。DNSSECでは、暗号鍵の技術を使うことでDNSの情報に署名を設定し、DNSによる名前解決の結果が正しいかどうかを検証できる。DNSキャッシュサーバは、DNSの情報が正しいかを確認するため、DNSSECを使った検証を行うべきである。
DNSキャッシュサーバの設定
DNSキャッシュサーバは、インターネットの利用に欠かせない非常に重要なサービスを提供している。もしDNSキャッシュサーバが利用できなくなると、名前解決を行うことができなくなり、インターネットのほとんどの機能が利用できなくなってしまう可能性が高い。そのため、できるだけ複数のDNSキャッシュサーバを設定することが望ましい。例えば、普段は組織内に構築したDNSサーバを優先して使うようにし、何かトラブルがあった場合のみ外部のDNSサーバを使うように設定しておくことで、障害にも強くなる。Windowsパソコンでも複数のDNSキャッシュサーバを追加・登録できるようになっている。
DNSサーバのソフトウェア
DNSサーバとしては、古くからBINDが使われてきた。BINDは、権威DNSサーバの機能とDNSキャッシュサーバの両方の機能を持っており、非常に汎用的に利用できる一方で、DNSSECなどの設定を理解するのが難しいというデメリットがあった。また、コードが複雑で脆弱性が潜みやすく、近年は多くの脆弱性が発見され頻繁にバージョンアップが行われている。そのため最近では、権威DNSサーバ専用のソフトウェア、DNSキャッシュサーバ専用のソフトウェアがそれぞれ使われるようになった。
DNSキャッシュサーバ専用のソフトウェア
DNSキャッシュサーバのソフトウェアとしては、unboundがよく使われている。RedHat Enterprise LinuxやCentOSなど代表的なLinuxディストリビューションにも採用されており、非常に多くの攻撃対策機能が実装されているため、おすすめのDNSキャッシュサーバである。例えば、Rate Control機能では、リクエストの数が多すぎるクライアントを検知して、自動で対策を行うことができる。また、攻撃を分析するため、DNSTAPなどの機構を通じてDNSの問い合わせを高速にログに保管する機能なども備えている。
権威DNSサーバ専用のソフトウェア
PowerDNS、NSD、knotDNSなどがよく使われ、いずれのソフトウェアもBINDにくらべて性能が良いことで知られている。
PowerDNSは、バックエンドにデータベースを使用できるという特徴を持っている。また、Poweradminと呼ばれる管理ソフトウェアを使うことで、Web画面上のインタフェースから簡単に管理することができる。BINDでは独自のフォーマットを使うため設定の難易度が高かったが、PowerDNSは知識がない人でも管理を行うことができるため、初心者でも扱いやすい。さらに、PowerDNSは性能的にもBINDより高速で、DNSSECなどの複雑な設定も簡単に行うことができることから、BINDの代替ソフトウェアとして利用者も増加している。こうしたメリットから、デージーネットではPowerDNSのサーバー構築や商用サポートを提供している。詳細は以下で説明している。
なお、以下のページでは、上記で紹介したような各種ソフトウェアの違いを役割ごとに比較している。ソフトウェアを選択する際のポイントも解説しているため、導入時の参考情報としておすすめである。
DNSサーバ関連のコマンド
ipconfig
Windowsでは、ネットワークのプロパティにDNSキャッシュサーバを設定する。DHCPなど動的アドレス割り当てを利用している場合に実際の設定の状況を確認する際は、コマンドプロンプトやPowerShellからipconfigコマンドを利用する。
nslookup
nslookupは、古くから使われているDNSサーバへ問い合わせを行うコマンドである。次の例のように、ホスト名を入力するとIPアドレス(IPv4とIPv6)を検索して表示する。また、IPアドレスを入力するとホスト名を検索して表示する。WindowsでもLinuxでも利用することができる。
$ nslookup > www.designet.co.jp Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: www.designet.co.jp Address: 192.168.0.2 Name: www.designet.co.jp Address: 2001:268:35d::53:1
host
nslookupは、最近では利用が推奨されなくなった。代わりに使われているのがhostコマンドである。次の例のように、引数にホスト名やIPアドレスを指定すると、非常にシンプルに検索結果を表示してくれる。
$ host www.designet.co.jp www.designet.co.jp has address 192.168.0.2 www.designet.co.jp has IPv6 address 2001:268:35d::53:1
残念ながら、Windowsでは利用できない。
dig
digは、次の手順の例のように最も詳細な情報を調査することができるコマンドである。
$ dig www.designet.co.jp ; <<>> DiG 9.11.27-RedHat-9.11.27-1.fc33 <<>> www.designet.co.jp ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47418 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;www.designet.co.jp. IN A ;; ANSWER SECTION: www.designet.co.jp. 1882 IN A 192.168.0.2 ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: 金 2月 05 15:43:33 JST 2021 ;; MSG SIZE rcvd: 63
デージーネットの取り組み
デージーネットでは、DNSサーバーの構築サービスを提供している。2011年からは、DNSSEC対応のサーバー構築も行っている。当初はBINDで運用を行っていたが、2016年からはDNSSECの運用により適したサーバーとして、PowerDNS、PowerAdminを活用して運用を行っている。また、システム構築やシステム全体の保守の経験を活かし、2016年9月からはPowerDNSの商用サポートを開始している。
弊社でシステムを構築した場合、OpenSmartAssistanceという保守サービスに加入することも可能である。このサービスでは、使い方から運用方法まで、幅広い範囲でのQ&Aや、セキュリティの情報提供、障害調査など、安心して利用して頂けるよう管理者の業務をサポートしている。
また、弊社のホームページでは、各種DNSサーバについて調査・検証した結果をまとめた調査報告書を公開している。性能を比較したベンチマークの結果やインストール方法、詳しい機能について記載している。以下のリンクより無料でダウンロードすることができる。
【カテゴリ】:DNS  ネットワーク  ネットワークインフラ  
【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー
日程: | 11月22日(金)Webセミナー「BigBlueButton」を使用します。 |
内容: | OSSを導入したいけど、どこから手をつければいいかわからない方必見! |
ご興味のあるかたはぜひご参加ください。 |